{"version":3,"file":"monaco.bundle.js","mappings":"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KuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,IAAKouD,MAAO,CAAC,SAAU,YAC3C,CAAE34H,KAAM,IAAKuqE,MAAO,IAAKouD,MAAO,CAAC,SAAU,aAE7CC,iBAAkB,CAChB,CAAE54H,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,MAEtBsuD,QAAS,CACPC,QAAS,CACP7kG,MAAO,IAAI1tB,OAAO,mBAClBytB,IAAK,IAAIztB,OAAO,yBAIlB08G,EAAW,CACb8V,aAAc,GACdC,aAAc,MACdP,SAAU,CACR,CAAEz4H,KAAM,IAAKuqE,MAAO,IAAKzyC,MAAO,mBAChC,CAAE93B,KAAM,IAAKuqE,MAAO,IAAKzyC,MAAO,oBAChC,CAAE93B,KAAM,IAAKuqE,MAAO,IAAKzyC,MAAO,yBAChC,CAAE93B,KAAM,IAAKuqE,MAAO,IAAKzyC,MAAO,oBAElCmhG,SAAU,CACR,SACA,QACA,QACA,OACA,UACA,QACA,OACA,QACA,SACA,MACA,OACA,OACA,QACA,OACA,QACA,SACA,SACA,UACA,SACA,WACA,KACA,KACA,MACA,MACA,OACA,OACA,MACA,SACA,OACA,UACA,YACA,UACA,WACA,MACA,QACA,KACA,OACA,SACA,OACA,QACA,KACA,MACA,UACA,KACA,QACA,WACA,OACA,SACA,QACA,MACA,QACA,UACA,OACA,QACA,OACA,MACA,QACA,OACA,KACA,SACA,OACA,UACA,YACA,aACA,SACA,QACA,KACA,YACA,UACA,QACA,QACA,QACA,SACA,QACA,SACA,YACA,WACA,UACA,WACA,SACA,SACA,SACA,WACA,WACA,UACA,WACA,SACA,MACA,MACA,MACA,SACA,WACA,OACA,QACA,WACA,WACA,YACA,OACA,OACA,QACA,QACA,QACA,SA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20E,WAAY,CAAC,QACbklD,QAAS,CAAC,OACVX,OAAQ,IAMG,yGCXb,IAAIU,EAAO,CACTG,SAAU,CACRC,YAAa,KACbC,aAAc,CAAC,KAAM,OAEvBC,SAAU,CACR,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAERC,iBAAkB,CAChB,CAAE14H,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,MAEtBquD,iBAAkB,CAChB,CAAE54H,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,KACpB,CAAEvqE,KAAM,IAAKuqE,MAAO,OAGpB04C,EAAW,CACb8V,aAAc,GACdC,aAAc,OACdz8B,YAAY,EACZk8B,SAAU,CACR,CAAEz4H,KAAM,IAAKuqE,MAAO,IAAKzyC,MAAO,oBAChC,CAAE93B,KAAM,IAAKuqE,MAAO,IAAKzyC,MAAO,0BAElCmhG,SAAU,CACR,QACA,WACA,SACA,MACA,MACA,QACA,MACA,WACA,QACA,SACA,UACA,MACA,MACA,MACA,KACA,MACA,YACA,KACA,SACA,gBACA,gBACA,MACA,SACA,SACA,QACA,UACA,MACA,aACA,OACA,QACA,SACA,OACA,KACA,UACA,WACA,OACA,OACA,UACA,OACA,YACA,mBACA,cACA,QACA,aACA,QACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,aACA,aACA,cACA,WACA,gBACA,WACA,UACA,gBACA,QACA,SACA,QACA,UACA,eACA,eACA,oBACA,eACA,SACA,WACA,OACA,MACA,OACA,aACA,MACA,UACA,UACA,UACA,aACA,WACA,SACA,OACA,OACA,WACA,aACA,SACA,cACA,aACA,OACA,WACA,cACA,KACA,SACA,SACA,OACA,OACA,OACA,OACA,MACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,OACA,UACA,WACA,UACA,OACA,QACA,QACA,OACA,aACA,SACA,QACA,QACA,YACA,MACA,UACA,UACA,QACA,WACA,gBACA,OACA,OACA,WACA,YACA,MACA,OACA,SACA,KACA,OACA,QACA,QACA,SACA,SACA,WACA,OACA,WACA,cACA,kBACA,KACA,SACA,YACA,KACA,UACA,QACA,UACA,YACA,YACA,QACA,QACA,cACA,SACA,UACA,MACA,UACA,YACA,WACA,OACA,KACA,SACA,YACA,OACA,MACA,OACA,WACA,OACA,UACA,OACA,QACA,OACA,QACA,SACA,OACA,QACA,QACA,QACA,eACA,MACA,QACA,MACA,SACA,SACA,QACA,QACA,WACA,UACA,QACA,OACA,KACA,UACA,eACA,OACA,MACA,UACA,UACA,OACA,SACA,QACA,UACA,eACA,KACA,MACA,SACA,UACA,KACA,OACA,OACA,iBACA,YACA,aACA,UACA,SACA,KACA,QACA,SACA,QACA,SACA,OACA,WACA,MACA,UACA,YACA,SACA,UACA,QACA,OACA,WACA,SACA,YACA,YACA,UACA,WACA,UACA,QACA,QACA,aACA,OACA,YACA,SACA,QACA,QACA,YACA,QACA,OACA,WACA,OACA,cACA,YACA,aACA,SACA,UACA,WACA,UACA,SACA,UACA,cACA,UACA,WACA,SACA,YACA,SACA,SACA,QACA,WACA,MACA,WACA,aACA,OACA,OACA,OACA,YACA,SACA,SACA,SACA,UACA,gBACA,SACA,yBACA,iCACA,0BACA,UACA,eACA,MACA,UACA,WACA,OACA,WACA,OACA,QACA,MACA,QACA,UACA,WACA,WACA,aACA,aACA,YACA,MACA,cACA,QACA,cACA,OACA,YACA,WACA,OACA,OACA,OACA,YACA,gBACA,kBACA,KACA,MACA,WACA,OACA,cACA,YACA,cACA,UACA,OACA,OACA,WACA,cACA,UACA,YACA,QACA,SACA,UACA,UACA,SACA,aACA,QACA,QACA,MACA,OACA,QACA,SACA,QACA,SACA,UACA,UACA,OACA,UACA,UACA,OACA,WACA,QACA,QACA,SACA,OACA,eACA,UACA,OACA,QACA,YACA,OACA,QAEFG,UAAW,CACT,MACA,MACA,MACA,UACA,SACA,KACA,OACA,MACA,KACA,OACA,SACA,YACA,QACA,QACA,QACA,OACA,QACA,OACA,OACA,QACA,QACA,WACA,WACA,KACA,OACA,QACA,UACA,WAEFkD,iBAAkB,CAChB,MACA,eACA,QACA,YACA,WACA,cACA,MACA,MACA,MACA,QACA,SACA,MACA,OACA,YACA,cACA,MACA,aACA,OACA,kBACA,kBACA,eACA,UACA,oBACA,mBACA,6BACA,OACA,UACA,QACA,WACA,cACA,YACA,aACA,kBACA,eACA,UACA,mBACA,mBACA,gBACA,eACA,0BACA,uBACA,sBACA,mBACA,gBACA,eACA,sBACA,YACA,kBACA,WACA,SACA,WACA,gBACA,aACA,iBACA,qBACA,wBACA,gBACA,aACA,gBACA,aACA,aACA,WACA,uBACA,oBACA,UACA,WACA,gBACA,WACA,WACA,qBACA,oBACA,0BACA,MACA,UACA,UACA,aACA,SACA,QACA,yBACA,eACA,cACA,oBACA,iBACA,gBACA,mBACA,OACA,SACA,WACA,MACA,SACA,MACA,OACA,OACA,OACA,OACA,UACA,MACA,MACA,UACA,MACA,QACA,MACA,QACA,KACA,QACA,UACA,OACA,QACA,OACA,MACA,OACA,SACA,MACA,WACA,eACA,eACA,mBACA,aACA,WACA,iBACA,wBACA,qBACA,QACA,UACA,UACA,YACA,YACA,eACA,iBACA,oBACA,eACA,0BACA,0BACA,YACA,oBACA,gBACA,oBACA,YACA,cACA,qBACA,iBACA,mBACA,mBACA,YACA,YACA,cACA,iBACA,iBACA,aACA,UACA,YACA,eACA,aACA,QACA,OACA,aACA,uBACA,iBACA,YACA,aACA,UACA,cACA,iBACA,eACA,eACA,oBACA,YACA,gBACA,mBACA,gBACA,iBACA,cACA,aACA,aACA,eACA,kBACA,WACA,aACA,YACA,cACA,cACA,OACA,UACA,YACA,QACA,OACA,YACA,SACA,aACA,SACA,OACA,MACA,QACA,QACA,QACA,WACA,YACA,UACA,YACA,UACA,QACA,QACA,UACA,QACA,MACA,QACA,YACA,UACA,QACA,kBACA,WACA,qBACA,eACA,qBACA,aACA,eACA,gBACA,kBACA,iBACA,cACA,gBACA,cACA,qCACA,UACA,YACA,SACA,YACA,wBACA,QACA,kBACA,eACA,aACA,UACA,YACA,kBACA,YACA,oBACA,SACA,cACA,0BACA,kCACA,oCACA,oCACA,gBACA,gBACA,yBACA,iCACA,0BACA,oBACA,uBACA,iBACA,WACA,2BAEFC,iBAAkB,CAChB,cACA,SACA,WACA,aACA,iBACA,oBACA,kBACA,cACA,YACA,cACA,eACA,gBACA,SACA,aACA,YACA,gBACA,iBACA,cACA,WACA,UACA,aACA,aACA,cACA,gBACA,aACA,SACA,YACA,kBACA,kBACA,cACA,cACA,iBACA,eACA,iBAEFC,cAAe,CAAC,UAAW,YAAa,WAAY,cACpDjD,UAAW,CACT71H,KAAM,CACJ,CAAE+1H,QAAS,aACX,CAAEA,QAAS,eACX,CAAEA,QAAS,kBACX,CAAEA,QAAS,YACX,CAAEA,QAAS,YACX,CAAEA,QAAS,uBACX,CAAEA,QAAS,WACX,CAAC,QAAS,aACV,CAAC,OAAQ,aACT,CACE,WACA,CACED,MAAO,CACL,aAAc,WACd,oBAAqB,aACrB,oBAAqB,aACrB,YAAa,UACb,WAAY,gBAIlB,CAAC,mBAAoB,aAEvBt9C,WAAY,CAAC,CAAC,MAAO,UACrBo8C,SAAU,CACR,CAAC,QAAS,WACV,CAAC,OAAQ,CAAExgG,MAAO,gBAAiB3e,KAAM,cAE3CyN,QAAS,CACP,CAAC,SAAU,WACX,CAAC,OAAQ,CAAEkR,MAAO,gBAAiB3e,KAAM,SACzC,CAAC,IAAK,YAERqjH,cAAe,CACb,CACE,uBACA,CACEhD,MAAO,CACL,iBAAkB,aAClB,WAAY,iBAKpBiD,QAAS,C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","sources":["webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/editor.api.js?3956","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/browser.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/dnd.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/dom.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/dompurify/dompurify.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/event.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/fastDomNode.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/formattedTextRenderer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/globalPointerMoveMonitor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/iframe.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/touch.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInputToggles.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabelHover.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabels.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/navigator.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/history.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/toggle/toggle.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/actions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/arrays.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/assert.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/async.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/buffer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/cache.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/cancellation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/codicons.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/color.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/dataTransfer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/decorators.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/errors.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/event.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/extpath.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/filters.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/functional.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/hash.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/iconLabels.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/idGenerator.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/iterator.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/keybindings.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/lazy.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/linkedList.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/map.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/marshalling.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/mime.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/network.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/numbers.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/objects.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/process.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/path.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/platform.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/range.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/resources.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/scrollable.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/severity.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/strings.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/types.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/uint.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/uri.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/uuid.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/common/quickInput.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/html/html.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/domFontInfo.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/fontMeasurements.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/tabFocus.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaInput.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaState.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorColumnSelection.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/coreCommands.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/dnd/browser/dnd.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/dnd.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/editorBrowser.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/editorDom.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/editorExtensions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/bulkEditService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/codeEditorService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/stableEditorScroll.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/markerDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/migrateOptions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/config/editorConfiguration.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewEventHandler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewPart.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/renderingContext.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/rangeUtil.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLine.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/pointerHandler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/dynamicViewOverlay.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewUserInputEvents.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewLayer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewOverlays.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/rgba.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/minimapTokensColorTracker.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewZones/viewZones.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/editorTheme.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewContext.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLinesViewportData.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/blockDecorations/blockDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/oneCursor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorCollection.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorContext.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewEvents.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModelEventDispatcher.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/linesLayout.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLayout.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/modelLineProjection.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelLines.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelImpl.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/modelLineProjectionData.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/view/domLineBreaksComputer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/codeEditorWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/embeddedCodeEditorWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/commands/replaceCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/commands/shiftCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/config/editorConfigurationSchema.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/config/editorOptions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/config/editorZoom.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/config/fontInfo.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/cursorColumns.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/editOperation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/editorColorRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/eolCounter.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/indentation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/position.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/range.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/stringBuilder.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/textChange.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/textModelDefaults.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/wordCharacterClassifier.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/core/wordHelper.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursorCommon.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorAtomicMoveOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorDeleteOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorMoveCommands.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorMoveOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/commands/surroundSelectionCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorTypeOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/cursor/cursorWordOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/editorAction.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/editorCommon.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/editorContextKeys.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/encodedTokenAttributes.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokenizationRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/autoIndent.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/enterAction.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/language.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/languageConfiguration.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/characterPair.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/electricCharacter.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/indentRules.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/onEnter.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/languageBracketsConfiguration.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/languageConfigurationRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/modesRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/nullTokenize.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/richEditBrackets.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/textToHtmlTokenizer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/ast.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/beforeEditPositionMapper.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/brackets.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/length.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/concat23Trees.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/nodeReader.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/parser.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/smallImmutableSet.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/tokenizer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/editStack.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/guidesTextModelPart.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/prefixSumComputer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/textModelBracketPairs.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsTree/bracketPairsTree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/bracketPairsImpl.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/colorizedBracketPairsDecorationProvider.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/indentationGuesser.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/intervalTree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokens/contiguousMultilineTokens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokens/contiguousMultilineTokensBuilder.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelTokens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokens/contiguousTokensEditing.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokens/contiguousTokensStore.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokens/sparseTokensStore.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/tokenizationTextModelPart.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelPart.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelSearch.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/utils.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/editorWorker.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensDto.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/getSemanticTokens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/languageFeatureDebounce.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/languageFeatures.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/markerDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/model.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/modelService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/resolverService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokens/sparseMultilineTokens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensProviderStyling.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/textResourceConfiguration.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/unicodeTextModelHighlighter.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/standaloneStrings.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/textModelEvents.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/textModelGuides.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/tokens/lineTokens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/lineDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/linePart.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLineRenderer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/overviewZoneManager.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/browser/moveCaretCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/browser/transpose.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/clipboard/browser/clipboard.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeAction.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionUi.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionWidgetContribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/browser/types.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codeLensCache.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/browser/codelensController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/color.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorDetector.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPickerModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorPickerWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorHoverParticipant.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/browser/colorContributions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/blockCommentCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/lineCommentCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/comment/browser/comment.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/copyPaste/browser/copyPasteController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/copyPaste/browser/copyPasteContribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/browser/dragAndDropCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/browser/dnd.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/browser/documentSymbols.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/browser/outlineModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/dropIntoEditor/browser/dropIntoEditorContribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/editorState/browser/editorState.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/replaceAllCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/search.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/replacePattern.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findOptionsWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findState.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/history/browser/historyWidgetKeybindingHint.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/find/browser/findController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/foldingRanges.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/foldingModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/hiddenRangeModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/indentRangeProvider.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/foldingDecorations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/syntaxRangeProvider.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/browser/folding.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/extensions/common/extensions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/format/browser/format.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/format/browser/formatActions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/format/browser/formattingEdit.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/markerNavigationService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/severityIcon/common/severityIcon.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/browser/gotoError.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/goToSymbol.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/link/clickLinkGesture.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/getHover.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hoverWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverOperation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/contentHover.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/marginHover.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hover.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/hoverTypes.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplaceCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/indentation/browser/indentUtils.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/indentation/browser/indentation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHints.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsLocations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlayHints/browser/inlayHintsContribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/consts.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/utils.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostText.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionToGhostText.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/bracketPairsTextModelPart/fixBrackets.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletionsModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/suggestWidgetInlineCompletionProvider.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/suggestWidgetPreviewModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostTextModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostTextWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostTextController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostTextHoverParticipant.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/inlineCompletions/browser/ghostText.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/commands/trimTrailingWhitespaceCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/copyLinesCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/moveLinesCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/sortLinesCommand.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/links/browser/getLinks.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/links/browser/links.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/marked/marked.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/markdownRenderer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/markdownRenderer/browser/markdownRenderer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/message/browser/messageController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/multicursor/browser/multicursor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/provideSignatureHelp.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHintsModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/browser/zoneWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/browser/peekView.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/renameInputField.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/browser/rename.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/browser/bracketSelections.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/browser/wordSelections.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetController2.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetParser.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/labels.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetVariables.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/browser/snippetSession.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/stickyScroll/browser/stickyScroll.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/completionModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggest.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/wordContextKey.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestAlternatives.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestCommitCharacters.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestOvertypingCapturer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidgetStatus.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/resizable/resizable.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/files/common/files.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/getIconClasses.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/suggestMemory.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/browser/wordDistance.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/tokenization/browser/tokenization.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/opener/browser/link.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/browser/viewportSemanticTokens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/wordPartOperations/browser/wordPartOperations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/editorBaseApi.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffNavigator.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/defaultWorkerFactory.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/linkComputer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/inplaceReplaceSupport.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/editorWorkerService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/webWorker.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCommon.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchLexer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/colorizer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffReview.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/inlineDiffMargin.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/abstractCodeEditorService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditorService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/layout/browser/layoutService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneLayoutService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedoService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationModels.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/abstractKeybindingService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingResolver.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/resolvedKeybindingItem.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextViewService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/glob.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/languagesAssociations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/languagesRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/languageService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/menu/menu.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/editor/common/editor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/browser/services/openerService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/markerDecorationsService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputUtils.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputBox.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/comparers.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputList.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInput.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInput.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/accessibility/browser/accessibilityService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/actions/common/menuService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/clipboard/browser/clipboardService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/contextkey/browser/contextKeyService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/graph.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiationService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/markers/common/markerService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languageSelector.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languageFeatureRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/services/languageFeaturesService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configurations.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneEditor.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCompile.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneLanguages.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/editor.api.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/errorMessage.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/pickerQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/commandsQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/fuzzyScorer.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/helpQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/common/languages/supports/tokenization.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/themes.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/theme/browser/iconsStyleSheet.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneThemeService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/editor/standalone/common/standaloneTheme.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/language/html/htmlMode.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/language/html/monaco.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/language/json/jsonMode.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/language/json/monaco.contribution.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/nls.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibility.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/actions/common/actions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/clipboard/common/clipboardService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/commands/common/commands.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configuration.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkey.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkeys.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextView.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/dialogs/common/dialogs.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/replaceInput.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/history/browser/contextScopedHistoryWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/descriptors.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/extensions.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiation.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/serviceCollection.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/jsonschemas/common/jsonContributionRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybinding.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingsRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/label/common/label.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listPaging.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/table/tableWidget.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/common/collections.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/asyncDataTree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/dataTree.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/list/browser/listService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/log/common/log.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/markers/common/markers.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/notification/common/notification.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/opener/common/opener.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/progress/common/progress.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickAccess.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickInput.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/registry/common/platform.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/base/parts/storage/common/storage.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/storage/common/storage.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/telemetry/common/telemetry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/colorRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/iconRegistry.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/styler.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/theme.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/theme/common/themeService.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedo.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/workspace/common/workspace.js","webpack://frends.ui/./node_modules/monaco-editor/esm/vs/platform/workspace/common/workspaceTrust.js"],"sourcesContent":["self[\"MonacoEnvironment\"] = (function (paths) {\n function stripTrailingSlash(str) {\n return str.replace(/\\/$/, '');\n }\n return {\n globalAPI: true,\n getWorkerUrl: function (moduleId, label) {\n var pathPrefix = typeof __webpack_public_path__ === 'string' ? __webpack_public_path__ : \"\";\n var result = (pathPrefix ? stripTrailingSlash(pathPrefix) + '/' : '') + paths[label];\n if (/^((http:)|(https:)|(file:)|(\\/\\/))/.test(result)) {\n var currentUrl = String(window.location);\n var currentOrigin = currentUrl.substr(0, currentUrl.length - window.location.hash.length - window.location.search.length - window.location.pathname.length);\n if (result.substring(0, currentOrigin.length) !== currentOrigin) {\n if(/^(\\/\\/)/.test(result)) {\n result = window.location.protocol + result\n }\n var js = '/*' + label + '*/importScripts(\"' + result + '\");';\n var blob = new Blob([js], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n }\n }\n return result;\n }\n };\n })({\n \"editorWorkerService\": \"editor.worker.js\",\n \"html\": \"html.worker.js\",\n \"json\": \"json.worker.js\",\n \"handlebars\": \"html.worker.js\",\n \"razor\": \"html.worker.js\"\n});\nrequire(\"./standalone/browser/accessibilityHelp/accessibilityHelp.js\");\nrequire(\"./contrib/anchorSelect/browser/anchorSelect.js\");\nrequire(\"./contrib/bracketMatching/browser/bracketMatching.js\");\nrequire(\"./browser/coreCommands.js\");\nrequire(\"./contrib/caretOperations/browser/caretOperations.js\");\nrequire(\"./contrib/caretOperations/browser/transpose.js\");\nrequire(\"./contrib/clipboard/browser/clipboard.js\");\nrequire(\"./contrib/codeAction/browser/codeActionContributions.js\");\nrequire(\"./contrib/codelens/browser/codelensController.js\");\nrequire(\"./contrib/colorPicker/browser/colorContributions.js\");\nrequire(\"./contrib/comment/browser/comment.js\");\nrequire(\"./contrib/contextmenu/browser/contextmenu.js\");\nrequire(\"./contrib/copyPaste/browser/copyPasteContribution.js\");\nrequire(\"./contrib/cursorUndo/browser/cursorUndo.js\");\nrequire(\"./contrib/dnd/browser/dnd.js\");\nrequire(\"./contrib/documentSymbols/browser/documentSymbols.js\");\nrequire(\"./contrib/dropIntoEditor/browser/dropIntoEditorContribution.js\");\nrequire(\"./contrib/find/browser/findController.js\");\nrequire(\"./contrib/folding/browser/folding.js\");\nrequire(\"./contrib/fontZoom/browser/fontZoom.js\");\nrequire(\"./contrib/format/browser/formatActions.js\");\nrequire(\"./contrib/gotoError/browser/gotoError.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js\");\nrequire(\"./contrib/gotoSymbol/browser/goToCommands.js\");\nrequire(\"./contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js\");\nrequire(\"./contrib/hover/browser/hover.js\");\nrequire(\"./standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js\");\nrequire(\"./contrib/inPlaceReplace/browser/inPlaceReplace.js\");\nrequire(\"./contrib/indentation/browser/indentation.js\");\nrequire(\"./contrib/inlayHints/browser/inlayHintsContribution.js\");\nrequire(\"./contrib/inlineCompletions/browser/ghostText.contribution.js\");\nrequire(\"./standalone/browser/inspectTokens/inspectTokens.js\");\nrequire(\"./contrib/lineSelection/browser/lineSelection.js\");\nrequire(\"./contrib/linesOperations/browser/linesOperations.js\");\nrequire(\"./contrib/linkedEditing/browser/linkedEditing.js\");\nrequire(\"./contrib/links/browser/links.js\");\nrequire(\"./contrib/multicursor/browser/multicursor.js\");\nrequire(\"./contrib/parameterHints/browser/parameterHints.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneCommandsQuickAccess.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneHelpQuickAccess.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js\");\nrequire(\"./contrib/readOnlyMessage/browser/contribution.js\");\nrequire(\"./standalone/browser/referenceSearch/standaloneReferenceSearch.js\");\nrequire(\"./contrib/rename/browser/rename.js\");\nrequire(\"./contrib/smartSelect/browser/smartSelect.js\");\nrequire(\"./contrib/snippet/browser/snippetController2.js\");\nrequire(\"./contrib/stickyScroll/browser/stickyScroll.js\");\nrequire(\"./contrib/suggest/browser/suggestController.js\");\nrequire(\"./contrib/suggest/browser/suggestInlineCompletions.js\");\nrequire(\"./standalone/browser/toggleHighContrast/toggleHighContrast.js\");\nrequire(\"./contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js\");\nrequire(\"./contrib/tokenization/browser/tokenization.js\");\nrequire(\"./contrib/unicodeHighlighter/browser/unicodeHighlighter.js\");\nrequire(\"./contrib/unusualLineTerminators/browser/unusualLineTerminators.js\");\nrequire(\"./contrib/viewportSemanticTokens/browser/viewportSemanticTokens.js\");\nrequire(\"./contrib/wordHighlighter/browser/wordHighlighter.js\");\nrequire(\"./contrib/wordOperations/browser/wordOperations.js\");\nrequire(\"./contrib/wordPartOperations/browser/wordPartOperations.js\");\nmodule.exports = require(\"!!./editor.api.js\");\nrequire(\"../basic-languages/handlebars/handlebars.contribution.js\");\nrequire(\"../basic-languages/html/html.contribution.js\");\nrequire(\"../language/html/monaco.contribution.js\");\nrequire(\"../basic-languages/csharp/csharp.contribution.js\");\nrequire(\"../basic-languages/xml/xml.contribution.js\");\nrequire(\"../basic-languages/sql/sql.contribution.js\");\nrequire(\"../basic-languages/yaml/yaml.contribution.js\");\nrequire(\"../language/json/monaco.contribution.js\");\nrequire(\"../basic-languages/markdown/markdown.contribution.js\");","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../common/event.js';\nimport { Disposable, markAsSingleton } from '../common/lifecycle.js';\nclass WindowManager {\n constructor() {\n // --- Zoom Factor\n this._zoomFactor = 1;\n }\n getZoomFactor() {\n return this._zoomFactor;\n }\n}\nWindowManager.INSTANCE = new WindowManager();\n/**\n * See https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio#monitoring_screen_resolution_or_zoom_level_changes\n */\nclass DevicePixelRatioMonitor extends Disposable {\n constructor() {\n super();\n this._onDidChange = this._register(new Emitter());\n this.onDidChange = this._onDidChange.event;\n this._listener = () => this._handleChange(true);\n this._mediaQueryList = null;\n this._handleChange(false);\n }\n _handleChange(fireEvent) {\n var _a;\n (_a = this._mediaQueryList) === null || _a === void 0 ? void 0 : _a.removeEventListener('change', this._listener);\n this._mediaQueryList = matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);\n this._mediaQueryList.addEventListener('change', this._listener);\n if (fireEvent) {\n this._onDidChange.fire();\n }\n }\n}\nclass PixelRatioImpl extends Disposable {\n constructor() {\n super();\n this._onDidChange = this._register(new Emitter());\n this.onDidChange = this._onDidChange.event;\n this._value = this._getPixelRatio();\n const dprMonitor = this._register(new DevicePixelRatioMonitor());\n this._register(dprMonitor.onDidChange(() => {\n this._value = this._getPixelRatio();\n this._onDidChange.fire(this._value);\n }));\n }\n get value() {\n return this._value;\n }\n _getPixelRatio() {\n const ctx = document.createElement('canvas').getContext('2d');\n const dpr = window.devicePixelRatio || 1;\n const bsr = ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1;\n return dpr / bsr;\n }\n}\nclass PixelRatioFacade {\n constructor() {\n this._pixelRatioMonitor = null;\n }\n _getOrCreatePixelRatioMonitor() {\n if (!this._pixelRatioMonitor) {\n this._pixelRatioMonitor = markAsSingleton(new PixelRatioImpl());\n }\n return this._pixelRatioMonitor;\n }\n /**\n * Get the current value.\n */\n get value() {\n return this._getOrCreatePixelRatioMonitor().value;\n }\n /**\n * Listen for changes.\n */\n get onDidChange() {\n return this._getOrCreatePixelRatioMonitor().onDidChange;\n }\n}\nexport function addMatchMediaChangeListener(query, callback) {\n if (typeof query === 'string') {\n query = window.matchMedia(query);\n }\n query.addEventListener('change', callback);\n}\n/**\n * Returns the pixel ratio.\n *\n * This is useful for rendering elements at native screen resolution or for being used as\n * a cache key when storing font measurements. Fonts might render differently depending on resolution\n * and any measurements need to be discarded for example when a window is moved from a monitor to another.\n */\nexport const PixelRatio = new PixelRatioFacade();\n/** The zoom scale for an index, e.g. 1, 1.2, 1.4 */\nexport function getZoomFactor() {\n return WindowManager.INSTANCE.getZoomFactor();\n}\nconst userAgent = navigator.userAgent;\nexport const isFirefox = (userAgent.indexOf('Firefox') >= 0);\nexport const isWebKit = (userAgent.indexOf('AppleWebKit') >= 0);\nexport const isChrome = (userAgent.indexOf('Chrome') >= 0);\nexport const isSafari = (!isChrome && (userAgent.indexOf('Safari') >= 0));\nexport const isWebkitWebView = (!isChrome && !isSafari && isWebKit);\nexport const isElectron = (userAgent.indexOf('Electron/') >= 0);\nexport const isAndroid = (userAgent.indexOf('Android') >= 0);\nlet standalone = false;\nif (window.matchMedia) {\n const matchMedia = window.matchMedia('(display-mode: standalone)');\n standalone = matchMedia.matches;\n addMatchMediaChangeListener(matchMedia, ({ matches }) => {\n standalone = matches;\n });\n}\nexport function isStandalone() {\n return standalone;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as browser from './browser.js';\nimport * as platform from '../common/platform.js';\n/**\n * Browser feature we can support in current platform, browser and environment.\n */\nexport const BrowserFeatures = {\n clipboard: {\n writeText: (platform.isNative\n || (document.queryCommandSupported && document.queryCommandSupported('copy'))\n || !!(navigator && navigator.clipboard && navigator.clipboard.writeText)),\n readText: (platform.isNative\n || !!(navigator && navigator.clipboard && navigator.clipboard.readText))\n },\n keyboard: (() => {\n if (platform.isNative || browser.isStandalone()) {\n return 0 /* KeyboardSupport.Always */;\n }\n if (navigator.keyboard || browser.isSafari) {\n return 1 /* KeyboardSupport.FullScreen */;\n }\n return 2 /* KeyboardSupport.None */;\n })(),\n // 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\n touch: 'ontouchstart' in window || navigator.maxTouchPoints > 0,\n pointerEvents: window.PointerEvent && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0 || navigator.maxTouchPoints > 0)\n};\n","import { Mimes } from '../common/mime.js';\n// Common data transfers\nexport const DataTransfers = {\n /**\n * Application specific resource transfer type\n */\n RESOURCES: 'ResourceURLs',\n /**\n * Browser specific transfer type to download\n */\n DOWNLOAD_URL: 'DownloadURL',\n /**\n * Browser specific transfer type for files\n */\n FILES: 'Files',\n /**\n * Typically transfer type for copy/paste transfers.\n */\n TEXT: Mimes.text\n};\nexport const StaticDND = {\n CurrentDragAndDropData: undefined\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as browser from './browser.js';\nimport { BrowserFeatures } from './canIUse.js';\nimport { StandardKeyboardEvent } from './keyboardEvent.js';\nimport { StandardMouseEvent } from './mouseEvent.js';\nimport { onUnexpectedError } from '../common/errors.js';\nimport * as event from '../common/event.js';\nimport * as dompurify from './dompurify/dompurify.js';\nimport { Disposable, DisposableStore, toDisposable } from '../common/lifecycle.js';\nimport { FileAccess, RemoteAuthorities } from '../common/network.js';\nimport * as platform from '../common/platform.js';\nexport function clearNode(node) {\n while (node.firstChild) {\n node.firstChild.remove();\n }\n}\n/**\n * @deprecated Use node.isConnected directly\n */\nexport function isInDOM(node) {\n var _a;\n return (_a = node === null || node === void 0 ? void 0 : node.isConnected) !== null && _a !== void 0 ? _a : false;\n}\nclass DomListener {\n constructor(node, type, handler, options) {\n this._node = node;\n this._type = type;\n this._handler = handler;\n this._options = (options || false);\n this._node.addEventListener(this._type, this._handler, this._options);\n }\n dispose() {\n if (!this._handler) {\n // Already disposed\n return;\n }\n this._node.removeEventListener(this._type, this._handler, this._options);\n // Prevent leakers from holding on to the dom or handler func\n this._node = null;\n this._handler = null;\n }\n}\nexport function addDisposableListener(node, type, handler, useCaptureOrOptions) {\n return new DomListener(node, type, handler, useCaptureOrOptions);\n}\nfunction _wrapAsStandardMouseEvent(handler) {\n return function (e) {\n return handler(new StandardMouseEvent(e));\n };\n}\nfunction _wrapAsStandardKeyboardEvent(handler) {\n return function (e) {\n return handler(new StandardKeyboardEvent(e));\n };\n}\nexport const addStandardDisposableListener = function addStandardDisposableListener(node, type, handler, useCapture) {\n let wrapHandler = handler;\n if (type === 'click' || type === 'mousedown') {\n wrapHandler = _wrapAsStandardMouseEvent(handler);\n }\n else if (type === 'keydown' || type === 'keypress' || type === 'keyup') {\n wrapHandler = _wrapAsStandardKeyboardEvent(handler);\n }\n return addDisposableListener(node, type, wrapHandler, useCapture);\n};\nexport const addStandardDisposableGenericMouseDownListener = function addStandardDisposableListener(node, handler, useCapture) {\n const wrapHandler = _wrapAsStandardMouseEvent(handler);\n return addDisposableGenericMouseDownListener(node, wrapHandler, useCapture);\n};\nexport const addStandardDisposableGenericMouseUpListener = function addStandardDisposableListener(node, handler, useCapture) {\n const wrapHandler = _wrapAsStandardMouseEvent(handler);\n return addDisposableGenericMouseUpListener(node, wrapHandler, useCapture);\n};\nexport function addDisposableGenericMouseDownListener(node, handler, useCapture) {\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_DOWN : EventType.MOUSE_DOWN, handler, useCapture);\n}\nexport function addDisposableGenericMouseUpListener(node, handler, useCapture) {\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_UP : EventType.MOUSE_UP, handler, useCapture);\n}\nexport function createEventEmitter(target, type, options) {\n let domListener = null;\n const handler = (e) => result.fire(e);\n const onFirstListenerAdd = () => {\n if (!domListener) {\n domListener = new DomListener(target, type, handler, options);\n }\n };\n const onLastListenerRemove = () => {\n if (domListener) {\n domListener.dispose();\n domListener = null;\n }\n };\n const result = new event.Emitter({ onFirstListenerAdd, onLastListenerRemove });\n return result;\n}\nlet _animationFrame = null;\nfunction doRequestAnimationFrame(callback) {\n if (!_animationFrame) {\n const emulatedRequestAnimationFrame = (callback) => {\n return setTimeout(() => callback(new Date().getTime()), 0);\n };\n _animationFrame = (self.requestAnimationFrame\n || self.msRequestAnimationFrame\n || self.webkitRequestAnimationFrame\n || self.mozRequestAnimationFrame\n || self.oRequestAnimationFrame\n || emulatedRequestAnimationFrame);\n }\n return _animationFrame.call(self, callback);\n}\n/**\n * Schedule a callback to be run at the next animation frame.\n * This allows multiple parties to register callbacks that should run at the next animation frame.\n * If currently in an animation frame, `runner` will be executed immediately.\n * @return token that can be used to cancel the scheduled runner (only if `runner` was not executed immediately).\n */\nexport let runAtThisOrScheduleAtNextAnimationFrame;\n/**\n * Schedule a callback to be run at the next animation frame.\n * This allows multiple parties to register callbacks that should run at the next animation frame.\n * If currently in an animation frame, `runner` will be executed at the next animation frame.\n * @return token that can be used to cancel the scheduled runner.\n */\nexport let scheduleAtNextAnimationFrame;\nclass AnimationFrameQueueItem {\n constructor(runner, priority = 0) {\n this._runner = runner;\n this.priority = priority;\n this._canceled = false;\n }\n dispose() {\n this._canceled = true;\n }\n execute() {\n if (this._canceled) {\n return;\n }\n try {\n this._runner();\n }\n catch (e) {\n onUnexpectedError(e);\n }\n }\n // Sort by priority (largest to lowest)\n static sort(a, b) {\n return b.priority - a.priority;\n }\n}\n(function () {\n /**\n * The runners scheduled at the next animation frame\n */\n let NEXT_QUEUE = [];\n /**\n * The runners scheduled at the current animation frame\n */\n let CURRENT_QUEUE = null;\n /**\n * A flag to keep track if the native requestAnimationFrame was already called\n */\n let animFrameRequested = false;\n /**\n * A flag to indicate if currently handling a native requestAnimationFrame callback\n */\n let inAnimationFrameRunner = false;\n const animationFrameRunner = () => {\n animFrameRequested = false;\n CURRENT_QUEUE = NEXT_QUEUE;\n NEXT_QUEUE = [];\n inAnimationFrameRunner = true;\n while (CURRENT_QUEUE.length > 0) {\n CURRENT_QUEUE.sort(AnimationFrameQueueItem.sort);\n const top = CURRENT_QUEUE.shift();\n top.execute();\n }\n inAnimationFrameRunner = false;\n };\n scheduleAtNextAnimationFrame = (runner, priority = 0) => {\n const item = new AnimationFrameQueueItem(runner, priority);\n NEXT_QUEUE.push(item);\n if (!animFrameRequested) {\n animFrameRequested = true;\n doRequestAnimationFrame(animationFrameRunner);\n }\n return item;\n };\n runAtThisOrScheduleAtNextAnimationFrame = (runner, priority) => {\n if (inAnimationFrameRunner) {\n const item = new AnimationFrameQueueItem(runner, priority);\n CURRENT_QUEUE.push(item);\n return item;\n }\n else {\n return scheduleAtNextAnimationFrame(runner, priority);\n }\n };\n})();\nexport function getComputedStyle(el) {\n return document.defaultView.getComputedStyle(el, null);\n}\nexport function getClientArea(element) {\n // Try with DOM clientWidth / clientHeight\n if (element !== document.body) {\n return new Dimension(element.clientWidth, element.clientHeight);\n }\n // If visual view port exits and it's on mobile, it should be used instead of window innerWidth / innerHeight, or document.body.clientWidth / document.body.clientHeight\n if (platform.isIOS && window.visualViewport) {\n return new Dimension(window.visualViewport.width, window.visualViewport.height);\n }\n // Try innerWidth / innerHeight\n if (window.innerWidth && window.innerHeight) {\n return new Dimension(window.innerWidth, window.innerHeight);\n }\n // Try with document.body.clientWidth / document.body.clientHeight\n if (document.body && document.body.clientWidth && document.body.clientHeight) {\n return new Dimension(document.body.clientWidth, document.body.clientHeight);\n }\n // Try with document.documentElement.clientWidth / document.documentElement.clientHeight\n if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) {\n return new Dimension(document.documentElement.clientWidth, document.documentElement.clientHeight);\n }\n throw new Error('Unable to figure out browser width and height');\n}\nclass SizeUtils {\n // Adapted from WinJS\n // Converts a CSS positioning string for the specified element to pixels.\n static convertToPixels(element, value) {\n return parseFloat(value) || 0;\n }\n static getDimension(element, cssPropertyName, jsPropertyName) {\n const computedStyle = getComputedStyle(element);\n let value = '0';\n if (computedStyle) {\n if (computedStyle.getPropertyValue) {\n value = computedStyle.getPropertyValue(cssPropertyName);\n }\n else {\n // IE8\n value = computedStyle.getAttribute(jsPropertyName);\n }\n }\n return SizeUtils.convertToPixels(element, value);\n }\n static getBorderLeftWidth(element) {\n return SizeUtils.getDimension(element, 'border-left-width', 'borderLeftWidth');\n }\n static getBorderRightWidth(element) {\n return SizeUtils.getDimension(element, 'border-right-width', 'borderRightWidth');\n }\n static getBorderTopWidth(element) {\n return SizeUtils.getDimension(element, 'border-top-width', 'borderTopWidth');\n }\n static getBorderBottomWidth(element) {\n return SizeUtils.getDimension(element, 'border-bottom-width', 'borderBottomWidth');\n }\n static getPaddingLeft(element) {\n return SizeUtils.getDimension(element, 'padding-left', 'paddingLeft');\n }\n static getPaddingRight(element) {\n return SizeUtils.getDimension(element, 'padding-right', 'paddingRight');\n }\n static getPaddingTop(element) {\n return SizeUtils.getDimension(element, 'padding-top', 'paddingTop');\n }\n static getPaddingBottom(element) {\n return SizeUtils.getDimension(element, 'padding-bottom', 'paddingBottom');\n }\n static getMarginLeft(element) {\n return SizeUtils.getDimension(element, 'margin-left', 'marginLeft');\n }\n static getMarginTop(element) {\n return SizeUtils.getDimension(element, 'margin-top', 'marginTop');\n }\n static getMarginRight(element) {\n return SizeUtils.getDimension(element, 'margin-right', 'marginRight');\n }\n static getMarginBottom(element) {\n return SizeUtils.getDimension(element, 'margin-bottom', 'marginBottom');\n }\n}\nexport class Dimension {\n constructor(width, height) {\n this.width = width;\n this.height = height;\n }\n with(width = this.width, height = this.height) {\n if (width !== this.width || height !== this.height) {\n return new Dimension(width, height);\n }\n else {\n return this;\n }\n }\n static is(obj) {\n return typeof obj === 'object' && typeof obj.height === 'number' && typeof obj.width === 'number';\n }\n static lift(obj) {\n if (obj instanceof Dimension) {\n return obj;\n }\n else {\n return new Dimension(obj.width, obj.height);\n }\n }\n static equals(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return a.width === b.width && a.height === b.height;\n }\n}\nDimension.None = new Dimension(0, 0);\nexport function getTopLeftOffset(element) {\n // Adapted from WinJS.Utilities.getPosition\n // and added borders to the mix\n let offsetParent = element.offsetParent;\n let top = element.offsetTop;\n let left = element.offsetLeft;\n while ((element = element.parentNode) !== null\n && element !== document.body\n && element !== document.documentElement) {\n top -= element.scrollTop;\n const c = isShadowRoot(element) ? null : getComputedStyle(element);\n if (c) {\n left -= c.direction !== 'rtl' ? element.scrollLeft : -element.scrollLeft;\n }\n if (element === offsetParent) {\n left += SizeUtils.getBorderLeftWidth(element);\n top += SizeUtils.getBorderTopWidth(element);\n top += element.offsetTop;\n left += element.offsetLeft;\n offsetParent = element.offsetParent;\n }\n }\n return {\n left: left,\n top: top\n };\n}\nexport function size(element, width, height) {\n if (typeof width === 'number') {\n element.style.width = `${width}px`;\n }\n if (typeof height === 'number') {\n element.style.height = `${height}px`;\n }\n}\n/**\n * Returns the position of a dom node relative to the entire page.\n */\nexport function getDomNodePagePosition(domNode) {\n const bb = domNode.getBoundingClientRect();\n return {\n left: bb.left + StandardWindow.scrollX,\n top: bb.top + StandardWindow.scrollY,\n width: bb.width,\n height: bb.height\n };\n}\n/**\n * Returns the effective zoom on a given element before window zoom level is applied\n */\nexport function getDomNodeZoomLevel(domNode) {\n let testElement = domNode;\n let zoom = 1.0;\n do {\n const elementZoomLevel = getComputedStyle(testElement).zoom;\n if (elementZoomLevel !== null && elementZoomLevel !== undefined && elementZoomLevel !== '1') {\n zoom *= elementZoomLevel;\n }\n testElement = testElement.parentElement;\n } while (testElement !== null && testElement !== document.documentElement);\n return zoom;\n}\nexport const StandardWindow = new class {\n get scrollX() {\n if (typeof window.scrollX === 'number') {\n // modern browsers\n return window.scrollX;\n }\n else {\n return document.body.scrollLeft + document.documentElement.scrollLeft;\n }\n }\n get scrollY() {\n if (typeof window.scrollY === 'number') {\n // modern browsers\n return window.scrollY;\n }\n else {\n return document.body.scrollTop + document.documentElement.scrollTop;\n }\n }\n};\n// Adapted from WinJS\n// Gets the width of the element, including margins.\nexport function getTotalWidth(element) {\n const margin = SizeUtils.getMarginLeft(element) + SizeUtils.getMarginRight(element);\n return element.offsetWidth + margin;\n}\nexport function getContentWidth(element) {\n const border = SizeUtils.getBorderLeftWidth(element) + SizeUtils.getBorderRightWidth(element);\n const padding = SizeUtils.getPaddingLeft(element) + SizeUtils.getPaddingRight(element);\n return element.offsetWidth - border - padding;\n}\n// Adapted from WinJS\n// Gets the height of the content of the specified element. The content height does not include borders or padding.\nexport function getContentHeight(element) {\n const border = SizeUtils.getBorderTopWidth(element) + SizeUtils.getBorderBottomWidth(element);\n const padding = SizeUtils.getPaddingTop(element) + SizeUtils.getPaddingBottom(element);\n return element.offsetHeight - border - padding;\n}\n// Adapted from WinJS\n// Gets the height of the element, including its margins.\nexport function getTotalHeight(element) {\n const margin = SizeUtils.getMarginTop(element) + SizeUtils.getMarginBottom(element);\n return element.offsetHeight + margin;\n}\n// ----------------------------------------------------------------------------------------\nexport function isAncestor(testChild, testAncestor) {\n while (testChild) {\n if (testChild === testAncestor) {\n return true;\n }\n testChild = testChild.parentNode;\n }\n return false;\n}\nexport function findParentWithClass(node, clazz, stopAtClazzOrNode) {\n while (node && node.nodeType === node.ELEMENT_NODE) {\n if (node.classList.contains(clazz)) {\n return node;\n }\n if (stopAtClazzOrNode) {\n if (typeof stopAtClazzOrNode === 'string') {\n if (node.classList.contains(stopAtClazzOrNode)) {\n return null;\n }\n }\n else {\n if (node === stopAtClazzOrNode) {\n return null;\n }\n }\n }\n node = node.parentNode;\n }\n return null;\n}\nexport function hasParentWithClass(node, clazz, stopAtClazzOrNode) {\n return !!findParentWithClass(node, clazz, stopAtClazzOrNode);\n}\nexport function isShadowRoot(node) {\n return (node && !!node.host && !!node.mode);\n}\nexport function isInShadowDOM(domNode) {\n return !!getShadowRoot(domNode);\n}\nexport function getShadowRoot(domNode) {\n while (domNode.parentNode) {\n if (domNode === document.body) {\n // reached the body\n return null;\n }\n domNode = domNode.parentNode;\n }\n return isShadowRoot(domNode) ? domNode : null;\n}\nexport function getActiveElement() {\n let result = document.activeElement;\n while (result === null || result === void 0 ? void 0 : result.shadowRoot) {\n result = result.shadowRoot.activeElement;\n }\n return result;\n}\nexport function createStyleSheet(container = document.getElementsByTagName('head')[0]) {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.media = 'screen';\n container.appendChild(style);\n return style;\n}\nlet _sharedStyleSheet = null;\nfunction getSharedStyleSheet() {\n if (!_sharedStyleSheet) {\n _sharedStyleSheet = createStyleSheet();\n }\n return _sharedStyleSheet;\n}\nfunction getDynamicStyleSheetRules(style) {\n var _a, _b;\n if ((_a = style === null || style === void 0 ? void 0 : style.sheet) === null || _a === void 0 ? void 0 : _a.rules) {\n // Chrome, IE\n return style.sheet.rules;\n }\n if ((_b = style === null || style === void 0 ? void 0 : style.sheet) === null || _b === void 0 ? void 0 : _b.cssRules) {\n // FF\n return style.sheet.cssRules;\n }\n return [];\n}\nexport function createCSSRule(selector, cssText, style = getSharedStyleSheet()) {\n if (!style || !cssText) {\n return;\n }\n style.sheet.insertRule(selector + '{' + cssText + '}', 0);\n}\nexport function removeCSSRulesContainingSelector(ruleName, style = getSharedStyleSheet()) {\n if (!style) {\n return;\n }\n const rules = getDynamicStyleSheetRules(style);\n const toDelete = [];\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n if (rule.selectorText.indexOf(ruleName) !== -1) {\n toDelete.push(i);\n }\n }\n for (let i = toDelete.length - 1; i >= 0; i--) {\n style.sheet.deleteRule(toDelete[i]);\n }\n}\nexport function isHTMLElement(o) {\n if (typeof HTMLElement === 'object') {\n return o instanceof HTMLElement;\n }\n return o && typeof o === 'object' && o.nodeType === 1 && typeof o.nodeName === 'string';\n}\nexport const EventType = {\n // Mouse\n CLICK: 'click',\n AUXCLICK: 'auxclick',\n DBLCLICK: 'dblclick',\n MOUSE_UP: 'mouseup',\n MOUSE_DOWN: 'mousedown',\n MOUSE_OVER: 'mouseover',\n MOUSE_MOVE: 'mousemove',\n MOUSE_OUT: 'mouseout',\n MOUSE_ENTER: 'mouseenter',\n MOUSE_LEAVE: 'mouseleave',\n MOUSE_WHEEL: 'wheel',\n POINTER_UP: 'pointerup',\n POINTER_DOWN: 'pointerdown',\n POINTER_MOVE: 'pointermove',\n POINTER_LEAVE: 'pointerleave',\n CONTEXT_MENU: 'contextmenu',\n WHEEL: 'wheel',\n // Keyboard\n KEY_DOWN: 'keydown',\n KEY_PRESS: 'keypress',\n KEY_UP: 'keyup',\n // HTML Document\n LOAD: 'load',\n BEFORE_UNLOAD: 'beforeunload',\n UNLOAD: 'unload',\n PAGE_SHOW: 'pageshow',\n PAGE_HIDE: 'pagehide',\n ABORT: 'abort',\n ERROR: 'error',\n RESIZE: 'resize',\n SCROLL: 'scroll',\n FULLSCREEN_CHANGE: 'fullscreenchange',\n WK_FULLSCREEN_CHANGE: 'webkitfullscreenchange',\n // Form\n SELECT: 'select',\n CHANGE: 'change',\n SUBMIT: 'submit',\n RESET: 'reset',\n FOCUS: 'focus',\n FOCUS_IN: 'focusin',\n FOCUS_OUT: 'focusout',\n BLUR: 'blur',\n INPUT: 'input',\n // Local Storage\n STORAGE: 'storage',\n // Drag\n DRAG_START: 'dragstart',\n DRAG: 'drag',\n DRAG_ENTER: 'dragenter',\n DRAG_LEAVE: 'dragleave',\n DRAG_OVER: 'dragover',\n DROP: 'drop',\n DRAG_END: 'dragend',\n // Animation\n ANIMATION_START: browser.isWebKit ? 'webkitAnimationStart' : 'animationstart',\n ANIMATION_END: browser.isWebKit ? 'webkitAnimationEnd' : 'animationend',\n ANIMATION_ITERATION: browser.isWebKit ? 'webkitAnimationIteration' : 'animationiteration'\n};\nexport const EventHelper = {\n stop: function (e, cancelBubble) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n else {\n // IE8\n e.returnValue = false;\n }\n if (cancelBubble) {\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n else {\n // IE8\n e.cancelBubble = true;\n }\n }\n }\n};\nexport function saveParentsScrollTop(node) {\n const r = [];\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\n r[i] = node.scrollTop;\n node = node.parentNode;\n }\n return r;\n}\nexport function restoreParentsScrollTop(node, state) {\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\n if (node.scrollTop !== state[i]) {\n node.scrollTop = state[i];\n }\n node = node.parentNode;\n }\n}\nclass FocusTracker extends Disposable {\n constructor(element) {\n super();\n this._onDidFocus = this._register(new event.Emitter());\n this.onDidFocus = this._onDidFocus.event;\n this._onDidBlur = this._register(new event.Emitter());\n this.onDidBlur = this._onDidBlur.event;\n let hasFocus = FocusTracker.hasFocusWithin(element);\n let loosingFocus = false;\n const onFocus = () => {\n loosingFocus = false;\n if (!hasFocus) {\n hasFocus = true;\n this._onDidFocus.fire();\n }\n };\n const onBlur = () => {\n if (hasFocus) {\n loosingFocus = true;\n window.setTimeout(() => {\n if (loosingFocus) {\n loosingFocus = false;\n hasFocus = false;\n this._onDidBlur.fire();\n }\n }, 0);\n }\n };\n this._refreshStateHandler = () => {\n const currentNodeHasFocus = FocusTracker.hasFocusWithin(element);\n if (currentNodeHasFocus !== hasFocus) {\n if (hasFocus) {\n onBlur();\n }\n else {\n onFocus();\n }\n }\n };\n this._register(addDisposableListener(element, EventType.FOCUS, onFocus, true));\n this._register(addDisposableListener(element, EventType.BLUR, onBlur, true));\n this._register(addDisposableListener(element, EventType.FOCUS_IN, () => this._refreshStateHandler()));\n this._register(addDisposableListener(element, EventType.FOCUS_OUT, () => this._refreshStateHandler()));\n }\n static hasFocusWithin(element) {\n const shadowRoot = getShadowRoot(element);\n const activeElement = (shadowRoot ? shadowRoot.activeElement : document.activeElement);\n return isAncestor(activeElement, element);\n }\n}\nexport function trackFocus(element) {\n return new FocusTracker(element);\n}\nexport function append(parent, ...children) {\n parent.append(...children);\n if (children.length === 1 && typeof children[0] !== 'string') {\n return children[0];\n }\n}\nexport function prepend(parent, child) {\n parent.insertBefore(child, parent.firstChild);\n return child;\n}\n/**\n * Removes all children from `parent` and appends `children`\n */\nexport function reset(parent, ...children) {\n parent.innerText = '';\n append(parent, ...children);\n}\nconst SELECTOR_REGEX = /([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;\nexport var Namespace;\n(function (Namespace) {\n Namespace[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n Namespace[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n})(Namespace || (Namespace = {}));\nfunction _$(namespace, description, attrs, ...children) {\n const match = SELECTOR_REGEX.exec(description);\n if (!match) {\n throw new Error('Bad use of emmet');\n }\n attrs = Object.assign({}, (attrs || {}));\n const tagName = match[1] || 'div';\n let result;\n if (namespace !== Namespace.HTML) {\n result = document.createElementNS(namespace, tagName);\n }\n else {\n result = document.createElement(tagName);\n }\n if (match[3]) {\n result.id = match[3];\n }\n if (match[4]) {\n result.className = match[4].replace(/\\./g, ' ').trim();\n }\n Object.keys(attrs).forEach(name => {\n const value = attrs[name];\n if (typeof value === 'undefined') {\n return;\n }\n if (/^on\\w+$/.test(name)) {\n result[name] = value;\n }\n else if (name === 'selected') {\n if (value) {\n result.setAttribute(name, 'true');\n }\n }\n else {\n result.setAttribute(name, value);\n }\n });\n result.append(...children);\n return result;\n}\nexport function $(description, attrs, ...children) {\n return _$(Namespace.HTML, description, attrs, ...children);\n}\n$.SVG = function (description, attrs, ...children) {\n return _$(Namespace.SVG, description, attrs, ...children);\n};\nexport function show(...elements) {\n for (const element of elements) {\n element.style.display = '';\n element.removeAttribute('aria-hidden');\n }\n}\nexport function hide(...elements) {\n for (const element of elements) {\n element.style.display = 'none';\n element.setAttribute('aria-hidden', 'true');\n }\n}\nexport function getElementsByTagName(tag) {\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\n}\n/**\n * Find a value usable for a dom node size such that the likelihood that it would be\n * displayed with constant screen pixels size is as high as possible.\n *\n * e.g. We would desire for the cursors to be 2px (CSS px) wide. Under a devicePixelRatio\n * of 1.25, the cursor will be 2.5 screen pixels wide. Depending on how the dom node aligns/\"snaps\"\n * with the screen pixels, it will sometimes be rendered with 2 screen pixels, and sometimes with 3 screen pixels.\n */\nexport function computeScreenAwareSize(cssPx) {\n const screenPx = window.devicePixelRatio * cssPx;\n return Math.max(1, Math.floor(screenPx)) / window.devicePixelRatio;\n}\n/**\n * Open safely a new window. This is the best way to do so, but you cannot tell\n * if the window was opened or if it was blocked by the browser's popup blocker.\n * If you want to tell if the browser blocked the new window, use {@link windowOpenWithSuccess}.\n *\n * See https://github.com/microsoft/monaco-editor/issues/601\n * To protect against malicious code in the linked site, particularly phishing attempts,\n * the window.opener should be set to null to prevent the linked site from having access\n * to change the location of the current page.\n * See https://mathiasbynens.github.io/rel-noopener/\n */\nexport function windowOpenNoOpener(url) {\n // By using 'noopener' in the `windowFeatures` argument, the newly created window will\n // not be able to use `window.opener` to reach back to the current page.\n // See https://stackoverflow.com/a/46958731\n // See https://developer.mozilla.org/en-US/docs/Web/API/Window/open#noopener\n // However, this also doesn't allow us to realize if the browser blocked\n // the creation of the window.\n window.open(url, '_blank', 'noopener');\n}\nexport function animate(fn) {\n const step = () => {\n fn();\n stepDisposable = scheduleAtNextAnimationFrame(step);\n };\n let stepDisposable = scheduleAtNextAnimationFrame(step);\n return toDisposable(() => stepDisposable.dispose());\n}\nRemoteAuthorities.setPreferredWebSchema(/^https:/.test(window.location.href) ? 'https' : 'http');\n/**\n * returns url('...')\n */\nexport function asCSSUrl(uri) {\n if (!uri) {\n return `url('')`;\n }\n return `url('${FileAccess.asBrowserUri(uri).toString(true).replace(/'/g, '%27')}')`;\n}\nexport function asCSSPropertyValue(value) {\n return `'${value.replace(/'/g, '%27')}'`;\n}\n// -- sanitize and trusted html\n/**\n * Hooks dompurify using `afterSanitizeAttributes` to check that all `href` and `src`\n * attributes are valid.\n */\nexport function hookDomPurifyHrefAndSrcSanitizer(allowedProtocols, allowDataImages = false) {\n // https://github.com/cure53/DOMPurify/blob/main/demos/hooks-scheme-allowlist.html\n // build an anchor to map URLs to\n const anchor = document.createElement('a');\n dompurify.addHook('afterSanitizeAttributes', (node) => {\n // check all href/src attributes for validity\n for (const attr of ['href', 'src']) {\n if (node.hasAttribute(attr)) {\n const attrValue = node.getAttribute(attr);\n if (attr === 'href' && attrValue.startsWith('#')) {\n // Allow fragment links\n continue;\n }\n anchor.href = attrValue;\n if (!allowedProtocols.includes(anchor.protocol.replace(/:$/, ''))) {\n if (allowDataImages && attr === 'src' && anchor.href.startsWith('data:')) {\n continue;\n }\n node.removeAttribute(attr);\n }\n }\n }\n });\n return toDisposable(() => {\n dompurify.removeHook('afterSanitizeAttributes');\n });\n}\nexport class ModifierKeyEmitter extends event.Emitter {\n constructor() {\n super();\n this._subscriptions = new DisposableStore();\n this._keyStatus = {\n altKey: false,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false\n };\n this._subscriptions.add(addDisposableListener(window, 'keydown', e => {\n if (e.defaultPrevented) {\n return;\n }\n const event = new StandardKeyboardEvent(e);\n // If Alt-key keydown event is repeated, ignore it #112347\n // Only known to be necessary for Alt-Key at the moment #115810\n if (event.keyCode === 6 /* KeyCode.Alt */ && e.repeat) {\n return;\n }\n if (e.altKey && !this._keyStatus.altKey) {\n this._keyStatus.lastKeyPressed = 'alt';\n }\n else if (e.ctrlKey && !this._keyStatus.ctrlKey) {\n this._keyStatus.lastKeyPressed = 'ctrl';\n }\n else if (e.metaKey && !this._keyStatus.metaKey) {\n this._keyStatus.lastKeyPressed = 'meta';\n }\n else if (e.shiftKey && !this._keyStatus.shiftKey) {\n this._keyStatus.lastKeyPressed = 'shift';\n }\n else if (event.keyCode !== 6 /* KeyCode.Alt */) {\n this._keyStatus.lastKeyPressed = undefined;\n }\n else {\n return;\n }\n this._keyStatus.altKey = e.altKey;\n this._keyStatus.ctrlKey = e.ctrlKey;\n this._keyStatus.metaKey = e.metaKey;\n this._keyStatus.shiftKey = e.shiftKey;\n if (this._keyStatus.lastKeyPressed) {\n this._keyStatus.event = e;\n this.fire(this._keyStatus);\n }\n }, true));\n this._subscriptions.add(addDisposableListener(window, 'keyup', e => {\n if (e.defaultPrevented) {\n return;\n }\n if (!e.altKey && this._keyStatus.altKey) {\n this._keyStatus.lastKeyReleased = 'alt';\n }\n else if (!e.ctrlKey && this._keyStatus.ctrlKey) {\n this._keyStatus.lastKeyReleased = 'ctrl';\n }\n else if (!e.metaKey && this._keyStatus.metaKey) {\n this._keyStatus.lastKeyReleased = 'meta';\n }\n else if (!e.shiftKey && this._keyStatus.shiftKey) {\n this._keyStatus.lastKeyReleased = 'shift';\n }\n else {\n this._keyStatus.lastKeyReleased = undefined;\n }\n if (this._keyStatus.lastKeyPressed !== this._keyStatus.lastKeyReleased) {\n this._keyStatus.lastKeyPressed = undefined;\n }\n this._keyStatus.altKey = e.altKey;\n this._keyStatus.ctrlKey = e.ctrlKey;\n this._keyStatus.metaKey = e.metaKey;\n this._keyStatus.shiftKey = e.shiftKey;\n if (this._keyStatus.lastKeyReleased) {\n this._keyStatus.event = e;\n this.fire(this._keyStatus);\n }\n }, true));\n this._subscriptions.add(addDisposableListener(document.body, 'mousedown', () => {\n this._keyStatus.lastKeyPressed = undefined;\n }, true));\n this._subscriptions.add(addDisposableListener(document.body, 'mouseup', () => {\n this._keyStatus.lastKeyPressed = undefined;\n }, true));\n this._subscriptions.add(addDisposableListener(document.body, 'mousemove', e => {\n if (e.buttons) {\n this._keyStatus.lastKeyPressed = undefined;\n }\n }, true));\n this._subscriptions.add(addDisposableListener(window, 'blur', () => {\n this.resetKeyStatus();\n }));\n }\n get keyStatus() {\n return this._keyStatus;\n }\n /**\n * Allows to explicitly reset the key status based on more knowledge (#109062)\n */\n resetKeyStatus() {\n this.doResetKeyStatus();\n this.fire(this._keyStatus);\n }\n doResetKeyStatus() {\n this._keyStatus = {\n altKey: false,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false\n };\n }\n static getInstance() {\n if (!ModifierKeyEmitter.instance) {\n ModifierKeyEmitter.instance = new ModifierKeyEmitter();\n }\n return ModifierKeyEmitter.instance;\n }\n dispose() {\n super.dispose();\n this._subscriptions.dispose();\n }\n}\nexport class DragAndDropObserver extends Disposable {\n constructor(element, callbacks) {\n super();\n this.element = element;\n this.callbacks = callbacks;\n // A helper to fix issues with repeated DRAG_ENTER / DRAG_LEAVE\n // calls see https://github.com/microsoft/vscode/issues/14470\n // when the element has child elements where the events are fired\n // repeadedly.\n this.counter = 0;\n // Allows to measure the duration of the drag operation.\n this.dragStartTime = 0;\n this.registerListeners();\n }\n registerListeners() {\n this._register(addDisposableListener(this.element, EventType.DRAG_ENTER, (e) => {\n this.counter++;\n this.dragStartTime = e.timeStamp;\n this.callbacks.onDragEnter(e);\n }));\n this._register(addDisposableListener(this.element, EventType.DRAG_OVER, (e) => {\n var _a, _b;\n e.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\n (_b = (_a = this.callbacks).onDragOver) === null || _b === void 0 ? void 0 : _b.call(_a, e, e.timeStamp - this.dragStartTime);\n }));\n this._register(addDisposableListener(this.element, EventType.DRAG_LEAVE, (e) => {\n this.counter--;\n if (this.counter === 0) {\n this.dragStartTime = 0;\n this.callbacks.onDragLeave(e);\n }\n }));\n this._register(addDisposableListener(this.element, EventType.DRAG_END, (e) => {\n this.counter = 0;\n this.dragStartTime = 0;\n this.callbacks.onDragEnd(e);\n }));\n this._register(addDisposableListener(this.element, EventType.DROP, (e) => {\n this.counter = 0;\n this.dragStartTime = 0;\n this.callbacks.onDrop(e);\n }));\n }\n}\nconst H_REGEX = /(?[\\w\\-]+)?(?:#(?[\\w\\-]+))?(?(?:\\.(?:[\\w\\-]+))*)(?:@(?(?:[\\w\\_])+))?/;\nexport function h(tag, ...args) {\n let attributes;\n let children;\n if (Array.isArray(args[0])) {\n attributes = {};\n children = args[0];\n }\n else {\n attributes = args[0] || {};\n children = args[1];\n }\n const match = H_REGEX.exec(tag);\n if (!match || !match.groups) {\n throw new Error('Bad use of h');\n }\n const tagName = match.groups['tag'] || 'div';\n const el = document.createElement(tagName);\n if (match.groups['id']) {\n el.id = match.groups['id'];\n }\n if (match.groups['class']) {\n el.className = match.groups['class'].replace(/\\./g, ' ').trim();\n }\n const result = {};\n if (match.groups['name']) {\n result[match.groups['name']] = el;\n }\n if (children) {\n for (const c of children) {\n if (c instanceof HTMLElement) {\n el.appendChild(c);\n }\n else if (typeof c === 'string') {\n el.append(c);\n }\n else {\n Object.assign(result, c);\n el.appendChild(c.root);\n }\n }\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (key === 'style') {\n for (const [cssKey, cssValue] of Object.entries(value)) {\n el.style.setProperty(camelCaseToHyphenCase(cssKey), typeof cssValue === 'number' ? cssValue + 'px' : '' + cssValue);\n }\n }\n else if (key === 'tabIndex') {\n el.tabIndex = value;\n }\n else {\n el.setAttribute(camelCaseToHyphenCase(key), value.toString());\n }\n }\n result['root'] = el;\n return result;\n}\nfunction camelCaseToHyphenCase(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n","/*! @license DOMPurify 2.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.1/LICENSE */\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\n\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\n\nvar regExpTest = unapply(RegExp.prototype.test);\n\nvar typeErrorCreate = unconstruct(TypeError);\n\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\n\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\nvar mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\nvar text = freeze(['#text']);\n\nvar html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\nvar svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.3.1';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, 'text/html');\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = stringToLowerCase(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Mitigate a problem with templates inside select */\n if (tagName === 'select' && regExpTest(/`);\n let beforeCount = 0;\n let afterCount = 0;\n let containsForeignElements = 0 /* ForeignElementType.None */;\n for (const lineDecoration of input.lineDecorations) {\n if (lineDecoration.type === 1 /* InlineDecorationType.Before */ || lineDecoration.type === 2 /* InlineDecorationType.After */) {\n sb.appendASCIIString(``);\n if (lineDecoration.type === 1 /* InlineDecorationType.Before */) {\n containsForeignElements |= 1 /* ForeignElementType.Before */;\n beforeCount++;\n }\n if (lineDecoration.type === 2 /* InlineDecorationType.After */) {\n containsForeignElements |= 2 /* ForeignElementType.After */;\n afterCount++;\n }\n }\n }\n sb.appendASCIIString(``);\n const characterMapping = new CharacterMapping(1, beforeCount + afterCount);\n characterMapping.setColumnInfo(1, beforeCount, 0, 0);\n return new RenderLineOutput(characterMapping, false, containsForeignElements);\n }\n // completely empty line\n sb.appendASCIIString('');\n return new RenderLineOutput(new CharacterMapping(0, 0), false, 0 /* ForeignElementType.None */);\n }\n return _renderLine(resolveRenderLineInput(input), sb);\n}\nexport class RenderLineOutput2 {\n constructor(characterMapping, html, containsRTL, containsForeignElements) {\n this.characterMapping = characterMapping;\n this.html = html;\n this.containsRTL = containsRTL;\n this.containsForeignElements = containsForeignElements;\n }\n}\nexport function renderViewLine2(input) {\n const sb = createStringBuilder(10000);\n const out = renderViewLine(input, sb);\n return new RenderLineOutput2(out.characterMapping, sb.build(), out.containsRTL, out.containsForeignElements);\n}\nclass ResolvedRenderLineInput {\n constructor(fontIsMonospace, canUseHalfwidthRightwardsArrow, lineContent, len, isOverflowing, parts, containsForeignElements, fauxIndentLength, tabSize, startVisibleColumn, containsRTL, spaceWidth, renderSpaceCharCode, renderWhitespace, renderControlCharacters) {\n this.fontIsMonospace = fontIsMonospace;\n this.canUseHalfwidthRightwardsArrow = canUseHalfwidthRightwardsArrow;\n this.lineContent = lineContent;\n this.len = len;\n this.isOverflowing = isOverflowing;\n this.parts = parts;\n this.containsForeignElements = containsForeignElements;\n this.fauxIndentLength = fauxIndentLength;\n this.tabSize = tabSize;\n this.startVisibleColumn = startVisibleColumn;\n this.containsRTL = containsRTL;\n this.spaceWidth = spaceWidth;\n this.renderSpaceCharCode = renderSpaceCharCode;\n this.renderWhitespace = renderWhitespace;\n this.renderControlCharacters = renderControlCharacters;\n //\n }\n}\nfunction resolveRenderLineInput(input) {\n const lineContent = input.lineContent;\n let isOverflowing;\n let len;\n if (input.stopRenderingLineAfter !== -1 && input.stopRenderingLineAfter < lineContent.length) {\n isOverflowing = true;\n len = input.stopRenderingLineAfter;\n }\n else {\n isOverflowing = false;\n len = lineContent.length;\n }\n let tokens = transformAndRemoveOverflowing(lineContent, input.containsRTL, input.lineTokens, input.fauxIndentLength, len);\n if (input.renderControlCharacters && !input.isBasicASCII) {\n // Calling `extractControlCharacters` before adding (possibly empty) line parts\n // for inline decorations. `extractControlCharacters` removes empty line parts.\n tokens = extractControlCharacters(lineContent, tokens);\n }\n if (input.renderWhitespace === 4 /* RenderWhitespace.All */ ||\n input.renderWhitespace === 1 /* RenderWhitespace.Boundary */ ||\n (input.renderWhitespace === 2 /* RenderWhitespace.Selection */ && !!input.selectionsOnLine) ||\n input.renderWhitespace === 3 /* RenderWhitespace.Trailing */) {\n tokens = _applyRenderWhitespace(input, lineContent, len, tokens);\n }\n let containsForeignElements = 0 /* ForeignElementType.None */;\n if (input.lineDecorations.length > 0) {\n for (let i = 0, len = input.lineDecorations.length; i < len; i++) {\n const lineDecoration = input.lineDecorations[i];\n if (lineDecoration.type === 3 /* InlineDecorationType.RegularAffectingLetterSpacing */) {\n // Pretend there are foreign elements... although not 100% accurate.\n containsForeignElements |= 1 /* ForeignElementType.Before */;\n }\n else if (lineDecoration.type === 1 /* InlineDecorationType.Before */) {\n containsForeignElements |= 1 /* ForeignElementType.Before */;\n }\n else if (lineDecoration.type === 2 /* InlineDecorationType.After */) {\n containsForeignElements |= 2 /* ForeignElementType.After */;\n }\n }\n tokens = _applyInlineDecorations(lineContent, len, tokens, input.lineDecorations);\n }\n if (!input.containsRTL) {\n // We can never split RTL text, as it ruins the rendering\n tokens = splitLargeTokens(lineContent, tokens, !input.isBasicASCII || input.fontLigatures);\n }\n return new ResolvedRenderLineInput(input.useMonospaceOptimizations, input.canUseHalfwidthRightwardsArrow, lineContent, len, isOverflowing, tokens, containsForeignElements, input.fauxIndentLength, input.tabSize, input.startVisibleColumn, input.containsRTL, input.spaceWidth, input.renderSpaceCharCode, input.renderWhitespace, input.renderControlCharacters);\n}\n/**\n * In the rendering phase, characters are always looped until token.endIndex.\n * Ensure that all tokens end before `len` and the last one ends precisely at `len`.\n */\nfunction transformAndRemoveOverflowing(lineContent, lineContainsRTL, tokens, fauxIndentLength, len) {\n const result = [];\n let resultLen = 0;\n // The faux indent part of the line should have no token type\n if (fauxIndentLength > 0) {\n result[resultLen++] = new LinePart(fauxIndentLength, '', 0, false);\n }\n let startOffset = fauxIndentLength;\n for (let tokenIndex = 0, tokensLen = tokens.getCount(); tokenIndex < tokensLen; tokenIndex++) {\n const endIndex = tokens.getEndOffset(tokenIndex);\n if (endIndex <= fauxIndentLength) {\n // The faux indent part of the line should have no token type\n continue;\n }\n const type = tokens.getClassName(tokenIndex);\n if (endIndex >= len) {\n const tokenContainsRTL = (lineContainsRTL ? strings.containsRTL(lineContent.substring(startOffset, len)) : false);\n result[resultLen++] = new LinePart(len, type, 0, tokenContainsRTL);\n break;\n }\n const tokenContainsRTL = (lineContainsRTL ? strings.containsRTL(lineContent.substring(startOffset, endIndex)) : false);\n result[resultLen++] = new LinePart(endIndex, type, 0, tokenContainsRTL);\n startOffset = endIndex;\n }\n return result;\n}\n/**\n * See https://github.com/microsoft/vscode/issues/6885.\n * It appears that having very large spans causes very slow reading of character positions.\n * So here we try to avoid that.\n */\nfunction splitLargeTokens(lineContent, tokens, onlyAtSpaces) {\n let lastTokenEndIndex = 0;\n const result = [];\n let resultLen = 0;\n if (onlyAtSpaces) {\n // Split only at spaces => we need to walk each character\n for (let i = 0, len = tokens.length; i < len; i++) {\n const token = tokens[i];\n const tokenEndIndex = token.endIndex;\n if (lastTokenEndIndex + 50 /* Constants.LongToken */ < tokenEndIndex) {\n const tokenType = token.type;\n const tokenMetadata = token.metadata;\n const tokenContainsRTL = token.containsRTL;\n let lastSpaceOffset = -1;\n let currTokenStart = lastTokenEndIndex;\n for (let j = lastTokenEndIndex; j < tokenEndIndex; j++) {\n if (lineContent.charCodeAt(j) === 32 /* CharCode.Space */) {\n lastSpaceOffset = j;\n }\n if (lastSpaceOffset !== -1 && j - currTokenStart >= 50 /* Constants.LongToken */) {\n // Split at `lastSpaceOffset` + 1\n result[resultLen++] = new LinePart(lastSpaceOffset + 1, tokenType, tokenMetadata, tokenContainsRTL);\n currTokenStart = lastSpaceOffset + 1;\n lastSpaceOffset = -1;\n }\n }\n if (currTokenStart !== tokenEndIndex) {\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata, tokenContainsRTL);\n }\n }\n else {\n result[resultLen++] = token;\n }\n lastTokenEndIndex = tokenEndIndex;\n }\n }\n else {\n // Split anywhere => we don't need to walk each character\n for (let i = 0, len = tokens.length; i < len; i++) {\n const token = tokens[i];\n const tokenEndIndex = token.endIndex;\n const diff = (tokenEndIndex - lastTokenEndIndex);\n if (diff > 50 /* Constants.LongToken */) {\n const tokenType = token.type;\n const tokenMetadata = token.metadata;\n const tokenContainsRTL = token.containsRTL;\n const piecesCount = Math.ceil(diff / 50 /* Constants.LongToken */);\n for (let j = 1; j < piecesCount; j++) {\n const pieceEndIndex = lastTokenEndIndex + (j * 50 /* Constants.LongToken */);\n result[resultLen++] = new LinePart(pieceEndIndex, tokenType, tokenMetadata, tokenContainsRTL);\n }\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata, tokenContainsRTL);\n }\n else {\n result[resultLen++] = token;\n }\n lastTokenEndIndex = tokenEndIndex;\n }\n }\n return result;\n}\nfunction isControlCharacter(charCode) {\n if (charCode < 32) {\n return (charCode !== 9 /* CharCode.Tab */);\n }\n if (charCode === 127) {\n // DEL\n return true;\n }\n if ((charCode >= 0x202A && charCode <= 0x202E)\n || (charCode >= 0x2066 && charCode <= 0x2069)\n || (charCode >= 0x200E && charCode <= 0x200F)\n || charCode === 0x061C) {\n // Unicode Directional Formatting Characters\n // LRE\tU+202A\tLEFT-TO-RIGHT EMBEDDING\n // RLE\tU+202B\tRIGHT-TO-LEFT EMBEDDING\n // PDF\tU+202C\tPOP DIRECTIONAL FORMATTING\n // LRO\tU+202D\tLEFT-TO-RIGHT OVERRIDE\n // RLO\tU+202E\tRIGHT-TO-LEFT OVERRIDE\n // LRI\tU+2066\tLEFT-TO-RIGHT ISOLATE\n // RLI\tU+2067\tRIGHT-TO-LEFT ISOLATE\n // FSI\tU+2068\tFIRST STRONG ISOLATE\n // PDI\tU+2069\tPOP DIRECTIONAL ISOLATE\n // LRM\tU+200E\tLEFT-TO-RIGHT MARK\n // RLM\tU+200F\tRIGHT-TO-LEFT MARK\n // ALM\tU+061C\tARABIC LETTER MARK\n return true;\n }\n return false;\n}\nfunction extractControlCharacters(lineContent, tokens) {\n const result = [];\n let lastLinePart = new LinePart(0, '', 0, false);\n let charOffset = 0;\n for (const token of tokens) {\n const tokenEndIndex = token.endIndex;\n for (; charOffset < tokenEndIndex; charOffset++) {\n const charCode = lineContent.charCodeAt(charOffset);\n if (isControlCharacter(charCode)) {\n if (charOffset > lastLinePart.endIndex) {\n // emit previous part if it has text\n lastLinePart = new LinePart(charOffset, token.type, token.metadata, token.containsRTL);\n result.push(lastLinePart);\n }\n lastLinePart = new LinePart(charOffset + 1, 'mtkcontrol', token.metadata, false);\n result.push(lastLinePart);\n }\n }\n if (charOffset > lastLinePart.endIndex) {\n // emit previous part if it has text\n lastLinePart = new LinePart(tokenEndIndex, token.type, token.metadata, token.containsRTL);\n result.push(lastLinePart);\n }\n }\n return result;\n}\n/**\n * Whitespace is rendered by \"replacing\" tokens with a special-purpose `mtkw` type that is later recognized in the rendering phase.\n * Moreover, a token is created for every visual indent because on some fonts the glyphs used for rendering whitespace (→ or ·) do not have the same width as  .\n * The rendering phase will generate `style=\"width:...\"` for these tokens.\n */\nfunction _applyRenderWhitespace(input, lineContent, len, tokens) {\n const continuesWithWrappedLine = input.continuesWithWrappedLine;\n const fauxIndentLength = input.fauxIndentLength;\n const tabSize = input.tabSize;\n const startVisibleColumn = input.startVisibleColumn;\n const useMonospaceOptimizations = input.useMonospaceOptimizations;\n const selections = input.selectionsOnLine;\n const onlyBoundary = (input.renderWhitespace === 1 /* RenderWhitespace.Boundary */);\n const onlyTrailing = (input.renderWhitespace === 3 /* RenderWhitespace.Trailing */);\n const generateLinePartForEachWhitespace = (input.renderSpaceWidth !== input.spaceWidth);\n const result = [];\n let resultLen = 0;\n let tokenIndex = 0;\n let tokenType = tokens[tokenIndex].type;\n let tokenContainsRTL = tokens[tokenIndex].containsRTL;\n let tokenEndIndex = tokens[tokenIndex].endIndex;\n const tokensLength = tokens.length;\n let lineIsEmptyOrWhitespace = false;\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n let lastNonWhitespaceIndex;\n if (firstNonWhitespaceIndex === -1) {\n lineIsEmptyOrWhitespace = true;\n firstNonWhitespaceIndex = len;\n lastNonWhitespaceIndex = len;\n }\n else {\n lastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\n }\n let wasInWhitespace = false;\n let currentSelectionIndex = 0;\n let currentSelection = selections && selections[currentSelectionIndex];\n let tmpIndent = startVisibleColumn % tabSize;\n for (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\n const chCode = lineContent.charCodeAt(charIndex);\n if (currentSelection && charIndex >= currentSelection.endOffset) {\n currentSelectionIndex++;\n currentSelection = selections && selections[currentSelectionIndex];\n }\n let isInWhitespace;\n if (charIndex < firstNonWhitespaceIndex || charIndex > lastNonWhitespaceIndex) {\n // in leading or trailing whitespace\n isInWhitespace = true;\n }\n else if (chCode === 9 /* CharCode.Tab */) {\n // a tab character is rendered both in all and boundary cases\n isInWhitespace = true;\n }\n else if (chCode === 32 /* CharCode.Space */) {\n // hit a space character\n if (onlyBoundary) {\n // rendering only boundary whitespace\n if (wasInWhitespace) {\n isInWhitespace = true;\n }\n else {\n const nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : 0 /* CharCode.Null */);\n isInWhitespace = (nextChCode === 32 /* CharCode.Space */ || nextChCode === 9 /* CharCode.Tab */);\n }\n }\n else {\n isInWhitespace = true;\n }\n }\n else {\n isInWhitespace = false;\n }\n // If rendering whitespace on selection, check that the charIndex falls within a selection\n if (isInWhitespace && selections) {\n isInWhitespace = !!currentSelection && currentSelection.startOffset <= charIndex && currentSelection.endOffset > charIndex;\n }\n // If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\n if (isInWhitespace && onlyTrailing) {\n isInWhitespace = lineIsEmptyOrWhitespace || charIndex > lastNonWhitespaceIndex;\n }\n if (isInWhitespace && tokenContainsRTL) {\n // If the token contains RTL text, breaking it up into multiple line parts\n // to render whitespace might affect the browser's bidi layout.\n //\n // We render whitespace in such tokens only if the whitespace\n // is the leading or the trailing whitespace of the line,\n // which doesn't affect the browser's bidi layout.\n if (charIndex >= firstNonWhitespaceIndex && charIndex <= lastNonWhitespaceIndex) {\n isInWhitespace = false;\n }\n }\n if (wasInWhitespace) {\n // was in whitespace token\n if (!isInWhitespace || (!useMonospaceOptimizations && tmpIndent >= tabSize)) {\n // leaving whitespace token or entering a new indent\n if (generateLinePartForEachWhitespace) {\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\n for (let i = lastEndIndex + 1; i <= charIndex; i++) {\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* LinePartMetadata.IS_WHITESPACE */, false);\n }\n }\n else {\n result[resultLen++] = new LinePart(charIndex, 'mtkw', 1 /* LinePartMetadata.IS_WHITESPACE */, false);\n }\n tmpIndent = tmpIndent % tabSize;\n }\n }\n else {\n // was in regular token\n if (charIndex === tokenEndIndex || (isInWhitespace && charIndex > fauxIndentLength)) {\n result[resultLen++] = new LinePart(charIndex, tokenType, 0, tokenContainsRTL);\n tmpIndent = tmpIndent % tabSize;\n }\n }\n if (chCode === 9 /* CharCode.Tab */) {\n tmpIndent = tabSize;\n }\n else if (strings.isFullWidthCharacter(chCode)) {\n tmpIndent += 2;\n }\n else {\n tmpIndent++;\n }\n wasInWhitespace = isInWhitespace;\n while (charIndex === tokenEndIndex) {\n tokenIndex++;\n if (tokenIndex < tokensLength) {\n tokenType = tokens[tokenIndex].type;\n tokenContainsRTL = tokens[tokenIndex].containsRTL;\n tokenEndIndex = tokens[tokenIndex].endIndex;\n }\n else {\n break;\n }\n }\n }\n let generateWhitespace = false;\n if (wasInWhitespace) {\n // was in whitespace token\n if (continuesWithWrappedLine && onlyBoundary) {\n const lastCharCode = (len > 0 ? lineContent.charCodeAt(len - 1) : 0 /* CharCode.Null */);\n const prevCharCode = (len > 1 ? lineContent.charCodeAt(len - 2) : 0 /* CharCode.Null */);\n const isSingleTrailingSpace = (lastCharCode === 32 /* CharCode.Space */ && (prevCharCode !== 32 /* CharCode.Space */ && prevCharCode !== 9 /* CharCode.Tab */));\n if (!isSingleTrailingSpace) {\n generateWhitespace = true;\n }\n }\n else {\n generateWhitespace = true;\n }\n }\n if (generateWhitespace) {\n if (generateLinePartForEachWhitespace) {\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\n for (let i = lastEndIndex + 1; i <= len; i++) {\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* LinePartMetadata.IS_WHITESPACE */, false);\n }\n }\n else {\n result[resultLen++] = new LinePart(len, 'mtkw', 1 /* LinePartMetadata.IS_WHITESPACE */, false);\n }\n }\n else {\n result[resultLen++] = new LinePart(len, tokenType, 0, tokenContainsRTL);\n }\n return result;\n}\n/**\n * Inline decorations are \"merged\" on top of tokens.\n * Special care must be taken when multiple inline decorations are at play and they overlap.\n */\nfunction _applyInlineDecorations(lineContent, len, tokens, _lineDecorations) {\n _lineDecorations.sort(LineDecoration.compare);\n const lineDecorations = LineDecorationsNormalizer.normalize(lineContent, _lineDecorations);\n const lineDecorationsLen = lineDecorations.length;\n let lineDecorationIndex = 0;\n const result = [];\n let resultLen = 0;\n let lastResultEndIndex = 0;\n for (let tokenIndex = 0, len = tokens.length; tokenIndex < len; tokenIndex++) {\n const token = tokens[tokenIndex];\n const tokenEndIndex = token.endIndex;\n const tokenType = token.type;\n const tokenMetadata = token.metadata;\n const tokenContainsRTL = token.containsRTL;\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset < tokenEndIndex) {\n const lineDecoration = lineDecorations[lineDecorationIndex];\n if (lineDecoration.startOffset > lastResultEndIndex) {\n lastResultEndIndex = lineDecoration.startOffset;\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata, tokenContainsRTL);\n }\n if (lineDecoration.endOffset + 1 <= tokenEndIndex) {\n // This line decoration ends before this token ends\n lastResultEndIndex = lineDecoration.endOffset + 1;\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata, tokenContainsRTL);\n lineDecorationIndex++;\n }\n else {\n // This line decoration continues on to the next token\n lastResultEndIndex = tokenEndIndex;\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata, tokenContainsRTL);\n break;\n }\n }\n if (tokenEndIndex > lastResultEndIndex) {\n lastResultEndIndex = tokenEndIndex;\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata, tokenContainsRTL);\n }\n }\n const lastTokenEndIndex = tokens[tokens.length - 1].endIndex;\n if (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\n const lineDecoration = lineDecorations[lineDecorationIndex];\n result[resultLen++] = new LinePart(lastResultEndIndex, lineDecoration.className, lineDecoration.metadata, false);\n lineDecorationIndex++;\n }\n }\n return result;\n}\n/**\n * This function is on purpose not split up into multiple functions to allow runtime type inference (i.e. performance reasons).\n * Notice how all the needed data is fully resolved and passed in (i.e. no other calls).\n */\nfunction _renderLine(input, sb) {\n const fontIsMonospace = input.fontIsMonospace;\n const canUseHalfwidthRightwardsArrow = input.canUseHalfwidthRightwardsArrow;\n const containsForeignElements = input.containsForeignElements;\n const lineContent = input.lineContent;\n const len = input.len;\n const isOverflowing = input.isOverflowing;\n const parts = input.parts;\n const fauxIndentLength = input.fauxIndentLength;\n const tabSize = input.tabSize;\n const startVisibleColumn = input.startVisibleColumn;\n const containsRTL = input.containsRTL;\n const spaceWidth = input.spaceWidth;\n const renderSpaceCharCode = input.renderSpaceCharCode;\n const renderWhitespace = input.renderWhitespace;\n const renderControlCharacters = input.renderControlCharacters;\n const characterMapping = new CharacterMapping(len + 1, parts.length);\n let lastCharacterMappingDefined = false;\n let charIndex = 0;\n let visibleColumn = startVisibleColumn;\n let charOffsetInPart = 0; // the character offset in the current part\n let charHorizontalOffset = 0; // the character horizontal position in terms of chars relative to line start\n let partDisplacement = 0;\n if (containsRTL) {\n sb.appendASCIIString('');\n }\n else {\n sb.appendASCIIString('');\n }\n for (let partIndex = 0, tokensLen = parts.length; partIndex < tokensLen; partIndex++) {\n const part = parts[partIndex];\n const partEndIndex = part.endIndex;\n const partType = part.type;\n const partContainsRTL = part.containsRTL;\n const partRendersWhitespace = (renderWhitespace !== 0 /* RenderWhitespace.None */ && part.isWhitespace());\n const partRendersWhitespaceWithWidth = partRendersWhitespace && !fontIsMonospace && (partType === 'mtkw' /*only whitespace*/ || !containsForeignElements);\n const partIsEmptyAndHasPseudoAfter = (charIndex === partEndIndex && part.isPseudoAfter());\n charOffsetInPart = 0;\n sb.appendASCIIString('= fauxIndentLength) {\n _visibleColumn += charWidth;\n }\n }\n }\n if (partRendersWhitespaceWithWidth) {\n sb.appendASCIIString(' style=\"width:');\n sb.appendASCIIString(String(spaceWidth * partWidth));\n sb.appendASCIIString('px\"');\n }\n sb.appendASCII(62 /* CharCode.GreaterThan */);\n for (; charIndex < partEndIndex; charIndex++) {\n characterMapping.setColumnInfo(charIndex + 1, partIndex - partDisplacement, charOffsetInPart, charHorizontalOffset);\n partDisplacement = 0;\n const charCode = lineContent.charCodeAt(charIndex);\n let producedCharacters;\n let charWidth;\n if (charCode === 9 /* CharCode.Tab */) {\n producedCharacters = (tabSize - (visibleColumn % tabSize)) | 0;\n charWidth = producedCharacters;\n if (!canUseHalfwidthRightwardsArrow || charWidth > 1) {\n sb.write1(0x2192); // RIGHTWARDS ARROW\n }\n else {\n sb.write1(0xFFEB); // HALFWIDTH RIGHTWARDS ARROW\n }\n for (let space = 2; space <= charWidth; space++) {\n sb.write1(0xA0); //  \n }\n }\n else { // must be CharCode.Space\n producedCharacters = 2;\n charWidth = 1;\n sb.write1(renderSpaceCharCode); // · or word separator middle dot\n sb.write1(0x200C); // ZERO WIDTH NON-JOINER\n }\n charOffsetInPart += producedCharacters;\n charHorizontalOffset += charWidth;\n if (charIndex >= fauxIndentLength) {\n visibleColumn += charWidth;\n }\n }\n }\n else {\n sb.appendASCII(62 /* CharCode.GreaterThan */);\n for (; charIndex < partEndIndex; charIndex++) {\n characterMapping.setColumnInfo(charIndex + 1, partIndex - partDisplacement, charOffsetInPart, charHorizontalOffset);\n partDisplacement = 0;\n const charCode = lineContent.charCodeAt(charIndex);\n let producedCharacters = 1;\n let charWidth = 1;\n switch (charCode) {\n case 9 /* CharCode.Tab */:\n producedCharacters = (tabSize - (visibleColumn % tabSize));\n charWidth = producedCharacters;\n for (let space = 1; space <= producedCharacters; space++) {\n sb.write1(0xA0); //  \n }\n break;\n case 32 /* CharCode.Space */:\n sb.write1(0xA0); //  \n break;\n case 60 /* CharCode.LessThan */:\n sb.appendASCIIString('<');\n break;\n case 62 /* CharCode.GreaterThan */:\n sb.appendASCIIString('>');\n break;\n case 38 /* CharCode.Ampersand */:\n sb.appendASCIIString('&');\n break;\n case 0 /* CharCode.Null */:\n if (renderControlCharacters) {\n // See https://unicode-table.com/en/blocks/control-pictures/\n sb.write1(9216);\n }\n else {\n sb.appendASCIIString('�');\n }\n break;\n case 65279 /* CharCode.UTF8_BOM */:\n case 8232 /* CharCode.LINE_SEPARATOR */:\n case 8233 /* CharCode.PARAGRAPH_SEPARATOR */:\n case 133 /* CharCode.NEXT_LINE */:\n sb.write1(0xFFFD);\n break;\n default:\n if (strings.isFullWidthCharacter(charCode)) {\n charWidth++;\n }\n // See https://unicode-table.com/en/blocks/control-pictures/\n if (renderControlCharacters && charCode < 32) {\n sb.write1(9216 + charCode);\n }\n else if (renderControlCharacters && charCode === 127) {\n // DEL\n sb.write1(9249);\n }\n else if (renderControlCharacters && isControlCharacter(charCode)) {\n sb.appendASCIIString('[U+');\n sb.appendASCIIString(to4CharHex(charCode));\n sb.appendASCIIString(']');\n producedCharacters = 8;\n charWidth = producedCharacters;\n }\n else {\n sb.write1(charCode);\n }\n }\n charOffsetInPart += producedCharacters;\n charHorizontalOffset += charWidth;\n if (charIndex >= fauxIndentLength) {\n visibleColumn += charWidth;\n }\n }\n }\n if (partIsEmptyAndHasPseudoAfter) {\n partDisplacement++;\n }\n else {\n partDisplacement = 0;\n }\n if (charIndex >= len && !lastCharacterMappingDefined && part.isPseudoAfter()) {\n lastCharacterMappingDefined = true;\n characterMapping.setColumnInfo(charIndex + 1, partIndex, charOffsetInPart, charHorizontalOffset);\n }\n sb.appendASCIIString('');\n }\n if (!lastCharacterMappingDefined) {\n // When getting client rects for the last character, we will position the\n // text range at the end of the span, insteaf of at the beginning of next span\n characterMapping.setColumnInfo(len + 1, parts.length - 1, charOffsetInPart, charHorizontalOffset);\n }\n if (isOverflowing) {\n sb.appendASCIIString('');\n }\n sb.appendASCIIString('');\n return new RenderLineOutput(characterMapping, containsRTL, containsForeignElements);\n}\nfunction to4CharHex(n) {\n return n.toString(16).toUpperCase().padStart(4, '0');\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as strings from '../../base/common/strings.js';\nimport { Range } from './core/range.js';\nexport class Viewport {\n constructor(top, left, width, height) {\n this._viewportBrand = undefined;\n this.top = top | 0;\n this.left = left | 0;\n this.width = width | 0;\n this.height = height | 0;\n }\n}\nexport class MinimapLinesRenderingData {\n constructor(tabSize, data) {\n this.tabSize = tabSize;\n this.data = data;\n }\n}\nexport class ViewLineData {\n constructor(content, continuesWithWrappedLine, minColumn, maxColumn, startVisibleColumn, tokens, inlineDecorations) {\n this._viewLineDataBrand = undefined;\n this.content = content;\n this.continuesWithWrappedLine = continuesWithWrappedLine;\n this.minColumn = minColumn;\n this.maxColumn = maxColumn;\n this.startVisibleColumn = startVisibleColumn;\n this.tokens = tokens;\n this.inlineDecorations = inlineDecorations;\n }\n}\nexport class ViewLineRenderingData {\n constructor(minColumn, maxColumn, content, continuesWithWrappedLine, mightContainRTL, mightContainNonBasicASCII, tokens, inlineDecorations, tabSize, startVisibleColumn) {\n this.minColumn = minColumn;\n this.maxColumn = maxColumn;\n this.content = content;\n this.continuesWithWrappedLine = continuesWithWrappedLine;\n this.isBasicASCII = ViewLineRenderingData.isBasicASCII(content, mightContainNonBasicASCII);\n this.containsRTL = ViewLineRenderingData.containsRTL(content, this.isBasicASCII, mightContainRTL);\n this.tokens = tokens;\n this.inlineDecorations = inlineDecorations;\n this.tabSize = tabSize;\n this.startVisibleColumn = startVisibleColumn;\n }\n static isBasicASCII(lineContent, mightContainNonBasicASCII) {\n if (mightContainNonBasicASCII) {\n return strings.isBasicASCII(lineContent);\n }\n return true;\n }\n static containsRTL(lineContent, isBasicASCII, mightContainRTL) {\n if (!isBasicASCII && mightContainRTL) {\n return strings.containsRTL(lineContent);\n }\n return false;\n }\n}\nexport class InlineDecoration {\n constructor(range, inlineClassName, type) {\n this.range = range;\n this.inlineClassName = inlineClassName;\n this.type = type;\n }\n}\nexport class SingleLineInlineDecoration {\n constructor(startOffset, endOffset, inlineClassName, inlineClassNameAffectsLetterSpacing) {\n this.startOffset = startOffset;\n this.endOffset = endOffset;\n this.inlineClassName = inlineClassName;\n this.inlineClassNameAffectsLetterSpacing = inlineClassNameAffectsLetterSpacing;\n }\n toInlineDecoration(lineNumber) {\n return new InlineDecoration(new Range(lineNumber, this.startOffset + 1, lineNumber, this.endOffset + 1), this.inlineClassName, this.inlineClassNameAffectsLetterSpacing ? 3 /* InlineDecorationType.RegularAffectingLetterSpacing */ : 0 /* InlineDecorationType.Regular */);\n }\n}\nexport class ViewModelDecoration {\n constructor(range, options) {\n this._viewModelDecorationBrand = undefined;\n this.range = range;\n this.options = options;\n }\n}\nexport class OverviewRulerDecorationsGroup {\n constructor(color, zIndex, \n /**\n * Decorations are encoded in a number array using the following scheme:\n * - 3*i = lane\n * - 3*i+1 = startLineNumber\n * - 3*i+2 = endLineNumber\n */\n data) {\n this.color = color;\n this.zIndex = zIndex;\n this.data = data;\n }\n static cmp(a, b) {\n if (a.zIndex === b.zIndex) {\n if (a.color < b.color) {\n return -1;\n }\n if (a.color > b.color) {\n return 1;\n }\n return 0;\n }\n return a.zIndex - b.zIndex;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class ColorZone {\n constructor(from, to, colorId) {\n this._colorZoneBrand = undefined;\n this.from = from | 0;\n this.to = to | 0;\n this.colorId = colorId | 0;\n }\n static compare(a, b) {\n if (a.colorId === b.colorId) {\n if (a.from === b.from) {\n return a.to - b.to;\n }\n return a.from - b.from;\n }\n return a.colorId - b.colorId;\n }\n}\n/**\n * A zone in the overview ruler\n */\nexport class OverviewRulerZone {\n constructor(startLineNumber, endLineNumber, heightInLines, color) {\n this._overviewRulerZoneBrand = undefined;\n this.startLineNumber = startLineNumber;\n this.endLineNumber = endLineNumber;\n this.heightInLines = heightInLines;\n this.color = color;\n this._colorZone = null;\n }\n static compare(a, b) {\n if (a.color === b.color) {\n if (a.startLineNumber === b.startLineNumber) {\n if (a.heightInLines === b.heightInLines) {\n return a.endLineNumber - b.endLineNumber;\n }\n return a.heightInLines - b.heightInLines;\n }\n return a.startLineNumber - b.startLineNumber;\n }\n return a.color < b.color ? -1 : 1;\n }\n setColorZone(colorZone) {\n this._colorZone = colorZone;\n }\n getColorZones() {\n return this._colorZone;\n }\n}\nexport class OverviewZoneManager {\n constructor(getVerticalOffsetForLine) {\n this._getVerticalOffsetForLine = getVerticalOffsetForLine;\n this._zones = [];\n this._colorZonesInvalid = false;\n this._lineHeight = 0;\n this._domWidth = 0;\n this._domHeight = 0;\n this._outerHeight = 0;\n this._pixelRatio = 1;\n this._lastAssignedId = 0;\n this._color2Id = Object.create(null);\n this._id2Color = [];\n }\n getId2Color() {\n return this._id2Color;\n }\n setZones(newZones) {\n this._zones = newZones;\n this._zones.sort(OverviewRulerZone.compare);\n }\n setLineHeight(lineHeight) {\n if (this._lineHeight === lineHeight) {\n return false;\n }\n this._lineHeight = lineHeight;\n this._colorZonesInvalid = true;\n return true;\n }\n setPixelRatio(pixelRatio) {\n this._pixelRatio = pixelRatio;\n this._colorZonesInvalid = true;\n }\n getDOMWidth() {\n return this._domWidth;\n }\n getCanvasWidth() {\n return this._domWidth * this._pixelRatio;\n }\n setDOMWidth(width) {\n if (this._domWidth === width) {\n return false;\n }\n this._domWidth = width;\n this._colorZonesInvalid = true;\n return true;\n }\n getDOMHeight() {\n return this._domHeight;\n }\n getCanvasHeight() {\n return this._domHeight * this._pixelRatio;\n }\n setDOMHeight(height) {\n if (this._domHeight === height) {\n return false;\n }\n this._domHeight = height;\n this._colorZonesInvalid = true;\n return true;\n }\n getOuterHeight() {\n return this._outerHeight;\n }\n setOuterHeight(outerHeight) {\n if (this._outerHeight === outerHeight) {\n return false;\n }\n this._outerHeight = outerHeight;\n this._colorZonesInvalid = true;\n return true;\n }\n resolveColorZones() {\n const colorZonesInvalid = this._colorZonesInvalid;\n const lineHeight = Math.floor(this._lineHeight);\n const totalHeight = Math.floor(this.getCanvasHeight());\n const outerHeight = Math.floor(this._outerHeight);\n const heightRatio = totalHeight / outerHeight;\n const halfMinimumHeight = Math.floor(4 /* Constants.MINIMUM_HEIGHT */ * this._pixelRatio / 2);\n const allColorZones = [];\n for (let i = 0, len = this._zones.length; i < len; i++) {\n const zone = this._zones[i];\n if (!colorZonesInvalid) {\n const colorZone = zone.getColorZones();\n if (colorZone) {\n allColorZones.push(colorZone);\n continue;\n }\n }\n const offset1 = this._getVerticalOffsetForLine(zone.startLineNumber);\n const offset2 = (zone.heightInLines === 0\n ? this._getVerticalOffsetForLine(zone.endLineNumber) + lineHeight\n : offset1 + zone.heightInLines * lineHeight);\n const y1 = Math.floor(heightRatio * offset1);\n const y2 = Math.floor(heightRatio * offset2);\n let ycenter = Math.floor((y1 + y2) / 2);\n let halfHeight = (y2 - ycenter);\n if (halfHeight < halfMinimumHeight) {\n halfHeight = halfMinimumHeight;\n }\n if (ycenter - halfHeight < 0) {\n ycenter = halfHeight;\n }\n if (ycenter + halfHeight > totalHeight) {\n ycenter = totalHeight - halfHeight;\n }\n const color = zone.color;\n let colorId = this._color2Id[color];\n if (!colorId) {\n colorId = (++this._lastAssignedId);\n this._color2Id[color] = colorId;\n this._id2Color[colorId] = color;\n }\n const colorZone = new ColorZone(ycenter - halfHeight, ycenter + halfHeight, colorId);\n zone.setColorZone(colorZone);\n allColorZones.push(colorZone);\n }\n this._colorZonesInvalid = false;\n allColorZones.sort(ColorZone.compare);\n return allColorZones;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Position } from '../core/position.js';\nimport { Range } from '../core/range.js';\nimport { InlineDecoration, ViewModelDecoration } from '../viewModel.js';\nimport { filterValidationDecorations } from '../config/editorOptions.js';\nexport class ViewModelDecorations {\n constructor(editorId, model, configuration, linesCollection, coordinatesConverter) {\n this.editorId = editorId;\n this.model = model;\n this.configuration = configuration;\n this._linesCollection = linesCollection;\n this._coordinatesConverter = coordinatesConverter;\n this._decorationsCache = Object.create(null);\n this._cachedModelDecorationsResolver = null;\n this._cachedModelDecorationsResolverViewRange = null;\n }\n _clearCachedModelDecorationsResolver() {\n this._cachedModelDecorationsResolver = null;\n this._cachedModelDecorationsResolverViewRange = null;\n }\n dispose() {\n this._decorationsCache = Object.create(null);\n this._clearCachedModelDecorationsResolver();\n }\n reset() {\n this._decorationsCache = Object.create(null);\n this._clearCachedModelDecorationsResolver();\n }\n onModelDecorationsChanged() {\n this._decorationsCache = Object.create(null);\n this._clearCachedModelDecorationsResolver();\n }\n onLineMappingChanged() {\n this._decorationsCache = Object.create(null);\n this._clearCachedModelDecorationsResolver();\n }\n _getOrCreateViewModelDecoration(modelDecoration) {\n const id = modelDecoration.id;\n let r = this._decorationsCache[id];\n if (!r) {\n const modelRange = modelDecoration.range;\n const options = modelDecoration.options;\n let viewRange;\n if (options.isWholeLine) {\n const start = this._coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.startLineNumber, 1), 0 /* PositionAffinity.Left */);\n const end = this._coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.endLineNumber, this.model.getLineMaxColumn(modelRange.endLineNumber)), 1 /* PositionAffinity.Right */);\n viewRange = new Range(start.lineNumber, start.column, end.lineNumber, end.column);\n }\n else {\n // For backwards compatibility reasons, we want injected text before any decoration.\n // Thus, move decorations to the right.\n viewRange = this._coordinatesConverter.convertModelRangeToViewRange(modelRange, 1 /* PositionAffinity.Right */);\n }\n r = new ViewModelDecoration(viewRange, options);\n this._decorationsCache[id] = r;\n }\n return r;\n }\n getDecorationsViewportData(viewRange) {\n let cacheIsValid = (this._cachedModelDecorationsResolver !== null);\n cacheIsValid = cacheIsValid && (viewRange.equalsRange(this._cachedModelDecorationsResolverViewRange));\n if (!cacheIsValid) {\n this._cachedModelDecorationsResolver = this._getDecorationsInRange(viewRange);\n this._cachedModelDecorationsResolverViewRange = viewRange;\n }\n return this._cachedModelDecorationsResolver;\n }\n getInlineDecorationsOnLine(lineNumber) {\n const range = new Range(lineNumber, this._linesCollection.getViewLineMinColumn(lineNumber), lineNumber, this._linesCollection.getViewLineMaxColumn(lineNumber));\n return this._getDecorationsInRange(range).inlineDecorations[0];\n }\n _getDecorationsInRange(viewRange) {\n const modelDecorations = this._linesCollection.getDecorationsInRange(viewRange, this.editorId, filterValidationDecorations(this.configuration.options));\n const startLineNumber = viewRange.startLineNumber;\n const endLineNumber = viewRange.endLineNumber;\n const decorationsInViewport = [];\n let decorationsInViewportLen = 0;\n const inlineDecorations = [];\n for (let j = startLineNumber; j <= endLineNumber; j++) {\n inlineDecorations[j - startLineNumber] = [];\n }\n for (let i = 0, len = modelDecorations.length; i < len; i++) {\n const modelDecoration = modelDecorations[i];\n const decorationOptions = modelDecoration.options;\n if (!isModelDecorationVisible(this.model, modelDecoration)) {\n continue;\n }\n const viewModelDecoration = this._getOrCreateViewModelDecoration(modelDecoration);\n const viewRange = viewModelDecoration.range;\n decorationsInViewport[decorationsInViewportLen++] = viewModelDecoration;\n if (decorationOptions.inlineClassName) {\n const inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, decorationOptions.inlineClassNameAffectsLetterSpacing ? 3 /* InlineDecorationType.RegularAffectingLetterSpacing */ : 0 /* InlineDecorationType.Regular */);\n const intersectedStartLineNumber = Math.max(startLineNumber, viewRange.startLineNumber);\n const intersectedEndLineNumber = Math.min(endLineNumber, viewRange.endLineNumber);\n for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) {\n inlineDecorations[j - startLineNumber].push(inlineDecoration);\n }\n }\n if (decorationOptions.beforeContentClassName) {\n if (startLineNumber <= viewRange.startLineNumber && viewRange.startLineNumber <= endLineNumber) {\n const inlineDecoration = new InlineDecoration(new Range(viewRange.startLineNumber, viewRange.startColumn, viewRange.startLineNumber, viewRange.startColumn), decorationOptions.beforeContentClassName, 1 /* InlineDecorationType.Before */);\n inlineDecorations[viewRange.startLineNumber - startLineNumber].push(inlineDecoration);\n }\n }\n if (decorationOptions.afterContentClassName) {\n if (startLineNumber <= viewRange.endLineNumber && viewRange.endLineNumber <= endLineNumber) {\n const inlineDecoration = new InlineDecoration(new Range(viewRange.endLineNumber, viewRange.endColumn, viewRange.endLineNumber, viewRange.endColumn), decorationOptions.afterContentClassName, 2 /* InlineDecorationType.After */);\n inlineDecorations[viewRange.endLineNumber - startLineNumber].push(inlineDecoration);\n }\n }\n }\n return {\n decorations: decorationsInViewport,\n inlineDecorations: inlineDecorations\n };\n }\n}\nexport function isModelDecorationVisible(model, decoration) {\n if (decoration.options.hideInCommentTokens && isModelDecorationInComment(model, decoration)) {\n return false;\n }\n if (decoration.options.hideInStringTokens && isModelDecorationInString(model, decoration)) {\n return false;\n }\n return true;\n}\nexport function isModelDecorationInComment(model, decoration) {\n return testTokensInRange(model, decoration.range, (tokenType) => tokenType === 1 /* StandardTokenType.Comment */);\n}\nexport function isModelDecorationInString(model, decoration) {\n return testTokensInRange(model, decoration.range, (tokenType) => tokenType === 2 /* StandardTokenType.String */);\n}\n/**\n * Calls the callback for every token that intersects the range.\n * If the callback returns `false`, iteration stops and `false` is returned.\n * Otherwise, `true` is returned.\n */\nfunction testTokensInRange(model, range, callback) {\n for (let lineNumber = range.startLineNumber; lineNumber <= range.endLineNumber; lineNumber++) {\n const lineTokens = model.tokenization.getLineTokens(lineNumber);\n const isFirstLine = lineNumber === range.startLineNumber;\n const isEndLine = lineNumber === range.endLineNumber;\n let tokenIdx = isFirstLine ? lineTokens.findTokenIndexAtOffset(range.startColumn - 1) : 0;\n while (tokenIdx < lineTokens.getCount()) {\n if (isEndLine) {\n const startOffset = lineTokens.getStartOffset(tokenIdx);\n if (startOffset > range.endColumn - 1) {\n break;\n }\n }\n const callbackResult = callback(lineTokens.getStandardTokenType(tokenIdx));\n if (!callbackResult) {\n return false;\n }\n tokenIdx++;\n }\n }\n return true;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport './anchorSelect.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { localize } from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nexport const SelectionAnchorSet = new RawContextKey('selectionAnchorSet', false);\nlet SelectionAnchorController = class SelectionAnchorController {\n constructor(editor, contextKeyService) {\n this.editor = editor;\n this.selectionAnchorSetContextKey = SelectionAnchorSet.bindTo(contextKeyService);\n this.modelChangeListener = editor.onDidChangeModel(() => this.selectionAnchorSetContextKey.reset());\n }\n static get(editor) {\n return editor.getContribution(SelectionAnchorController.ID);\n }\n setSelectionAnchor() {\n if (this.editor.hasModel()) {\n const position = this.editor.getPosition();\n this.editor.changeDecorations((accessor) => {\n if (this.decorationId) {\n accessor.removeDecoration(this.decorationId);\n }\n this.decorationId = accessor.addDecoration(Selection.fromPositions(position, position), {\n description: 'selection-anchor',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n hoverMessage: new MarkdownString().appendText(localize('selectionAnchor', \"Selection Anchor\")),\n className: 'selection-anchor'\n });\n });\n this.selectionAnchorSetContextKey.set(!!this.decorationId);\n alert(localize('anchorSet', \"Anchor set at {0}:{1}\", position.lineNumber, position.column));\n }\n }\n goToSelectionAnchor() {\n if (this.editor.hasModel() && this.decorationId) {\n const anchorPosition = this.editor.getModel().getDecorationRange(this.decorationId);\n if (anchorPosition) {\n this.editor.setPosition(anchorPosition.getStartPosition());\n }\n }\n }\n selectFromAnchorToCursor() {\n if (this.editor.hasModel() && this.decorationId) {\n const start = this.editor.getModel().getDecorationRange(this.decorationId);\n if (start) {\n const end = this.editor.getPosition();\n this.editor.setSelection(Selection.fromPositions(start.getStartPosition(), end));\n this.cancelSelectionAnchor();\n }\n }\n }\n cancelSelectionAnchor() {\n if (this.decorationId) {\n const decorationId = this.decorationId;\n this.editor.changeDecorations((accessor) => {\n accessor.removeDecoration(decorationId);\n this.decorationId = undefined;\n });\n this.selectionAnchorSetContextKey.set(false);\n }\n }\n dispose() {\n this.cancelSelectionAnchor();\n this.modelChangeListener.dispose();\n }\n};\nSelectionAnchorController.ID = 'editor.contrib.selectionAnchorController';\nSelectionAnchorController = __decorate([\n __param(1, IContextKeyService)\n], SelectionAnchorController);\nclass SetSelectionAnchor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.setSelectionAnchor',\n label: localize('setSelectionAnchor', \"Set Selection Anchor\"),\n alias: 'Set Selection Anchor',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 32 /* KeyCode.KeyB */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.setSelectionAnchor();\n });\n }\n}\nclass GoToSelectionAnchor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.goToSelectionAnchor',\n label: localize('goToSelectionAnchor', \"Go to Selection Anchor\"),\n alias: 'Go to Selection Anchor',\n precondition: SelectionAnchorSet,\n });\n }\n run(_accessor, editor) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.goToSelectionAnchor();\n });\n }\n}\nclass SelectFromAnchorToCursor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.selectFromAnchorToCursor',\n label: localize('selectFromAnchorToCursor', \"Select from Anchor to Cursor\"),\n alias: 'Select from Anchor to Cursor',\n precondition: SelectionAnchorSet,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.selectFromAnchorToCursor();\n });\n }\n}\nclass CancelSelectionAnchor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.cancelSelectionAnchor',\n label: localize('cancelSelectionAnchor', \"Cancel Selection Anchor\"),\n alias: 'Cancel Selection Anchor',\n precondition: SelectionAnchorSet,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 9 /* KeyCode.Escape */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = SelectionAnchorController.get(editor)) === null || _a === void 0 ? void 0 : _a.cancelSelectionAnchor();\n });\n }\n}\nregisterEditorContribution(SelectionAnchorController.ID, SelectionAnchorController);\nregisterEditorAction(SetSelectionAnchor);\nregisterEditorAction(GoToSelectionAnchor);\nregisterEditorAction(SelectFromAnchorToCursor);\nregisterEditorAction(CancelSelectionAnchor);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport './bracketMatching.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { editorBracketMatchBackground, editorBracketMatchBorder } from '../../../common/core/editorColorRegistry.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant, themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nconst overviewRulerBracketMatchForeground = registerColor('editorOverviewRuler.bracketMatchForeground', { dark: '#A0A0A0', light: '#A0A0A0', hcDark: '#A0A0A0', hcLight: '#A0A0A0' }, nls.localize('overviewRulerBracketMatchForeground', 'Overview ruler marker color for matching brackets.'));\nclass JumpToBracketAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.jumpToBracket',\n label: nls.localize('smartSelect.jumpBracket', \"Go to Bracket\"),\n alias: 'Go to Bracket',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 88 /* KeyCode.Backslash */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n var _a;\n (_a = BracketMatchingController.get(editor)) === null || _a === void 0 ? void 0 : _a.jumpToBracket();\n }\n}\nclass SelectToBracketAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.selectToBracket',\n label: nls.localize('smartSelect.selectToBracket', \"Select to Bracket\"),\n alias: 'Select to Bracket',\n precondition: undefined,\n description: {\n description: `Select to Bracket`,\n args: [{\n name: 'args',\n schema: {\n type: 'object',\n properties: {\n 'selectBrackets': {\n type: 'boolean',\n default: true\n }\n },\n }\n }]\n }\n });\n }\n run(accessor, editor, args) {\n var _a;\n let selectBrackets = true;\n if (args && args.selectBrackets === false) {\n selectBrackets = false;\n }\n (_a = BracketMatchingController.get(editor)) === null || _a === void 0 ? void 0 : _a.selectToBracket(selectBrackets);\n }\n}\nclass BracketsData {\n constructor(position, brackets, options) {\n this.position = position;\n this.brackets = brackets;\n this.options = options;\n }\n}\nexport class BracketMatchingController extends Disposable {\n constructor(editor) {\n super();\n this._editor = editor;\n this._lastBracketsData = [];\n this._lastVersionId = 0;\n this._decorations = this._editor.createDecorationsCollection();\n this._updateBracketsSoon = this._register(new RunOnceScheduler(() => this._updateBrackets(), 50));\n this._matchBrackets = this._editor.getOption(66 /* EditorOption.matchBrackets */);\n this._updateBracketsSoon.schedule();\n this._register(editor.onDidChangeCursorPosition((e) => {\n if (this._matchBrackets === 'never') {\n // Early exit if nothing needs to be done!\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n return;\n }\n this._updateBracketsSoon.schedule();\n }));\n this._register(editor.onDidChangeModelContent((e) => {\n this._updateBracketsSoon.schedule();\n }));\n this._register(editor.onDidChangeModel((e) => {\n this._lastBracketsData = [];\n this._updateBracketsSoon.schedule();\n }));\n this._register(editor.onDidChangeModelLanguageConfiguration((e) => {\n this._lastBracketsData = [];\n this._updateBracketsSoon.schedule();\n }));\n this._register(editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(66 /* EditorOption.matchBrackets */)) {\n this._matchBrackets = this._editor.getOption(66 /* EditorOption.matchBrackets */);\n this._decorations.clear();\n this._lastBracketsData = [];\n this._lastVersionId = 0;\n this._updateBracketsSoon.schedule();\n }\n }));\n this._register(editor.onDidBlurEditorWidget(() => {\n this._updateBracketsSoon.schedule();\n }));\n this._register(editor.onDidFocusEditorWidget(() => {\n this._updateBracketsSoon.schedule();\n }));\n }\n static get(editor) {\n return editor.getContribution(BracketMatchingController.ID);\n }\n jumpToBracket() {\n if (!this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n const newSelections = this._editor.getSelections().map(selection => {\n const position = selection.getStartPosition();\n // find matching brackets if position is on a bracket\n const brackets = model.bracketPairs.matchBracket(position);\n let newCursorPosition = null;\n if (brackets) {\n if (brackets[0].containsPosition(position) && !brackets[1].containsPosition(position)) {\n newCursorPosition = brackets[1].getStartPosition();\n }\n else if (brackets[1].containsPosition(position)) {\n newCursorPosition = brackets[0].getStartPosition();\n }\n }\n else {\n // find the enclosing brackets if the position isn't on a matching bracket\n const enclosingBrackets = model.bracketPairs.findEnclosingBrackets(position);\n if (enclosingBrackets) {\n newCursorPosition = enclosingBrackets[1].getStartPosition();\n }\n else {\n // no enclosing brackets, try the very first next bracket\n const nextBracket = model.bracketPairs.findNextBracket(position);\n if (nextBracket && nextBracket.range) {\n newCursorPosition = nextBracket.range.getStartPosition();\n }\n }\n }\n if (newCursorPosition) {\n return new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\n }\n return new Selection(position.lineNumber, position.column, position.lineNumber, position.column);\n });\n this._editor.setSelections(newSelections);\n this._editor.revealRange(newSelections[0]);\n }\n selectToBracket(selectBrackets) {\n if (!this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n const newSelections = [];\n this._editor.getSelections().forEach(selection => {\n const position = selection.getStartPosition();\n let brackets = model.bracketPairs.matchBracket(position);\n if (!brackets) {\n brackets = model.bracketPairs.findEnclosingBrackets(position);\n if (!brackets) {\n const nextBracket = model.bracketPairs.findNextBracket(position);\n if (nextBracket && nextBracket.range) {\n brackets = model.bracketPairs.matchBracket(nextBracket.range.getStartPosition());\n }\n }\n }\n let selectFrom = null;\n let selectTo = null;\n if (brackets) {\n brackets.sort(Range.compareRangesUsingStarts);\n const [open, close] = brackets;\n selectFrom = selectBrackets ? open.getStartPosition() : open.getEndPosition();\n selectTo = selectBrackets ? close.getEndPosition() : close.getStartPosition();\n if (close.containsPosition(position)) {\n // select backwards if the cursor was on the closing bracket\n const tmp = selectFrom;\n selectFrom = selectTo;\n selectTo = tmp;\n }\n }\n if (selectFrom && selectTo) {\n newSelections.push(new Selection(selectFrom.lineNumber, selectFrom.column, selectTo.lineNumber, selectTo.column));\n }\n });\n if (newSelections.length > 0) {\n this._editor.setSelections(newSelections);\n this._editor.revealRange(newSelections[0]);\n }\n }\n _updateBrackets() {\n if (this._matchBrackets === 'never') {\n return;\n }\n this._recomputeBrackets();\n const newDecorations = [];\n let newDecorationsLen = 0;\n for (const bracketData of this._lastBracketsData) {\n const brackets = bracketData.brackets;\n if (brackets) {\n newDecorations[newDecorationsLen++] = { range: brackets[0], options: bracketData.options };\n newDecorations[newDecorationsLen++] = { range: brackets[1], options: bracketData.options };\n }\n }\n this._decorations.set(newDecorations);\n }\n _recomputeBrackets() {\n if (!this._editor.hasModel() || !this._editor.hasWidgetFocus()) {\n // no model or no focus => no brackets!\n this._lastBracketsData = [];\n this._lastVersionId = 0;\n return;\n }\n const selections = this._editor.getSelections();\n if (selections.length > 100) {\n // no bracket matching for high numbers of selections\n this._lastBracketsData = [];\n this._lastVersionId = 0;\n return;\n }\n const model = this._editor.getModel();\n const versionId = model.getVersionId();\n let previousData = [];\n if (this._lastVersionId === versionId) {\n // use the previous data only if the model is at the same version id\n previousData = this._lastBracketsData;\n }\n const positions = [];\n let positionsLen = 0;\n for (let i = 0, len = selections.length; i < len; i++) {\n const selection = selections[i];\n if (selection.isEmpty()) {\n // will bracket match a cursor only if the selection is collapsed\n positions[positionsLen++] = selection.getStartPosition();\n }\n }\n // sort positions for `previousData` cache hits\n if (positions.length > 1) {\n positions.sort(Position.compare);\n }\n const newData = [];\n let newDataLen = 0;\n let previousIndex = 0;\n const previousLen = previousData.length;\n for (let i = 0, len = positions.length; i < len; i++) {\n const position = positions[i];\n while (previousIndex < previousLen && previousData[previousIndex].position.isBefore(position)) {\n previousIndex++;\n }\n if (previousIndex < previousLen && previousData[previousIndex].position.equals(position)) {\n newData[newDataLen++] = previousData[previousIndex];\n }\n else {\n let brackets = model.bracketPairs.matchBracket(position, 20 /* give at most 20ms to compute */);\n let options = BracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;\n if (!brackets && this._matchBrackets === 'always') {\n brackets = model.bracketPairs.findEnclosingBrackets(position, 20 /* give at most 20ms to compute */);\n options = BracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER;\n }\n newData[newDataLen++] = new BracketsData(position, brackets, options);\n }\n }\n this._lastBracketsData = newData;\n this._lastVersionId = versionId;\n }\n}\nBracketMatchingController.ID = 'editor.contrib.bracketMatchingController';\nBracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER = ModelDecorationOptions.register({\n description: 'bracket-match-overview',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'bracket-match',\n overviewRuler: {\n color: themeColorFromId(overviewRulerBracketMatchForeground),\n position: OverviewRulerLane.Center\n }\n});\nBracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER = ModelDecorationOptions.register({\n description: 'bracket-match-no-overview',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'bracket-match'\n});\nregisterEditorContribution(BracketMatchingController.ID, BracketMatchingController);\nregisterEditorAction(SelectToBracketAction);\nregisterEditorAction(JumpToBracketAction);\nregisterThemingParticipant((theme, collector) => {\n const bracketMatchBackground = theme.getColor(editorBracketMatchBackground);\n if (bracketMatchBackground) {\n collector.addRule(`.monaco-editor .bracket-match { background-color: ${bracketMatchBackground}; }`);\n }\n const bracketMatchBorder = theme.getColor(editorBracketMatchBorder);\n if (bracketMatchBorder) {\n collector.addRule(`.monaco-editor .bracket-match { border: 1px solid ${bracketMatchBorder}; }`);\n }\n});\n// Go to menu\nMenuRegistry.appendMenuItem(MenuId.MenubarGoMenu, {\n group: '5_infile_nav',\n command: {\n id: 'editor.action.jumpToBracket',\n title: nls.localize({ key: 'miGoToBracket', comment: ['&& denotes a mnemonic'] }, \"Go to &&Bracket\")\n },\n order: 2\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class MoveCaretCommand {\n constructor(selection, isMovingLeft) {\n this._selection = selection;\n this._isMovingLeft = isMovingLeft;\n }\n getEditOperations(model, builder) {\n if (this._selection.startLineNumber !== this._selection.endLineNumber || this._selection.isEmpty()) {\n return;\n }\n const lineNumber = this._selection.startLineNumber;\n const startColumn = this._selection.startColumn;\n const endColumn = this._selection.endColumn;\n if (this._isMovingLeft && startColumn === 1) {\n return;\n }\n if (!this._isMovingLeft && endColumn === model.getLineMaxColumn(lineNumber)) {\n return;\n }\n if (this._isMovingLeft) {\n const rangeBefore = new Range(lineNumber, startColumn - 1, lineNumber, startColumn);\n const charBefore = model.getValueInRange(rangeBefore);\n builder.addEditOperation(rangeBefore, null);\n builder.addEditOperation(new Range(lineNumber, endColumn, lineNumber, endColumn), charBefore);\n }\n else {\n const rangeAfter = new Range(lineNumber, endColumn, lineNumber, endColumn + 1);\n const charAfter = model.getValueInRange(rangeAfter);\n builder.addEditOperation(rangeAfter, null);\n builder.addEditOperation(new Range(lineNumber, startColumn, lineNumber, startColumn), charAfter);\n }\n }\n computeCursorState(model, helper) {\n if (this._isMovingLeft) {\n return new Selection(this._selection.startLineNumber, this._selection.startColumn - 1, this._selection.endLineNumber, this._selection.endColumn - 1);\n }\n else {\n return new Selection(this._selection.startLineNumber, this._selection.startColumn + 1, this._selection.endLineNumber, this._selection.endColumn + 1);\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { MoveCaretCommand } from './moveCaretCommand.js';\nimport * as nls from '../../../../nls.js';\nclass MoveCaretAction extends EditorAction {\n constructor(left, opts) {\n super(opts);\n this.left = left;\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const commands = [];\n const selections = editor.getSelections();\n for (const selection of selections) {\n commands.push(new MoveCaretCommand(selection, this.left));\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nclass MoveCaretLeftAction extends MoveCaretAction {\n constructor() {\n super(true, {\n id: 'editor.action.moveCarretLeftAction',\n label: nls.localize('caret.moveLeft', \"Move Selected Text Left\"),\n alias: 'Move Selected Text Left',\n precondition: EditorContextKeys.writable\n });\n }\n}\nclass MoveCaretRightAction extends MoveCaretAction {\n constructor() {\n super(false, {\n id: 'editor.action.moveCarretRightAction',\n label: nls.localize('caret.moveRight', \"Move Selected Text Right\"),\n alias: 'Move Selected Text Right',\n precondition: EditorContextKeys.writable\n });\n }\n}\nregisterEditorAction(MoveCaretLeftAction);\nregisterEditorAction(MoveCaretRightAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand } from '../../../common/commands/replaceCommand.js';\nimport { MoveOperations } from '../../../common/cursor/cursorMoveOperations.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nclass TransposeLettersAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.transposeLetters',\n label: nls.localize('transposeLetters.label', \"Transpose Letters\"),\n alias: 'Transpose Letters',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: {\n primary: 256 /* KeyMod.WinCtrl */ | 50 /* KeyCode.KeyT */\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n const commands = [];\n const selections = editor.getSelections();\n for (const selection of selections) {\n if (!selection.isEmpty()) {\n continue;\n }\n const lineNumber = selection.startLineNumber;\n const column = selection.startColumn;\n const lastColumn = model.getLineMaxColumn(lineNumber);\n if (lineNumber === 1 && (column === 1 || (column === 2 && lastColumn === 2))) {\n // at beginning of file, nothing to do\n continue;\n }\n // handle special case: when at end of line, transpose left two chars\n // otherwise, transpose left and right chars\n const endPosition = (column === lastColumn) ?\n selection.getPosition() :\n MoveOperations.rightPosition(model, selection.getPosition().lineNumber, selection.getPosition().column);\n const middlePosition = MoveOperations.leftPosition(model, endPosition);\n const beginPosition = MoveOperations.leftPosition(model, middlePosition);\n const leftChar = model.getValueInRange(Range.fromPositions(beginPosition, middlePosition));\n const rightChar = model.getValueInRange(Range.fromPositions(middlePosition, endPosition));\n const replaceRange = Range.fromPositions(beginPosition, endPosition);\n commands.push(new ReplaceCommand(replaceRange, rightChar + leftChar));\n }\n if (commands.length > 0) {\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n }\n}\nregisterEditorAction(TransposeLettersAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as browser from '../../../../base/browser/browser.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { CopyOptions, InMemoryClipboardMetadataManager } from '../../../browser/controller/textAreaInput.js';\nimport { EditorAction, MultiCommand, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nconst CLIPBOARD_CONTEXT_MENU_GROUP = '9_cutcopypaste';\nconst supportsCut = (platform.isNative || document.queryCommandSupported('cut'));\nconst supportsCopy = (platform.isNative || document.queryCommandSupported('copy'));\n// Firefox only supports navigator.clipboard.readText() in browser extensions.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText#Browser_compatibility\n// When loading over http, navigator.clipboard can be undefined. See https://github.com/microsoft/monaco-editor/issues/2313\nconst supportsPaste = (typeof navigator.clipboard === 'undefined' || browser.isFirefox) ? document.queryCommandSupported('paste') : true;\nfunction registerCommand(command) {\n command.register();\n return command;\n}\nexport const CutAction = supportsCut ? registerCommand(new MultiCommand({\n id: 'editor.action.clipboardCutAction',\n precondition: undefined,\n kbOpts: (\n // Do not bind cut keybindings in the browser,\n // since browsers do that for us and it avoids security prompts\n platform.isNative ? {\n primary: 2048 /* KeyMod.CtrlCmd */ | 54 /* KeyCode.KeyX */,\n win: { primary: 2048 /* KeyMod.CtrlCmd */ | 54 /* KeyCode.KeyX */, secondary: [1024 /* KeyMod.Shift */ | 20 /* KeyCode.Delete */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n } : undefined),\n menuOpts: [{\n menuId: MenuId.MenubarEditMenu,\n group: '2_ccp',\n title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, \"Cu&&t\"),\n order: 1\n }, {\n menuId: MenuId.EditorContext,\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n when: EditorContextKeys.writable,\n order: 1,\n }, {\n menuId: MenuId.CommandPalette,\n group: '',\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n order: 1\n }, {\n menuId: MenuId.SimpleEditorContext,\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n when: EditorContextKeys.writable,\n order: 1,\n }]\n})) : undefined;\nexport const CopyAction = supportsCopy ? registerCommand(new MultiCommand({\n id: 'editor.action.clipboardCopyAction',\n precondition: undefined,\n kbOpts: (\n // Do not bind copy keybindings in the browser,\n // since browsers do that for us and it avoids security prompts\n platform.isNative ? {\n primary: 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */,\n win: { primary: 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */, secondary: [2048 /* KeyMod.CtrlCmd */ | 19 /* KeyCode.Insert */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n } : undefined),\n menuOpts: [{\n menuId: MenuId.MenubarEditMenu,\n group: '2_ccp',\n title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, \"&&Copy\"),\n order: 2\n }, {\n menuId: MenuId.EditorContext,\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n order: 2,\n }, {\n menuId: MenuId.CommandPalette,\n group: '',\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n order: 1\n }, {\n menuId: MenuId.SimpleEditorContext,\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n order: 2,\n }]\n})) : undefined;\nMenuRegistry.appendMenuItem(MenuId.MenubarEditMenu, { submenu: MenuId.MenubarCopy, title: { value: nls.localize('copy as', \"Copy As\"), original: 'Copy As', }, group: '2_ccp', order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextCopy, title: { value: nls.localize('copy as', \"Copy As\"), original: 'Copy As', }, group: CLIPBOARD_CONTEXT_MENU_GROUP, order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextShare, title: { value: nls.localize('share', \"Share\"), original: 'Share', }, group: '11_share', order: -1 });\nexport const PasteAction = supportsPaste ? registerCommand(new MultiCommand({\n id: 'editor.action.clipboardPasteAction',\n precondition: undefined,\n kbOpts: (\n // Do not bind paste keybindings in the browser,\n // since browsers do that for us and it avoids security prompts\n platform.isNative ? {\n primary: 2048 /* KeyMod.CtrlCmd */ | 52 /* KeyCode.KeyV */,\n win: { primary: 2048 /* KeyMod.CtrlCmd */ | 52 /* KeyCode.KeyV */, secondary: [1024 /* KeyMod.Shift */ | 19 /* KeyCode.Insert */] },\n linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 52 /* KeyCode.KeyV */, secondary: [1024 /* KeyMod.Shift */ | 19 /* KeyCode.Insert */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n } : undefined),\n menuOpts: [{\n menuId: MenuId.MenubarEditMenu,\n group: '2_ccp',\n title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, \"&&Paste\"),\n order: 4\n }, {\n menuId: MenuId.EditorContext,\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n when: EditorContextKeys.writable,\n order: 4,\n }, {\n menuId: MenuId.CommandPalette,\n group: '',\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n order: 1\n }, {\n menuId: MenuId.SimpleEditorContext,\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n when: EditorContextKeys.writable,\n order: 4,\n }]\n})) : undefined;\nclass ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.clipboardCopyWithSyntaxHighlightingAction',\n label: nls.localize('actions.clipboard.copyWithSyntaxHighlightingLabel', \"Copy With Syntax Highlighting\"),\n alias: 'Copy With Syntax Highlighting',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const emptySelectionClipboard = editor.getOption(33 /* EditorOption.emptySelectionClipboard */);\n if (!emptySelectionClipboard && editor.getSelection().isEmpty()) {\n return;\n }\n CopyOptions.forceCopyWithSyntaxHighlighting = true;\n editor.focus();\n document.execCommand('copy');\n CopyOptions.forceCopyWithSyntaxHighlighting = false;\n }\n}\nfunction registerExecCommandImpl(target, browserCommand) {\n if (!target) {\n return;\n }\n // 1. handle case when focus is in editor.\n target.addImplementation(10000, 'code-editor', (accessor, args) => {\n // Only if editor text focus (i.e. not if editor has widget focus).\n const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n if (focusedEditor && focusedEditor.hasTextFocus()) {\n // Do not execute if there is no selection and empty selection clipboard is off\n const emptySelectionClipboard = focusedEditor.getOption(33 /* EditorOption.emptySelectionClipboard */);\n const selection = focusedEditor.getSelection();\n if (selection && selection.isEmpty() && !emptySelectionClipboard) {\n return true;\n }\n document.execCommand(browserCommand);\n return true;\n }\n return false;\n });\n // 2. (default) handle case when focus is somewhere else.\n target.addImplementation(0, 'generic-dom', (accessor, args) => {\n document.execCommand(browserCommand);\n return true;\n });\n}\nregisterExecCommandImpl(CutAction, 'cut');\nregisterExecCommandImpl(CopyAction, 'copy');\nif (PasteAction) {\n // 1. Paste: handle case when focus is in editor.\n PasteAction.addImplementation(10000, 'code-editor', (accessor, args) => {\n const codeEditorService = accessor.get(ICodeEditorService);\n const clipboardService = accessor.get(IClipboardService);\n // Only if editor text focus (i.e. not if editor has widget focus).\n const focusedEditor = codeEditorService.getFocusedCodeEditor();\n if (focusedEditor && focusedEditor.hasTextFocus()) {\n const result = document.execCommand('paste');\n // Use the clipboard service if document.execCommand('paste') was not successful\n if (!result && platform.isWeb) {\n return (() => __awaiter(void 0, void 0, void 0, function* () {\n const clipboardText = yield clipboardService.readText();\n if (clipboardText !== '') {\n const metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);\n let pasteOnNewLine = false;\n let multicursorText = null;\n let mode = null;\n if (metadata) {\n pasteOnNewLine = (focusedEditor.getOption(33 /* EditorOption.emptySelectionClipboard */) && !!metadata.isFromEmptySelection);\n multicursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);\n mode = metadata.mode;\n }\n focusedEditor.trigger('keyboard', \"paste\" /* Handler.Paste */, {\n text: clipboardText,\n pasteOnNewLine,\n multicursorText,\n mode\n });\n }\n }))();\n }\n return true;\n }\n return false;\n });\n // 2. Paste: (default) handle case when focus is somewhere else.\n PasteAction.addImplementation(0, 'generic-dom', (accessor, args) => {\n document.execCommand('paste');\n return true;\n });\n}\nif (supportsCopy) {\n registerEditorAction(ExecCommandCopyWithSyntaxHighlightingAction);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { coalesce, equals, isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, isCancellationError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { TextModelCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nimport { CodeActionKind, CodeActionTriggerSource, filtersAction, mayIncludeActionsOfKind } from './types.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport const codeActionCommandId = 'editor.action.codeAction';\nexport const refactorCommandId = 'editor.action.refactor';\nexport const refactorPreviewCommandId = 'editor.action.refactor.preview';\nexport const sourceActionCommandId = 'editor.action.sourceAction';\nexport const organizeImportsCommandId = 'editor.action.organizeImports';\nexport const fixAllCommandId = 'editor.action.fixAll';\nexport class CodeActionItem {\n constructor(action, provider) {\n this.action = action;\n this.provider = provider;\n }\n resolve(token) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (((_a = this.provider) === null || _a === void 0 ? void 0 : _a.resolveCodeAction) && !this.action.edit) {\n let action;\n try {\n action = yield this.provider.resolveCodeAction(this.action, token);\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n if (action) {\n this.action.edit = action.edit;\n }\n }\n return this;\n });\n }\n}\nclass ManagedCodeActionSet extends Disposable {\n constructor(actions, documentation, disposables) {\n super();\n this.documentation = documentation;\n this._register(disposables);\n this.allActions = [...actions].sort(ManagedCodeActionSet.codeActionsComparator);\n this.validActions = this.allActions.filter(({ action }) => !action.disabled);\n }\n static codeActionsComparator({ action: a }, { action: b }) {\n if (a.isPreferred && !b.isPreferred) {\n return -1;\n }\n else if (!a.isPreferred && b.isPreferred) {\n return 1;\n }\n if (isNonEmptyArray(a.diagnostics)) {\n if (isNonEmptyArray(b.diagnostics)) {\n return a.diagnostics[0].message.localeCompare(b.diagnostics[0].message);\n }\n else {\n return -1;\n }\n }\n else if (isNonEmptyArray(b.diagnostics)) {\n return 1;\n }\n else {\n return 0; // both have no diagnostics\n }\n }\n get hasAutoFix() {\n return this.validActions.some(({ action: fix }) => !!fix.kind && CodeActionKind.QuickFix.contains(new CodeActionKind(fix.kind)) && !!fix.isPreferred);\n }\n}\nconst emptyCodeActionsResponse = { actions: [], documentation: undefined };\nexport function getCodeActions(registry, model, rangeOrSelection, trigger, progress, token) {\n var _a;\n const filter = trigger.filter || {};\n const codeActionContext = {\n only: (_a = filter.include) === null || _a === void 0 ? void 0 : _a.value,\n trigger: trigger.type,\n };\n const cts = new TextModelCancellationTokenSource(model, token);\n const providers = getCodeActionProviders(registry, model, filter);\n const disposables = new DisposableStore();\n const promises = providers.map((provider) => __awaiter(this, void 0, void 0, function* () {\n try {\n progress.report(provider);\n const providedCodeActions = yield provider.provideCodeActions(model, rangeOrSelection, codeActionContext, cts.token);\n if (providedCodeActions) {\n disposables.add(providedCodeActions);\n }\n if (cts.token.isCancellationRequested) {\n return emptyCodeActionsResponse;\n }\n const filteredActions = ((providedCodeActions === null || providedCodeActions === void 0 ? void 0 : providedCodeActions.actions) || []).filter(action => action && filtersAction(filter, action));\n const documentation = getDocumentation(provider, filteredActions, filter.include);\n return {\n actions: filteredActions.map(action => new CodeActionItem(action, provider)),\n documentation\n };\n }\n catch (err) {\n if (isCancellationError(err)) {\n throw err;\n }\n onUnexpectedExternalError(err);\n return emptyCodeActionsResponse;\n }\n }));\n const listener = registry.onDidChange(() => {\n const newProviders = registry.all(model);\n if (!equals(newProviders, providers)) {\n cts.cancel();\n }\n });\n return Promise.all(promises).then(actions => {\n const allActions = actions.map(x => x.actions).flat();\n const allDocumentation = coalesce(actions.map(x => x.documentation));\n return new ManagedCodeActionSet(allActions, allDocumentation, disposables);\n })\n .finally(() => {\n listener.dispose();\n cts.dispose();\n });\n}\nfunction getCodeActionProviders(registry, model, filter) {\n return registry.all(model)\n // Don't include providers that we know will not return code actions of interest\n .filter(provider => {\n if (!provider.providedCodeActionKinds) {\n // We don't know what type of actions this provider will return.\n return true;\n }\n return provider.providedCodeActionKinds.some(kind => mayIncludeActionsOfKind(filter, new CodeActionKind(kind)));\n });\n}\nfunction getDocumentation(provider, providedCodeActions, only) {\n if (!provider.documentation) {\n return undefined;\n }\n const documentation = provider.documentation.map(entry => ({ kind: new CodeActionKind(entry.kind), command: entry.command }));\n if (only) {\n let currentBest;\n for (const entry of documentation) {\n if (entry.kind.contains(only)) {\n if (!currentBest) {\n currentBest = entry;\n }\n else {\n // Take best match\n if (currentBest.kind.contains(entry.kind)) {\n currentBest = entry;\n }\n }\n }\n }\n if (currentBest) {\n return currentBest === null || currentBest === void 0 ? void 0 : currentBest.command;\n }\n }\n // Otherwise, check to see if any of the provided actions match.\n for (const action of providedCodeActions) {\n if (!action.kind) {\n continue;\n }\n for (const entry of documentation) {\n if (entry.kind.contains(new CodeActionKind(action.kind))) {\n return entry.command;\n }\n }\n }\n return undefined;\n}\nCommandsRegistry.registerCommand('_executeCodeActionProvider', function (accessor, resource, rangeOrSelection, kind, itemResolveCount) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!(resource instanceof URI)) {\n throw illegalArgument();\n }\n const { codeActionProvider } = accessor.get(ILanguageFeaturesService);\n const model = accessor.get(IModelService).getModel(resource);\n if (!model) {\n throw illegalArgument();\n }\n const validatedRangeOrSelection = Selection.isISelection(rangeOrSelection)\n ? Selection.liftSelection(rangeOrSelection)\n : Range.isIRange(rangeOrSelection)\n ? model.validateRange(rangeOrSelection)\n : undefined;\n if (!validatedRangeOrSelection) {\n throw illegalArgument();\n }\n const include = typeof kind === 'string' ? new CodeActionKind(kind) : undefined;\n const codeActionSet = yield getCodeActions(codeActionProvider, model, validatedRangeOrSelection, { type: 1 /* languages.CodeActionTriggerType.Invoke */, triggerAction: CodeActionTriggerSource.Default, filter: { includeSourceActions: true, include } }, Progress.None, CancellationToken.None);\n const resolving = [];\n const resolveCount = Math.min(codeActionSet.validActions.length, typeof itemResolveCount === 'number' ? itemResolveCount : 0);\n for (let i = 0; i < resolveCount; i++) {\n resolving.push(codeActionSet.validActions[i].resolve(CancellationToken.None));\n }\n try {\n yield Promise.all(resolving);\n return codeActionSet.validActions.map(item => item.action);\n }\n finally {\n setTimeout(() => codeActionSet.dispose(), 100);\n }\n });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport { Action, Separator } from '../../../../base/common/actions.js';\nimport { canceled } from '../../../../base/common/errors.js';\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { Disposable, dispose, MutableDisposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport './media/action.css';\nimport { Position } from '../../../common/core/position.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { codeActionCommandId, CodeActionItem, fixAllCommandId, organizeImportsCommandId, refactorCommandId, sourceActionCommandId } from './codeAction.js';\nimport { CodeActionCommandArgs, CodeActionKind, CodeActionTriggerSource } from './types.js';\nimport { localize } from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextMenuService, IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nexport const Context = {\n Visible: new RawContextKey('CodeActionMenuVisible', false, localize('CodeActionMenuVisible', \"Whether the code action list widget is visible\"))\n};\nclass CodeActionAction extends Action {\n constructor(action, callback) {\n super(action.command ? action.command.id : action.title, stripNewlines(action.title), undefined, !action.disabled, callback);\n this.action = action;\n }\n}\nfunction stripNewlines(str) {\n return str.replace(/\\r\\n|\\r|\\n/g, ' ');\n}\nconst TEMPLATE_ID = 'codeActionWidget';\nconst codeActionLineHeight = 26;\nlet CodeMenuRenderer = class CodeMenuRenderer {\n constructor(acceptKeybindings, keybindingService) {\n this.acceptKeybindings = acceptKeybindings;\n this.keybindingService = keybindingService;\n }\n get templateId() { return TEMPLATE_ID; }\n renderTemplate(container) {\n const data = Object.create(null);\n data.disposables = [];\n data.root = container;\n data.text = document.createElement('span');\n // data.detail = document.createElement('');\n container.append(data.text);\n // container.append(data.detail);\n return data;\n }\n renderElement(element, index, templateData) {\n const data = templateData;\n const text = element.title;\n // const detail = element.detail;\n const isEnabled = element.isEnabled;\n const isSeparator = element.isSeparator;\n const isDocumentation = element.isDocumentation;\n data.text.textContent = text;\n // data.detail.textContent = detail;\n if (!isEnabled) {\n data.root.classList.add('option-disabled');\n data.root.style.backgroundColor = 'transparent !important';\n }\n else {\n data.root.classList.remove('option-disabled');\n }\n if (isSeparator) {\n data.root.classList.add('separator');\n data.root.style.height = '10px';\n }\n if (!isDocumentation) {\n const updateLabel = () => {\n var _a, _b;\n const [accept, preview] = this.acceptKeybindings;\n data.root.title = localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Refactor, Shift+F2 to Preview\"'] }, \"{0} to Refactor, {1} to Preview\", (_a = this.keybindingService.lookupKeybinding(accept)) === null || _a === void 0 ? void 0 : _a.getLabel(), (_b = this.keybindingService.lookupKeybinding(preview)) === null || _b === void 0 ? void 0 : _b.getLabel());\n // data.root.title = this.keybindingService.lookupKeybinding(accept)?.getLabel() + ' to Refactor, ' + this.keybindingService.lookupKeybinding(preview)?.getLabel() + ' to Preview';\n };\n updateLabel();\n }\n }\n disposeTemplate(templateData) {\n templateData.disposables = dispose(templateData.disposables);\n }\n};\nCodeMenuRenderer = __decorate([\n __param(1, IKeybindingService)\n], CodeMenuRenderer);\nlet CodeActionMenu = class CodeActionMenu extends Disposable {\n constructor(_editor, _delegate, _contextMenuService, keybindingService, _languageFeaturesService, _telemetryService, _themeService, _configurationService, _contextViewService, _contextKeyService) {\n super();\n this._editor = _editor;\n this._delegate = _delegate;\n this._contextMenuService = _contextMenuService;\n this._languageFeaturesService = _languageFeaturesService;\n this._telemetryService = _telemetryService;\n this._configurationService = _configurationService;\n this._contextViewService = _contextViewService;\n this._contextKeyService = _contextKeyService;\n this._showingActions = this._register(new MutableDisposable());\n this.codeActionList = this._register(new MutableDisposable());\n this.options = [];\n this._visible = false;\n this.viewItems = [];\n this.hasSeperator = false;\n this._keybindingResolver = new CodeActionKeybindingResolver({\n getKeybindings: () => keybindingService.getKeybindings()\n });\n this._ctxMenuWidgetVisible = Context.Visible.bindTo(this._contextKeyService);\n this.listRenderer = new CodeMenuRenderer([`onEnterSelectCodeAction`, `onEnterSelectCodeActionWithPreview`], keybindingService);\n }\n get isVisible() {\n return this._visible;\n }\n isCodeActionWidgetEnabled(model) {\n return this._configurationService.getValue('editor.experimental.useCustomCodeActionMenu', {\n resource: model.uri\n });\n }\n _onListSelection(e) {\n if (e.elements.length) {\n e.elements.forEach(element => {\n if (element.isEnabled) {\n element.action.run();\n this.hideCodeActionWidget();\n }\n });\n }\n }\n _onListHover(e) {\n var _a, _b, _c, _d;\n if (!e.element) {\n this.currSelectedItem = undefined;\n (_a = this.codeActionList.value) === null || _a === void 0 ? void 0 : _a.setFocus([]);\n }\n else {\n if ((_b = e.element) === null || _b === void 0 ? void 0 : _b.isEnabled) {\n (_c = this.codeActionList.value) === null || _c === void 0 ? void 0 : _c.setFocus([e.element.index]);\n this.focusedEnabledItem = this.viewItems.indexOf(e.element);\n this.currSelectedItem = e.element.index;\n }\n else {\n this.currSelectedItem = undefined;\n (_d = this.codeActionList.value) === null || _d === void 0 ? void 0 : _d.setFocus([e.element.index]);\n }\n }\n }\n renderCodeActionMenuList(element, inputArray) {\n var _a;\n const renderDisposables = new DisposableStore();\n const renderMenu = document.createElement('div');\n // Render invisible div to block mouse interaction in the rest of the UI\n const menuBlock = document.createElement('div');\n this.block = element.appendChild(menuBlock);\n this.block.classList.add('context-view-block');\n this.block.style.position = 'fixed';\n this.block.style.cursor = 'initial';\n this.block.style.left = '0';\n this.block.style.top = '0';\n this.block.style.width = '100%';\n this.block.style.height = '100%';\n this.block.style.zIndex = '-1';\n renderDisposables.add(dom.addDisposableListener(this.block, dom.EventType.MOUSE_DOWN, e => e.stopPropagation()));\n renderMenu.id = 'codeActionMenuWidget';\n renderMenu.classList.add('codeActionMenuWidget');\n element.appendChild(renderMenu);\n this.codeActionList.value = new List('codeActionWidget', renderMenu, {\n getHeight(element) {\n if (element.isSeparator) {\n return 10;\n }\n return codeActionLineHeight;\n },\n getTemplateId(element) {\n return 'codeActionWidget';\n }\n }, [this.listRenderer], { keyboardSupport: false });\n renderDisposables.add(this.codeActionList.value.onMouseOver(e => this._onListHover(e)));\n renderDisposables.add(this.codeActionList.value.onDidChangeFocus(e => { var _a; return (_a = this.codeActionList.value) === null || _a === void 0 ? void 0 : _a.domFocus(); }));\n renderDisposables.add(this.codeActionList.value.onDidChangeSelection(e => this._onListSelection(e)));\n renderDisposables.add(this._editor.onDidLayoutChange(e => this.hideCodeActionWidget()));\n // Populating the list widget and tracking enabled options.\n inputArray.forEach((item, index) => {\n const currIsSeparator = item.class === 'separator';\n let isDocumentation = false;\n if (item instanceof CodeActionAction) {\n isDocumentation = item.action.kind === CodeActionMenu.documentationID;\n }\n if (currIsSeparator) {\n // set to true forever\n this.hasSeperator = true;\n }\n const menuItem = { title: item.label, detail: item.tooltip, action: inputArray[index], isEnabled: item.enabled, isSeparator: currIsSeparator, index, isDocumentation };\n if (item.enabled) {\n this.viewItems.push(menuItem);\n }\n this.options.push(menuItem);\n });\n this.codeActionList.value.splice(0, this.codeActionList.value.length, this.options);\n const height = this.hasSeperator ? (inputArray.length - 1) * codeActionLineHeight + 10 : inputArray.length * codeActionLineHeight;\n renderMenu.style.height = String(height) + 'px';\n this.codeActionList.value.layout(height);\n // For finding width dynamically (not using resize observer)\n const arr = [];\n this.options.forEach((item, index) => {\n var _a, _b;\n if (!this.codeActionList.value) {\n return;\n }\n const element = (_b = document.getElementById((_a = this.codeActionList.value) === null || _a === void 0 ? void 0 : _a.getElementID(index))) === null || _b === void 0 ? void 0 : _b.getElementsByTagName('span')[0].offsetWidth;\n arr.push(Number(element));\n });\n // resize observer - can be used in the future since list widget supports dynamic height but not width\n const maxWidth = Math.max(...arr);\n // 40 is the additional padding for the list widget (20 left, 20 right)\n renderMenu.style.width = maxWidth + 52 + 'px';\n (_a = this.codeActionList.value) === null || _a === void 0 ? void 0 : _a.layout(height, maxWidth);\n // List selection\n if (this.viewItems.length < 1 || this.viewItems.every(item => item.isDocumentation)) {\n this.currSelectedItem = undefined;\n }\n else {\n this.focusedEnabledItem = 0;\n this.currSelectedItem = this.viewItems[0].index;\n this.codeActionList.value.setFocus([this.currSelectedItem]);\n }\n // List Focus\n this.codeActionList.value.domFocus();\n const focusTracker = dom.trackFocus(element);\n const blurListener = focusTracker.onDidBlur(() => {\n this.hideCodeActionWidget();\n // this._contextViewService.hideContextView({ source: this });\n });\n renderDisposables.add(blurListener);\n renderDisposables.add(focusTracker);\n this._ctxMenuWidgetVisible.set(true);\n return renderDisposables;\n }\n focusPrevious() {\n var _a;\n if (typeof this.focusedEnabledItem === 'undefined') {\n this.focusedEnabledItem = this.viewItems[0].index;\n }\n else if (this.viewItems.length < 1) {\n return false;\n }\n const startIndex = this.focusedEnabledItem;\n let item;\n do {\n this.focusedEnabledItem = this.focusedEnabledItem - 1;\n if (this.focusedEnabledItem < 0) {\n this.focusedEnabledItem = this.viewItems.length - 1;\n }\n item = this.viewItems[this.focusedEnabledItem];\n (_a = this.codeActionList.value) === null || _a === void 0 ? void 0 : _a.setFocus([item.index]);\n this.currSelectedItem = item.index;\n } while (this.focusedEnabledItem !== startIndex && ((!item.isEnabled) || item.action.id === Separator.ID));\n return true;\n }\n focusNext() {\n var _a;\n if (typeof this.focusedEnabledItem === 'undefined') {\n this.focusedEnabledItem = this.viewItems.length - 1;\n }\n else if (this.viewItems.length < 1) {\n return false;\n }\n const startIndex = this.focusedEnabledItem;\n let item;\n do {\n this.focusedEnabledItem = (this.focusedEnabledItem + 1) % this.viewItems.length;\n item = this.viewItems[this.focusedEnabledItem];\n (_a = this.codeActionList.value) === null || _a === void 0 ? void 0 : _a.setFocus([item.index]);\n this.currSelectedItem = item.index;\n } while (this.focusedEnabledItem !== startIndex && ((!item.isEnabled) || item.action.id === Separator.ID));\n return true;\n }\n navigateListWithKeysUp() {\n this.focusPrevious();\n }\n navigateListWithKeysDown() {\n this.focusNext();\n }\n onEnterSet() {\n var _a;\n if (typeof this.currSelectedItem === 'number') {\n (_a = this.codeActionList.value) === null || _a === void 0 ? void 0 : _a.setSelection([this.currSelectedItem]);\n }\n }\n dispose() {\n super.dispose();\n }\n hideCodeActionWidget() {\n this._ctxMenuWidgetVisible.reset();\n this.options = [];\n this.viewItems = [];\n this.focusedEnabledItem = 0;\n this.currSelectedItem = undefined;\n this.hasSeperator = false;\n this._contextViewService.hideContextView({ source: this });\n }\n codeActionTelemetry(openedFromString, didCancel, CodeActions) {\n this._telemetryService.publicLog2('codeAction.applyCodeAction', {\n codeActionFrom: openedFromString,\n validCodeActions: CodeActions.validActions.length,\n cancelled: didCancel,\n });\n }\n show(trigger, codeActions, at, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n const actionsToShow = options.includeDisabledActions ? codeActions.allActions : codeActions.validActions;\n if (!actionsToShow.length) {\n this._visible = false;\n return;\n }\n if (!this._editor.getDomNode()) {\n // cancel when editor went off-dom\n this._visible = false;\n throw canceled();\n }\n this._visible = true;\n this._showingActions.value = codeActions;\n const menuActions = this.getMenuActions(trigger, actionsToShow, codeActions.documentation);\n const anchor = Position.isIPosition(at) ? this._toCoords(at) : at || { x: 0, y: 0 };\n const resolver = this._keybindingResolver.getResolver();\n const useShadowDOM = this._editor.getOption(117 /* EditorOption.useShadowDOM */);\n if (this.isCodeActionWidgetEnabled(model)) {\n this._contextViewService.showContextView({\n getAnchor: () => anchor,\n render: (container) => this.renderCodeActionMenuList(container, menuActions),\n onHide: (didCancel) => {\n const openedFromString = (options.fromLightbulb) ? CodeActionTriggerSource.Lightbulb : trigger.triggerAction;\n this.codeActionTelemetry(openedFromString, didCancel, codeActions);\n this._visible = false;\n this._editor.focus();\n },\n }, this._editor.getDomNode(), false);\n }\n else {\n this._contextMenuService.showContextMenu({\n domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\n getAnchor: () => anchor,\n getActions: () => menuActions,\n onHide: (didCancel) => {\n const openedFromString = (options.fromLightbulb) ? CodeActionTriggerSource.Lightbulb : trigger.triggerAction;\n this.codeActionTelemetry(openedFromString, didCancel, codeActions);\n this._visible = false;\n this._editor.focus();\n },\n autoSelectFirstItem: true,\n getKeyBinding: action => action instanceof CodeActionAction ? resolver(action.action) : undefined,\n });\n }\n });\n }\n getMenuActions(trigger, actionsToShow, documentation) {\n var _a, _b;\n const toCodeActionAction = (item) => new CodeActionAction(item.action, () => this._delegate.onSelectCodeAction(item, trigger));\n const result = actionsToShow\n .map(toCodeActionAction);\n const allDocumentation = [...documentation];\n const model = this._editor.getModel();\n if (model && result.length) {\n for (const provider of this._languageFeaturesService.codeActionProvider.all(model)) {\n if (provider._getAdditionalMenuItems) {\n allDocumentation.push(...provider._getAdditionalMenuItems({ trigger: trigger.type, only: (_b = (_a = trigger.filter) === null || _a === void 0 ? void 0 : _a.include) === null || _b === void 0 ? void 0 : _b.value }, actionsToShow.map(item => item.action)));\n }\n }\n }\n if (allDocumentation.length) {\n result.push(new Separator(), ...allDocumentation.map(command => toCodeActionAction(new CodeActionItem({\n title: command.title,\n command: command,\n kind: CodeActionMenu.documentationID\n }, undefined))));\n }\n return result;\n }\n _toCoords(position) {\n if (!this._editor.hasModel()) {\n return { x: 0, y: 0 };\n }\n this._editor.revealPosition(position, 1 /* ScrollType.Immediate */);\n this._editor.render();\n // Translate to absolute editor position\n const cursorCoords = this._editor.getScrolledVisiblePosition(position);\n const editorCoords = dom.getDomNodePagePosition(this._editor.getDomNode());\n const x = editorCoords.left + cursorCoords.left;\n const y = editorCoords.top + cursorCoords.top + cursorCoords.height;\n return { x, y };\n }\n};\nCodeActionMenu.documentationID = '_documentation';\nCodeActionMenu = __decorate([\n __param(2, IContextMenuService),\n __param(3, IKeybindingService),\n __param(4, ILanguageFeaturesService),\n __param(5, ITelemetryService),\n __param(6, IThemeService),\n __param(7, IConfigurationService),\n __param(8, IContextViewService),\n __param(9, IContextKeyService)\n], CodeActionMenu);\nexport { CodeActionMenu };\nexport class CodeActionKeybindingResolver {\n constructor(_keybindingProvider) {\n this._keybindingProvider = _keybindingProvider;\n }\n getResolver() {\n // Lazy since we may not actually ever read the value\n const allCodeActionBindings = new Lazy(() => this._keybindingProvider.getKeybindings()\n .filter(item => CodeActionKeybindingResolver.codeActionCommands.indexOf(item.command) >= 0)\n .filter(item => item.resolvedKeybinding)\n .map((item) => {\n // Special case these commands since they come built-in with VS Code and don't use 'commandArgs'\n let commandArgs = item.commandArgs;\n if (item.command === organizeImportsCommandId) {\n commandArgs = { kind: CodeActionKind.SourceOrganizeImports.value };\n }\n else if (item.command === fixAllCommandId) {\n commandArgs = { kind: CodeActionKind.SourceFixAll.value };\n }\n return Object.assign({ resolvedKeybinding: item.resolvedKeybinding }, CodeActionCommandArgs.fromUser(commandArgs, {\n kind: CodeActionKind.None,\n apply: \"never\" /* CodeActionAutoApply.Never */\n }));\n }));\n return (action) => {\n if (action.kind) {\n const binding = this.bestKeybindingForCodeAction(action, allCodeActionBindings.getValue());\n return binding === null || binding === void 0 ? void 0 : binding.resolvedKeybinding;\n }\n return undefined;\n };\n }\n bestKeybindingForCodeAction(action, candidates) {\n if (!action.kind) {\n return undefined;\n }\n const kind = new CodeActionKind(action.kind);\n return candidates\n .filter(candidate => candidate.kind.contains(kind))\n .filter(candidate => {\n if (candidate.preferred) {\n // If the candidate keybinding only applies to preferred actions, the this action must also be preferred\n return action.isPreferred;\n }\n return true;\n })\n .reduceRight((currentBest, candidate) => {\n if (!currentBest) {\n return candidate;\n }\n // Select the more specific binding\n return currentBest.kind.contains(candidate.kind) ? candidate : currentBest;\n }, undefined);\n }\n}\nCodeActionKeybindingResolver.codeActionCommands = [\n refactorCommandId,\n codeActionCommandId,\n sourceActionCommandId,\n organizeImportsCommandId,\n fixAllCommandId\n];\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Gesture } from '../../../../base/browser/touch.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport './lightBulbWidget.css';\nimport { computeIndentLevel } from '../../../common/model/utils.js';\nimport * as nls from '../../../../nls.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { editorBackground, editorLightBulbAutoFixForeground, editorLightBulbForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nvar LightBulbState;\n(function (LightBulbState) {\n LightBulbState.Hidden = { type: 0 /* Type.Hidden */ };\n class Showing {\n constructor(actions, trigger, editorPosition, widgetPosition) {\n this.actions = actions;\n this.trigger = trigger;\n this.editorPosition = editorPosition;\n this.widgetPosition = widgetPosition;\n this.type = 1 /* Type.Showing */;\n }\n }\n LightBulbState.Showing = Showing;\n})(LightBulbState || (LightBulbState = {}));\nlet LightBulbWidget = class LightBulbWidget extends Disposable {\n constructor(_editor, _quickFixActionId, _preferredFixActionId, _keybindingService) {\n super();\n this._editor = _editor;\n this._quickFixActionId = _quickFixActionId;\n this._preferredFixActionId = _preferredFixActionId;\n this._keybindingService = _keybindingService;\n this._onClick = this._register(new Emitter());\n this.onClick = this._onClick.event;\n this._state = LightBulbState.Hidden;\n this._domNode = document.createElement('div');\n this._domNode.className = Codicon.lightBulb.classNames;\n this._editor.addContentWidget(this);\n this._register(this._editor.onDidChangeModelContent(_ => {\n // cancel when the line in question has been removed\n const editorModel = this._editor.getModel();\n if (this.state.type !== 1 /* LightBulbState.Type.Showing */ || !editorModel || this.state.editorPosition.lineNumber >= editorModel.getLineCount()) {\n this.hide();\n }\n }));\n Gesture.ignoreTarget(this._domNode);\n this._register(dom.addStandardDisposableGenericMouseDownListener(this._domNode, e => {\n if (this.state.type !== 1 /* LightBulbState.Type.Showing */) {\n return;\n }\n // Make sure that focus / cursor location is not lost when clicking widget icon\n this._editor.focus();\n e.preventDefault();\n // a bit of extra work to make sure the menu\n // doesn't cover the line-text\n const { top, height } = dom.getDomNodePagePosition(this._domNode);\n const lineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */);\n let pad = Math.floor(lineHeight / 3);\n if (this.state.widgetPosition.position !== null && this.state.widgetPosition.position.lineNumber < this.state.editorPosition.lineNumber) {\n pad += lineHeight;\n }\n this._onClick.fire({\n x: e.posx,\n y: top + height + pad,\n actions: this.state.actions,\n trigger: this.state.trigger,\n });\n }));\n this._register(dom.addDisposableListener(this._domNode, 'mouseenter', (e) => {\n if ((e.buttons & 1) !== 1) {\n return;\n }\n // mouse enters lightbulb while the primary/left button\n // is being pressed -> hide the lightbulb\n this.hide();\n }));\n this._register(this._editor.onDidChangeConfiguration(e => {\n // hide when told to do so\n if (e.hasChanged(59 /* EditorOption.lightbulb */) && !this._editor.getOption(59 /* EditorOption.lightbulb */).enabled) {\n this.hide();\n }\n }));\n this._updateLightBulbTitleAndIcon();\n this._register(this._keybindingService.onDidUpdateKeybindings(this._updateLightBulbTitleAndIcon, this));\n }\n dispose() {\n super.dispose();\n this._editor.removeContentWidget(this);\n }\n getId() {\n return 'LightBulbWidget';\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return this._state.type === 1 /* LightBulbState.Type.Showing */ ? this._state.widgetPosition : null;\n }\n update(actions, trigger, atPosition) {\n if (actions.validActions.length <= 0) {\n return this.hide();\n }\n const options = this._editor.getOptions();\n if (!options.get(59 /* EditorOption.lightbulb */).enabled) {\n return this.hide();\n }\n const model = this._editor.getModel();\n if (!model) {\n return this.hide();\n }\n const { lineNumber, column } = model.validatePosition(atPosition);\n const tabSize = model.getOptions().tabSize;\n const fontInfo = options.get(46 /* EditorOption.fontInfo */);\n const lineContent = model.getLineContent(lineNumber);\n const indent = computeIndentLevel(lineContent, tabSize);\n const lineHasSpace = fontInfo.spaceWidth * indent > 22;\n const isFolded = (lineNumber) => {\n return lineNumber > 2 && this._editor.getTopForLineNumber(lineNumber) === this._editor.getTopForLineNumber(lineNumber - 1);\n };\n let effectiveLineNumber = lineNumber;\n if (!lineHasSpace) {\n if (lineNumber > 1 && !isFolded(lineNumber - 1)) {\n effectiveLineNumber -= 1;\n }\n else if (!isFolded(lineNumber + 1)) {\n effectiveLineNumber += 1;\n }\n else if (column * fontInfo.spaceWidth < 22) {\n // cannot show lightbulb above/below and showing\n // it inline would overlay the cursor...\n return this.hide();\n }\n }\n this.state = new LightBulbState.Showing(actions, trigger, atPosition, {\n position: { lineNumber: effectiveLineNumber, column: 1 },\n preference: LightBulbWidget._posPref\n });\n this._editor.layoutContentWidget(this);\n }\n hide() {\n this.state = LightBulbState.Hidden;\n this._editor.layoutContentWidget(this);\n }\n get state() { return this._state; }\n set state(value) {\n this._state = value;\n this._updateLightBulbTitleAndIcon();\n }\n _updateLightBulbTitleAndIcon() {\n if (this.state.type === 1 /* LightBulbState.Type.Showing */ && this.state.actions.hasAutoFix) {\n // update icon\n this._domNode.classList.remove(...Codicon.lightBulb.classNamesArray);\n this._domNode.classList.add(...Codicon.lightbulbAutofix.classNamesArray);\n const preferredKb = this._keybindingService.lookupKeybinding(this._preferredFixActionId);\n if (preferredKb) {\n this.title = nls.localize('preferredcodeActionWithKb', \"Show Code Actions. Preferred Quick Fix Available ({0})\", preferredKb.getLabel());\n return;\n }\n }\n // update icon\n this._domNode.classList.remove(...Codicon.lightbulbAutofix.classNamesArray);\n this._domNode.classList.add(...Codicon.lightBulb.classNamesArray);\n const kb = this._keybindingService.lookupKeybinding(this._quickFixActionId);\n if (kb) {\n this.title = nls.localize('codeActionWithKb', \"Show Code Actions ({0})\", kb.getLabel());\n }\n else {\n this.title = nls.localize('codeAction', \"Show Code Actions\");\n }\n }\n set title(value) {\n this._domNode.title = value;\n }\n};\nLightBulbWidget._posPref = [0 /* ContentWidgetPositionPreference.EXACT */];\nLightBulbWidget = __decorate([\n __param(3, IKeybindingService)\n], LightBulbWidget);\nexport { LightBulbWidget };\nregisterThemingParticipant((theme, collector) => {\n var _a;\n const editorBackgroundColor = (_a = theme.getColor(editorBackground)) === null || _a === void 0 ? void 0 : _a.transparent(0.7);\n // Lightbulb Icon\n const editorLightBulbForegroundColor = theme.getColor(editorLightBulbForeground);\n if (editorLightBulbForegroundColor) {\n collector.addRule(`\n\t\t.monaco-editor .contentWidgets ${Codicon.lightBulb.cssSelector} {\n\t\t\tcolor: ${editorLightBulbForegroundColor};\n\t\t\tbackground-color: ${editorBackgroundColor};\n\t\t}`);\n }\n // Lightbulb Auto Fix Icon\n const editorLightBulbAutoFixForegroundColor = theme.getColor(editorLightBulbAutoFixForeground);\n if (editorLightBulbAutoFixForegroundColor) {\n collector.addRule(`\n\t\t.monaco-editor .contentWidgets ${Codicon.lightbulbAutofix.cssSelector} {\n\t\t\tcolor: ${editorLightBulbAutoFixForegroundColor};\n\t\t\tbackground-color: ${editorBackgroundColor};\n\t\t}`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _CodeActionUi_disposed;\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { CodeActionMenu } from './codeActionMenu.js';\nimport { LightBulbWidget } from './lightBulbWidget.js';\nlet CodeActionUi = class CodeActionUi extends Disposable {\n constructor(_editor, quickFixActionId, preferredFixActionId, delegate, instantiationService) {\n super();\n this._editor = _editor;\n this.delegate = delegate;\n this._activeCodeActions = this._register(new MutableDisposable());\n this.previewOn = false;\n _CodeActionUi_disposed.set(this, false);\n this._codeActionWidget = new Lazy(() => {\n return this._register(instantiationService.createInstance(CodeActionMenu, this._editor, {\n onSelectCodeAction: (action, trigger) => __awaiter(this, void 0, void 0, function* () {\n if (this.previewOn) {\n this.delegate.applyCodeAction(action, /* retrigger */ true, Boolean(this.previewOn));\n }\n else {\n this.delegate.applyCodeAction(action, /* retrigger */ true, Boolean(trigger.preview));\n }\n this.previewOn = false;\n })\n }));\n });\n this._lightBulbWidget = new Lazy(() => {\n const widget = this._register(instantiationService.createInstance(LightBulbWidget, this._editor, quickFixActionId, preferredFixActionId));\n this._register(widget.onClick(e => this.showCodeActionList(e.trigger, e.actions, e, { includeDisabledActions: false, fromLightbulb: true })));\n return widget;\n });\n }\n dispose() {\n __classPrivateFieldSet(this, _CodeActionUi_disposed, true, \"f\");\n super.dispose();\n }\n hideCodeActionWidget() {\n if (this._codeActionWidget.hasValue()) {\n this._codeActionWidget.getValue().hideCodeActionWidget();\n }\n }\n onEnter() {\n if (this._codeActionWidget.hasValue()) {\n this._codeActionWidget.getValue().onEnterSet();\n }\n }\n onPreviewEnter() {\n this.previewOn = true;\n this.onEnter();\n }\n navigateList(navUp) {\n if (this._codeActionWidget.hasValue()) {\n if (navUp) {\n this._codeActionWidget.getValue().navigateListWithKeysUp();\n }\n else {\n this._codeActionWidget.getValue().navigateListWithKeysDown();\n }\n }\n }\n update(newState) {\n var _a, _b, _c, _d, _e;\n return __awaiter(this, void 0, void 0, function* () {\n if (newState.type !== 1 /* CodeActionsState.Type.Triggered */) {\n (_a = this._lightBulbWidget.rawValue) === null || _a === void 0 ? void 0 : _a.hide();\n return;\n }\n let actions;\n try {\n actions = yield newState.actions;\n }\n catch (e) {\n onUnexpectedError(e);\n return;\n }\n if (__classPrivateFieldGet(this, _CodeActionUi_disposed, \"f\")) {\n return;\n }\n this._lightBulbWidget.getValue().update(actions, newState.trigger, newState.position);\n if (newState.trigger.type === 1 /* CodeActionTriggerType.Invoke */) {\n if ((_b = newState.trigger.filter) === null || _b === void 0 ? void 0 : _b.include) { // Triggered for specific scope\n // Check to see if we want to auto apply.\n const validActionToApply = this.tryGetValidActionToApply(newState.trigger, actions);\n if (validActionToApply) {\n try {\n this._lightBulbWidget.getValue().hide();\n yield this.delegate.applyCodeAction(validActionToApply, false, false);\n }\n finally {\n actions.dispose();\n }\n return;\n }\n // Check to see if there is an action that we would have applied were it not invalid\n if (newState.trigger.context) {\n const invalidAction = this.getInvalidActionThatWouldHaveBeenApplied(newState.trigger, actions);\n if (invalidAction && invalidAction.action.disabled) {\n (_c = MessageController.get(this._editor)) === null || _c === void 0 ? void 0 : _c.showMessage(invalidAction.action.disabled, newState.trigger.context.position);\n actions.dispose();\n return;\n }\n }\n }\n const includeDisabledActions = !!((_d = newState.trigger.filter) === null || _d === void 0 ? void 0 : _d.include);\n if (newState.trigger.context) {\n if (!actions.allActions.length || !includeDisabledActions && !actions.validActions.length) {\n (_e = MessageController.get(this._editor)) === null || _e === void 0 ? void 0 : _e.showMessage(newState.trigger.context.notAvailableMessage, newState.trigger.context.position);\n this._activeCodeActions.value = actions;\n actions.dispose();\n return;\n }\n }\n this._activeCodeActions.value = actions;\n this._codeActionWidget.getValue().show(newState.trigger, actions, newState.position, { includeDisabledActions, fromLightbulb: false });\n }\n else {\n // auto magically triggered\n if (this._codeActionWidget.getValue().isVisible) {\n // TODO: Figure out if we should update the showing menu?\n actions.dispose();\n }\n else {\n this._activeCodeActions.value = actions;\n }\n }\n });\n }\n getInvalidActionThatWouldHaveBeenApplied(trigger, actions) {\n if (!actions.allActions.length) {\n return undefined;\n }\n if ((trigger.autoApply === \"first\" /* CodeActionAutoApply.First */ && actions.validActions.length === 0)\n || (trigger.autoApply === \"ifSingle\" /* CodeActionAutoApply.IfSingle */ && actions.allActions.length === 1)) {\n return actions.allActions.find(({ action }) => action.disabled);\n }\n return undefined;\n }\n tryGetValidActionToApply(trigger, actions) {\n if (!actions.validActions.length) {\n return undefined;\n }\n if ((trigger.autoApply === \"first\" /* CodeActionAutoApply.First */ && actions.validActions.length > 0)\n || (trigger.autoApply === \"ifSingle\" /* CodeActionAutoApply.IfSingle */ && actions.validActions.length === 1)) {\n return actions.validActions[0];\n }\n return undefined;\n }\n showCodeActionList(trigger, actions, at, options) {\n return __awaiter(this, void 0, void 0, function* () {\n this._codeActionWidget.getValue().show(trigger, actions, at, options);\n });\n }\n};\n_CodeActionUi_disposed = new WeakMap();\nCodeActionUi = __decorate([\n __param(4, IInstantiationService)\n], CodeActionUi);\nexport { CodeActionUi };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _CodeActionModel_isDisposed;\nimport { createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { isCancellationError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { isEqual } from '../../../../base/common/resources.js';\nimport { Range } from '../../../common/core/range.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nimport { getCodeActions } from './codeAction.js';\nimport { CodeActionTriggerSource } from './types.js';\nexport const SUPPORTED_CODE_ACTIONS = new RawContextKey('supportedCodeAction', '');\nclass CodeActionOracle extends Disposable {\n constructor(_editor, _markerService, _signalChange, _delay = 250) {\n super();\n this._editor = _editor;\n this._markerService = _markerService;\n this._signalChange = _signalChange;\n this._delay = _delay;\n this._autoTriggerTimer = this._register(new TimeoutTimer());\n this._register(this._markerService.onMarkerChanged(e => this._onMarkerChanges(e)));\n this._register(this._editor.onDidChangeCursorPosition(() => this._onCursorChange()));\n }\n trigger(trigger) {\n const selection = this._getRangeOfSelectionUnlessWhitespaceEnclosed(trigger);\n return this._createEventAndSignalChange(trigger, selection);\n }\n _onMarkerChanges(resources) {\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n if (resources.some(resource => isEqual(resource, model.uri))) {\n this._autoTriggerTimer.cancelAndSet(() => {\n this.trigger({ type: 2 /* CodeActionTriggerType.Auto */, triggerAction: CodeActionTriggerSource.Default });\n }, this._delay);\n }\n }\n _onCursorChange() {\n this._autoTriggerTimer.cancelAndSet(() => {\n this.trigger({ type: 2 /* CodeActionTriggerType.Auto */, triggerAction: CodeActionTriggerSource.Default });\n }, this._delay);\n }\n _getRangeOfMarker(selection) {\n const model = this._editor.getModel();\n if (!model) {\n return undefined;\n }\n for (const marker of this._markerService.read({ resource: model.uri })) {\n const markerRange = model.validateRange(marker);\n if (Range.intersectRanges(markerRange, selection)) {\n return Range.lift(markerRange);\n }\n }\n return undefined;\n }\n _getRangeOfSelectionUnlessWhitespaceEnclosed(trigger) {\n if (!this._editor.hasModel()) {\n return undefined;\n }\n const model = this._editor.getModel();\n const selection = this._editor.getSelection();\n if (selection.isEmpty() && trigger.type === 2 /* CodeActionTriggerType.Auto */) {\n const { lineNumber, column } = selection.getPosition();\n const line = model.getLineContent(lineNumber);\n if (line.length === 0) {\n // empty line\n return undefined;\n }\n else if (column === 1) {\n // look only right\n if (/\\s/.test(line[0])) {\n return undefined;\n }\n }\n else if (column === model.getLineMaxColumn(lineNumber)) {\n // look only left\n if (/\\s/.test(line[line.length - 1])) {\n return undefined;\n }\n }\n else {\n // look left and right\n if (/\\s/.test(line[column - 2]) && /\\s/.test(line[column - 1])) {\n return undefined;\n }\n }\n }\n return selection;\n }\n _createEventAndSignalChange(trigger, selection) {\n const model = this._editor.getModel();\n if (!selection || !model) {\n // cancel\n this._signalChange(undefined);\n return undefined;\n }\n const markerRange = this._getRangeOfMarker(selection);\n const position = markerRange ? markerRange.getStartPosition() : selection.getStartPosition();\n const e = {\n trigger,\n selection,\n position\n };\n this._signalChange(e);\n return e;\n }\n}\nexport var CodeActionsState;\n(function (CodeActionsState) {\n CodeActionsState.Empty = { type: 0 /* Type.Empty */ };\n class Triggered {\n constructor(trigger, rangeOrSelection, position, _cancellablePromise) {\n this.trigger = trigger;\n this.rangeOrSelection = rangeOrSelection;\n this.position = position;\n this._cancellablePromise = _cancellablePromise;\n this.type = 1 /* Type.Triggered */;\n this.actions = _cancellablePromise.catch((e) => {\n if (isCancellationError(e)) {\n return emptyCodeActionSet;\n }\n throw e;\n });\n }\n cancel() {\n this._cancellablePromise.cancel();\n }\n }\n CodeActionsState.Triggered = Triggered;\n})(CodeActionsState || (CodeActionsState = {}));\nconst emptyCodeActionSet = {\n allActions: [],\n validActions: [],\n dispose: () => { },\n documentation: [],\n hasAutoFix: false\n};\nexport class CodeActionModel extends Disposable {\n constructor(_editor, _registry, _markerService, contextKeyService, _progressService) {\n super();\n this._editor = _editor;\n this._registry = _registry;\n this._markerService = _markerService;\n this._progressService = _progressService;\n this._codeActionOracle = this._register(new MutableDisposable());\n this._state = CodeActionsState.Empty;\n this._onDidChangeState = this._register(new Emitter());\n this.onDidChangeState = this._onDidChangeState.event;\n _CodeActionModel_isDisposed.set(this, false);\n this._supportedCodeActions = SUPPORTED_CODE_ACTIONS.bindTo(contextKeyService);\n this._register(this._editor.onDidChangeModel(() => this._update()));\n this._register(this._editor.onDidChangeModelLanguage(() => this._update()));\n this._register(this._registry.onDidChange(() => this._update()));\n this._update();\n }\n dispose() {\n if (__classPrivateFieldGet(this, _CodeActionModel_isDisposed, \"f\")) {\n return;\n }\n __classPrivateFieldSet(this, _CodeActionModel_isDisposed, true, \"f\");\n super.dispose();\n this.setState(CodeActionsState.Empty, true);\n }\n _update() {\n if (__classPrivateFieldGet(this, _CodeActionModel_isDisposed, \"f\")) {\n return;\n }\n this._codeActionOracle.value = undefined;\n this.setState(CodeActionsState.Empty);\n const model = this._editor.getModel();\n if (model\n && this._registry.has(model)\n && !this._editor.getOption(83 /* EditorOption.readOnly */)) {\n const supportedActions = [];\n for (const provider of this._registry.all(model)) {\n if (Array.isArray(provider.providedCodeActionKinds)) {\n supportedActions.push(...provider.providedCodeActionKinds);\n }\n }\n this._supportedCodeActions.set(supportedActions.join(' '));\n this._codeActionOracle.value = new CodeActionOracle(this._editor, this._markerService, trigger => {\n var _a;\n if (!trigger) {\n this.setState(CodeActionsState.Empty);\n return;\n }\n const actions = createCancelablePromise(token => getCodeActions(this._registry, model, trigger.selection, trigger.trigger, Progress.None, token));\n if (trigger.trigger.type === 1 /* CodeActionTriggerType.Invoke */) {\n (_a = this._progressService) === null || _a === void 0 ? void 0 : _a.showWhile(actions, 250);\n }\n this.setState(new CodeActionsState.Triggered(trigger.trigger, trigger.selection, trigger.position, actions));\n }, undefined);\n this._codeActionOracle.value.trigger({ type: 2 /* CodeActionTriggerType.Auto */, triggerAction: CodeActionTriggerSource.Default });\n }\n else {\n this._supportedCodeActions.reset();\n }\n }\n trigger(trigger) {\n var _a;\n (_a = this._codeActionOracle.value) === null || _a === void 0 ? void 0 : _a.trigger(trigger);\n }\n setState(newState, skipNotify) {\n if (newState === this._state) {\n return;\n }\n // Cancel old request\n if (this._state.type === 1 /* CodeActionsState.Type.Triggered */) {\n this._state.cancel();\n }\n this._state = newState;\n if (!skipNotify && !__classPrivateFieldGet(this, _CodeActionModel_isDisposed, \"f\")) {\n this._onDidChangeState.fire(newState);\n }\n }\n}\n_CodeActionModel_isDisposed = new WeakMap();\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Lazy } from '../../../../base/common/lazy.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport { EditorAction, EditorCommand, registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { IBulkEditService, ResourceEdit } from '../../../browser/services/bulkEditService.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { codeActionCommandId, fixAllCommandId, organizeImportsCommandId, refactorCommandId, refactorPreviewCommandId, sourceActionCommandId } from './codeAction.js';\nimport { CodeActionUi } from './codeActionUi.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport * as nls from '../../../../nls.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IMarkerService } from '../../../../platform/markers/common/markers.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { CodeActionModel, SUPPORTED_CODE_ACTIONS } from './codeActionModel.js';\nimport { CodeActionCommandArgs, CodeActionKind, CodeActionTriggerSource } from './types.js';\nimport { Context } from './codeActionMenu.js';\nfunction contextKeyForSupportedActions(kind) {\n return ContextKeyExpr.regex(SUPPORTED_CODE_ACTIONS.keys()[0], new RegExp('(\\\\s|^)' + escapeRegExpCharacters(kind.value) + '\\\\b'));\n}\nfunction refactorTrigger(editor, userArgs, preview, codeActionFrom) {\n const args = CodeActionCommandArgs.fromUser(userArgs, {\n kind: CodeActionKind.Refactor,\n apply: \"never\" /* CodeActionAutoApply.Never */\n });\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\n ? args.preferred\n ? nls.localize('editor.action.refactor.noneMessage.preferred.kind', \"No preferred refactorings for '{0}' available\", userArgs.kind)\n : nls.localize('editor.action.refactor.noneMessage.kind', \"No refactorings for '{0}' available\", userArgs.kind)\n : args.preferred\n ? nls.localize('editor.action.refactor.noneMessage.preferred', \"No preferred refactorings available\")\n : nls.localize('editor.action.refactor.noneMessage', \"No refactorings available\"), {\n include: CodeActionKind.Refactor.contains(args.kind) ? args.kind : CodeActionKind.None,\n onlyIncludePreferredActions: args.preferred\n }, args.apply, preview, codeActionFrom);\n}\nconst argsSchema = {\n type: 'object',\n defaultSnippets: [{ body: { kind: '' } }],\n properties: {\n 'kind': {\n type: 'string',\n description: nls.localize('args.schema.kind', \"Kind of the code action to run.\"),\n },\n 'apply': {\n type: 'string',\n description: nls.localize('args.schema.apply', \"Controls when the returned actions are applied.\"),\n default: \"ifSingle\" /* CodeActionAutoApply.IfSingle */,\n enum: [\"first\" /* CodeActionAutoApply.First */, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, \"never\" /* CodeActionAutoApply.Never */],\n enumDescriptions: [\n nls.localize('args.schema.apply.first', \"Always apply the first returned code action.\"),\n nls.localize('args.schema.apply.ifSingle', \"Apply the first returned code action if it is the only one.\"),\n nls.localize('args.schema.apply.never', \"Do not apply the returned code actions.\"),\n ]\n },\n 'preferred': {\n type: 'boolean',\n default: false,\n description: nls.localize('args.schema.preferred', \"Controls if only preferred code actions should be returned.\"),\n }\n }\n};\nlet QuickFixController = class QuickFixController extends Disposable {\n constructor(editor, markerService, contextKeyService, progressService, _instantiationService, languageFeaturesService) {\n super();\n this._instantiationService = _instantiationService;\n this._editor = editor;\n this._model = this._register(new CodeActionModel(this._editor, languageFeaturesService.codeActionProvider, markerService, contextKeyService, progressService));\n this._register(this._model.onDidChangeState(newState => this.update(newState)));\n this._ui = new Lazy(() => this._register(new CodeActionUi(editor, QuickFixAction.Id, AutoFixAction.Id, {\n applyCodeAction: (action, retrigger, preview) => __awaiter(this, void 0, void 0, function* () {\n try {\n yield this._applyCodeAction(action, preview);\n }\n finally {\n if (retrigger) {\n this._trigger({ type: 2 /* CodeActionTriggerType.Auto */, triggerAction: CodeActionTriggerSource.QuickFix, filter: {} });\n }\n }\n })\n }, this._instantiationService)));\n }\n static get(editor) {\n return editor.getContribution(QuickFixController.ID);\n }\n update(newState) {\n this._ui.getValue().update(newState);\n }\n hideCodeActionMenu() {\n if (this._ui.hasValue()) {\n this._ui.getValue().hideCodeActionWidget();\n }\n }\n navigateCodeActionList(navUp) {\n if (this._ui.hasValue()) {\n this._ui.getValue().navigateList(navUp);\n }\n }\n selectedOption() {\n if (this._ui.hasValue()) {\n this._ui.getValue().onEnter();\n }\n }\n selectedOptionWithPreview() {\n if (this._ui.hasValue()) {\n this._ui.getValue().onPreviewEnter();\n }\n }\n showCodeActions(trigger, actions, at) {\n return this._ui.getValue().showCodeActionList(trigger, actions, at, { includeDisabledActions: false, fromLightbulb: false });\n }\n manualTriggerAtCurrentPosition(notAvailableMessage, triggerAction, filter, autoApply, preview) {\n var _a;\n if (!this._editor.hasModel()) {\n return;\n }\n (_a = MessageController.get(this._editor)) === null || _a === void 0 ? void 0 : _a.closeMessage();\n const triggerPosition = this._editor.getPosition();\n this._trigger({ type: 1 /* CodeActionTriggerType.Invoke */, triggerAction, filter, autoApply, context: { notAvailableMessage, position: triggerPosition }, preview });\n }\n _trigger(trigger) {\n return this._model.trigger(trigger);\n }\n _applyCodeAction(action, preview) {\n return this._instantiationService.invokeFunction(applyCodeAction, action, ApplyCodeActionReason.FromCodeActions, { preview, editor: this._editor });\n }\n};\nQuickFixController.ID = 'editor.contrib.quickFixController';\nQuickFixController = __decorate([\n __param(1, IMarkerService),\n __param(2, IContextKeyService),\n __param(3, IEditorProgressService),\n __param(4, IInstantiationService),\n __param(5, ILanguageFeaturesService)\n], QuickFixController);\nexport { QuickFixController };\nexport var ApplyCodeActionReason;\n(function (ApplyCodeActionReason) {\n ApplyCodeActionReason[\"OnSave\"] = \"onSave\";\n ApplyCodeActionReason[\"FromProblemsView\"] = \"fromProblemsView\";\n ApplyCodeActionReason[\"FromCodeActions\"] = \"fromCodeActions\";\n})(ApplyCodeActionReason || (ApplyCodeActionReason = {}));\nexport function applyCodeAction(accessor, item, codeActionReason, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const bulkEditService = accessor.get(IBulkEditService);\n const commandService = accessor.get(ICommandService);\n const telemetryService = accessor.get(ITelemetryService);\n const notificationService = accessor.get(INotificationService);\n telemetryService.publicLog2('codeAction.applyCodeAction', {\n codeActionTitle: item.action.title,\n codeActionKind: item.action.kind,\n codeActionIsPreferred: !!item.action.isPreferred,\n reason: codeActionReason,\n });\n yield item.resolve(CancellationToken.None);\n if (item.action.edit) {\n yield bulkEditService.apply(ResourceEdit.convert(item.action.edit), {\n editor: options === null || options === void 0 ? void 0 : options.editor,\n label: item.action.title,\n quotableLabel: item.action.title,\n code: 'undoredo.codeAction',\n respectAutoSaveConfig: true,\n showPreview: options === null || options === void 0 ? void 0 : options.preview,\n });\n }\n if (item.action.command) {\n try {\n yield commandService.executeCommand(item.action.command.id, ...(item.action.command.arguments || []));\n }\n catch (err) {\n const message = asMessage(err);\n notificationService.error(typeof message === 'string'\n ? message\n : nls.localize('applyCodeActionFailed', \"An unknown error occurred while applying the code action\"));\n }\n }\n });\n}\nfunction asMessage(err) {\n if (typeof err === 'string') {\n return err;\n }\n else if (err instanceof Error && typeof err.message === 'string') {\n return err.message;\n }\n else {\n return undefined;\n }\n}\nfunction triggerCodeActionsForEditorSelection(editor, notAvailableMessage, filter, autoApply, preview = false, triggerAction = CodeActionTriggerSource.Default) {\n if (editor.hasModel()) {\n const controller = QuickFixController.get(editor);\n controller === null || controller === void 0 ? void 0 : controller.manualTriggerAtCurrentPosition(notAvailableMessage, triggerAction, filter, autoApply, preview);\n }\n}\nexport class QuickFixAction extends EditorAction {\n constructor() {\n super({\n id: QuickFixAction.Id,\n label: nls.localize('quickfix.trigger.label', \"Quick Fix...\"),\n alias: 'Quick Fix...',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 84 /* KeyCode.Period */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.quickFix.noneMessage', \"No code actions available\"), undefined, undefined, false, CodeActionTriggerSource.QuickFix);\n }\n}\nQuickFixAction.Id = 'editor.action.quickFix';\nexport class CodeActionCommand extends EditorCommand {\n constructor() {\n super({\n id: codeActionCommandId,\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n description: {\n description: 'Trigger a code action',\n args: [{ name: 'args', schema: argsSchema, }]\n }\n });\n }\n runEditorCommand(_accessor, editor, userArgs) {\n const args = CodeActionCommandArgs.fromUser(userArgs, {\n kind: CodeActionKind.Empty,\n apply: \"ifSingle\" /* CodeActionAutoApply.IfSingle */,\n });\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\n ? args.preferred\n ? nls.localize('editor.action.codeAction.noneMessage.preferred.kind', \"No preferred code actions for '{0}' available\", userArgs.kind)\n : nls.localize('editor.action.codeAction.noneMessage.kind', \"No code actions for '{0}' available\", userArgs.kind)\n : args.preferred\n ? nls.localize('editor.action.codeAction.noneMessage.preferred', \"No preferred code actions available\")\n : nls.localize('editor.action.codeAction.noneMessage', \"No code actions available\"), {\n include: args.kind,\n includeSourceActions: true,\n onlyIncludePreferredActions: args.preferred,\n }, args.apply);\n }\n}\nexport class RefactorAction extends EditorAction {\n constructor() {\n super({\n id: refactorCommandId,\n label: nls.localize('refactor.label', \"Refactor...\"),\n alias: 'Refactor...',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 48 /* KeyCode.KeyR */,\n mac: {\n primary: 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 48 /* KeyCode.KeyR */\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: '1_modification',\n order: 2,\n when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Refactor)),\n },\n description: {\n description: 'Refactor...',\n args: [{ name: 'args', schema: argsSchema }]\n }\n });\n }\n run(_accessor, editor, userArgs) {\n return refactorTrigger(editor, userArgs, false, CodeActionTriggerSource.Refactor);\n }\n}\nexport class RefactorPreview extends EditorAction {\n constructor() {\n super({\n id: refactorPreviewCommandId,\n label: nls.localize('refactor.preview.label', \"Refactor with Preview...\"),\n alias: 'Refactor Preview...',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n description: {\n description: 'Refactor Preview...',\n args: [{ name: 'args', schema: argsSchema }]\n }\n });\n }\n run(_accessor, editor, userArgs) {\n return refactorTrigger(editor, userArgs, true, CodeActionTriggerSource.RefactorPreview);\n }\n}\nexport class SourceAction extends EditorAction {\n constructor() {\n super({\n id: sourceActionCommandId,\n label: nls.localize('source.label', \"Source Action...\"),\n alias: 'Source Action...',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\n contextMenuOpts: {\n group: '1_modification',\n order: 2.1,\n when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Source)),\n },\n description: {\n description: 'Source Action...',\n args: [{ name: 'args', schema: argsSchema }]\n }\n });\n }\n run(_accessor, editor, userArgs) {\n const args = CodeActionCommandArgs.fromUser(userArgs, {\n kind: CodeActionKind.Source,\n apply: \"never\" /* CodeActionAutoApply.Never */\n });\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\n ? args.preferred\n ? nls.localize('editor.action.source.noneMessage.preferred.kind', \"No preferred source actions for '{0}' available\", userArgs.kind)\n : nls.localize('editor.action.source.noneMessage.kind', \"No source actions for '{0}' available\", userArgs.kind)\n : args.preferred\n ? nls.localize('editor.action.source.noneMessage.preferred', \"No preferred source actions available\")\n : nls.localize('editor.action.source.noneMessage', \"No source actions available\"), {\n include: CodeActionKind.Source.contains(args.kind) ? args.kind : CodeActionKind.None,\n includeSourceActions: true,\n onlyIncludePreferredActions: args.preferred,\n }, args.apply, undefined, CodeActionTriggerSource.SourceAction);\n }\n}\nexport class OrganizeImportsAction extends EditorAction {\n constructor() {\n super({\n id: organizeImportsCommandId,\n label: nls.localize('organizeImports.label', \"Organize Imports\"),\n alias: 'Organize Imports',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceOrganizeImports)),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 45 /* KeyCode.KeyO */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n });\n }\n run(_accessor, editor) {\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.organize.noneMessage', \"No organize imports action available\"), { include: CodeActionKind.SourceOrganizeImports, includeSourceActions: true }, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, undefined, CodeActionTriggerSource.OrganizeImports);\n }\n}\nexport class FixAllAction extends EditorAction {\n constructor() {\n super({\n id: fixAllCommandId,\n label: nls.localize('fixAll.label', \"Fix All\"),\n alias: 'Fix All',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceFixAll))\n });\n }\n run(_accessor, editor) {\n return triggerCodeActionsForEditorSelection(editor, nls.localize('fixAll.noneMessage', \"No fix all action available\"), { include: CodeActionKind.SourceFixAll, includeSourceActions: true }, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, undefined, CodeActionTriggerSource.FixAll);\n }\n}\nexport class AutoFixAction extends EditorAction {\n constructor() {\n super({\n id: AutoFixAction.Id,\n label: nls.localize('autoFix.label', \"Auto Fix...\"),\n alias: 'Auto Fix...',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.QuickFix)),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 84 /* KeyCode.Period */,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 84 /* KeyCode.Period */\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.autoFix.noneMessage', \"No auto fixes available\"), {\n include: CodeActionKind.QuickFix,\n onlyIncludePreferredActions: true\n }, \"ifSingle\" /* CodeActionAutoApply.IfSingle */, undefined, CodeActionTriggerSource.AutoFix);\n }\n}\nAutoFixAction.Id = 'editor.action.autoFix';\nconst CodeActionContribution = EditorCommand.bindToContribution(QuickFixController.get);\nconst weight = 100 /* KeybindingWeight.EditorContrib */ + 90;\nregisterEditorCommand(new CodeActionContribution({\n id: 'hideCodeActionMenuWidget',\n precondition: Context.Visible,\n handler(x) {\n x.hideCodeActionMenu();\n },\n kbOpts: {\n weight: weight,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterEditorCommand(new CodeActionContribution({\n id: 'focusPreviousCodeAction',\n precondition: Context.Visible,\n handler(x) {\n x.navigateCodeActionList(true);\n },\n kbOpts: {\n weight: weight + 100000,\n primary: 16 /* KeyCode.UpArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */],\n }\n}));\nregisterEditorCommand(new CodeActionContribution({\n id: 'focusNextCodeAction',\n precondition: Context.Visible,\n handler(x) {\n x.navigateCodeActionList(false);\n },\n kbOpts: {\n weight: weight + 100000,\n primary: 18 /* KeyCode.DownArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */],\n }\n}));\nregisterEditorCommand(new CodeActionContribution({\n id: 'onEnterSelectCodeAction',\n precondition: Context.Visible,\n handler(x) {\n x.selectedOption();\n },\n kbOpts: {\n weight: weight + 100000,\n primary: 3 /* KeyCode.Enter */,\n secondary: [1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */],\n }\n}));\nregisterEditorCommand(new CodeActionContribution({\n id: 'onEnterSelectCodeActionWithPreview',\n precondition: Context.Visible,\n handler(x) {\n x.selectedOptionWithPreview();\n },\n kbOpts: {\n weight: weight + 100000,\n primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { editorConfigurationBaseNode } from '../../../common/config/editorConfigurationSchema.js';\nimport * as nls from '../../../../nls.js';\nimport { Extensions } from '../../../../platform/configuration/common/configurationRegistry.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nRegistry.as(Extensions.Configuration).registerConfiguration(Object.assign(Object.assign({}, editorConfigurationBaseNode), { properties: {\n 'editor.experimental.useCustomCodeActionMenu': {\n type: 'boolean',\n tags: ['experimental'],\n scope: 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,\n description: nls.localize('codeActionWidget', \"Enabling this adjusts how the code action menu is rendered.\"),\n default: false,\n },\n } }));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { AutoFixAction, CodeActionCommand, FixAllAction, OrganizeImportsAction, QuickFixAction, QuickFixController, RefactorAction, RefactorPreview, SourceAction } from './codeActionCommands.js';\nimport './codeActionWidgetContribution.js';\nregisterEditorContribution(QuickFixController.ID, QuickFixController);\nregisterEditorAction(QuickFixAction);\nregisterEditorAction(RefactorAction);\nregisterEditorAction(RefactorPreview);\nregisterEditorAction(SourceAction);\nregisterEditorAction(OrganizeImportsAction);\nregisterEditorAction(AutoFixAction);\nregisterEditorAction(FixAllAction);\nregisterEditorCommand(new CodeActionCommand());\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class CodeActionKind {\n constructor(value) {\n this.value = value;\n }\n equals(other) {\n return this.value === other.value;\n }\n contains(other) {\n return this.equals(other) || this.value === '' || other.value.startsWith(this.value + CodeActionKind.sep);\n }\n intersects(other) {\n return this.contains(other) || other.contains(this);\n }\n append(part) {\n return new CodeActionKind(this.value + CodeActionKind.sep + part);\n }\n}\nCodeActionKind.sep = '.';\nCodeActionKind.None = new CodeActionKind('@@none@@'); // Special code action that contains nothing\nCodeActionKind.Empty = new CodeActionKind('');\nCodeActionKind.QuickFix = new CodeActionKind('quickfix');\nCodeActionKind.Refactor = new CodeActionKind('refactor');\nCodeActionKind.Source = new CodeActionKind('source');\nCodeActionKind.SourceOrganizeImports = CodeActionKind.Source.append('organizeImports');\nCodeActionKind.SourceFixAll = CodeActionKind.Source.append('fixAll');\nexport var CodeActionTriggerSource;\n(function (CodeActionTriggerSource) {\n CodeActionTriggerSource[\"Refactor\"] = \"refactor\";\n CodeActionTriggerSource[\"RefactorPreview\"] = \"refactor preview\";\n CodeActionTriggerSource[\"Lightbulb\"] = \"lightbulb\";\n CodeActionTriggerSource[\"Default\"] = \"other (default)\";\n CodeActionTriggerSource[\"SourceAction\"] = \"source action\";\n CodeActionTriggerSource[\"QuickFix\"] = \"quick fix action\";\n CodeActionTriggerSource[\"FixAll\"] = \"fix all\";\n CodeActionTriggerSource[\"OrganizeImports\"] = \"organize imports\";\n CodeActionTriggerSource[\"AutoFix\"] = \"auto fix\";\n CodeActionTriggerSource[\"QuickFixHover\"] = \"quick fix hover window\";\n CodeActionTriggerSource[\"OnSave\"] = \"save participants\";\n CodeActionTriggerSource[\"ProblemsView\"] = \"problems view\";\n})(CodeActionTriggerSource || (CodeActionTriggerSource = {}));\nexport function mayIncludeActionsOfKind(filter, providedKind) {\n // A provided kind may be a subset or superset of our filtered kind.\n if (filter.include && !filter.include.intersects(providedKind)) {\n return false;\n }\n if (filter.excludes) {\n if (filter.excludes.some(exclude => excludesAction(providedKind, exclude, filter.include))) {\n return false;\n }\n }\n // Don't return source actions unless they are explicitly requested\n if (!filter.includeSourceActions && CodeActionKind.Source.contains(providedKind)) {\n return false;\n }\n return true;\n}\nexport function filtersAction(filter, action) {\n const actionKind = action.kind ? new CodeActionKind(action.kind) : undefined;\n // Filter out actions by kind\n if (filter.include) {\n if (!actionKind || !filter.include.contains(actionKind)) {\n return false;\n }\n }\n if (filter.excludes) {\n if (actionKind && filter.excludes.some(exclude => excludesAction(actionKind, exclude, filter.include))) {\n return false;\n }\n }\n // Don't return source actions unless they are explicitly requested\n if (!filter.includeSourceActions) {\n if (actionKind && CodeActionKind.Source.contains(actionKind)) {\n return false;\n }\n }\n if (filter.onlyIncludePreferredActions) {\n if (!action.isPreferred) {\n return false;\n }\n }\n return true;\n}\nfunction excludesAction(providedKind, exclude, include) {\n if (!exclude.contains(providedKind)) {\n return false;\n }\n if (include && exclude.contains(include)) {\n // The include is more specific, don't filter out\n return false;\n }\n return true;\n}\nexport class CodeActionCommandArgs {\n constructor(kind, apply, preferred) {\n this.kind = kind;\n this.apply = apply;\n this.preferred = preferred;\n }\n static fromUser(arg, defaults) {\n if (!arg || typeof arg !== 'object') {\n return new CodeActionCommandArgs(defaults.kind, defaults.apply, false);\n }\n return new CodeActionCommandArgs(CodeActionCommandArgs.getKindFromUser(arg, defaults.kind), CodeActionCommandArgs.getApplyFromUser(arg, defaults.apply), CodeActionCommandArgs.getPreferredUser(arg));\n }\n static getApplyFromUser(arg, defaultAutoApply) {\n switch (typeof arg.apply === 'string' ? arg.apply.toLowerCase() : '') {\n case 'first': return \"first\" /* CodeActionAutoApply.First */;\n case 'never': return \"never\" /* CodeActionAutoApply.Never */;\n case 'ifsingle': return \"ifSingle\" /* CodeActionAutoApply.IfSingle */;\n default: return defaultAutoApply;\n }\n }\n static getKindFromUser(arg, defaultKind) {\n return typeof arg.kind === 'string'\n ? new CodeActionKind(arg.kind)\n : defaultKind;\n }\n static getPreferredUser(arg) {\n return typeof arg.preferred === 'boolean'\n ? arg.preferred\n : false;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class CodeLensModel {\n constructor() {\n this.lenses = [];\n this._disposables = new DisposableStore();\n }\n dispose() {\n this._disposables.dispose();\n }\n get isDisposed() {\n return this._disposables.isDisposed;\n }\n add(list, provider) {\n this._disposables.add(list);\n for (const symbol of list.lenses) {\n this.lenses.push({ symbol, provider });\n }\n }\n}\nexport function getCodeLensModel(registry, model, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const provider = registry.ordered(model);\n const providerRanks = new Map();\n const result = new CodeLensModel();\n const promises = provider.map((provider, i) => __awaiter(this, void 0, void 0, function* () {\n providerRanks.set(provider, i);\n try {\n const list = yield Promise.resolve(provider.provideCodeLenses(model, token));\n if (list) {\n result.add(list, provider);\n }\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n }));\n yield Promise.all(promises);\n result.lenses = result.lenses.sort((a, b) => {\n // sort by lineNumber, provider-rank, and column\n if (a.symbol.range.startLineNumber < b.symbol.range.startLineNumber) {\n return -1;\n }\n else if (a.symbol.range.startLineNumber > b.symbol.range.startLineNumber) {\n return 1;\n }\n else if ((providerRanks.get(a.provider)) < (providerRanks.get(b.provider))) {\n return -1;\n }\n else if ((providerRanks.get(a.provider)) > (providerRanks.get(b.provider))) {\n return 1;\n }\n else if (a.symbol.range.startColumn < b.symbol.range.startColumn) {\n return -1;\n }\n else if (a.symbol.range.startColumn > b.symbol.range.startColumn) {\n return 1;\n }\n else {\n return 0;\n }\n });\n return result;\n });\n}\nCommandsRegistry.registerCommand('_executeCodeLensProvider', function (accessor, ...args) {\n let [uri, itemResolveCount] = args;\n assertType(URI.isUri(uri));\n assertType(typeof itemResolveCount === 'number' || !itemResolveCount);\n const { codeLensProvider } = accessor.get(ILanguageFeaturesService);\n const model = accessor.get(IModelService).getModel(uri);\n if (!model) {\n throw illegalArgument();\n }\n const result = [];\n const disposables = new DisposableStore();\n return getCodeLensModel(codeLensProvider, model, CancellationToken.None).then(value => {\n disposables.add(value);\n const resolve = [];\n for (const item of value.lenses) {\n if (itemResolveCount === undefined || itemResolveCount === null || Boolean(item.symbol.command)) {\n result.push(item.symbol);\n }\n else if (itemResolveCount-- > 0 && item.provider.resolveCodeLens) {\n resolve.push(Promise.resolve(item.provider.resolveCodeLens(model, item.symbol, CancellationToken.None)).then(symbol => result.push(symbol || item.symbol)));\n }\n }\n return Promise.all(resolve);\n }).then(() => {\n return result;\n }).finally(() => {\n // make sure to return results, then (on next tick)\n // dispose the results\n setTimeout(() => disposables.dispose(), 100);\n });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { runWhenIdle } from '../../../../base/common/async.js';\nimport { once } from '../../../../base/common/functional.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CodeLensModel } from './codelens.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService, WillSaveStateReason } from '../../../../platform/storage/common/storage.js';\nexport const ICodeLensCache = createDecorator('ICodeLensCache');\nclass CacheItem {\n constructor(lineCount, data) {\n this.lineCount = lineCount;\n this.data = data;\n }\n}\nlet CodeLensCache = class CodeLensCache {\n constructor(storageService) {\n this._fakeProvider = new class {\n provideCodeLenses() {\n throw new Error('not supported');\n }\n };\n this._cache = new LRUCache(20, 0.75);\n // remove old data\n const oldkey = 'codelens/cache';\n runWhenIdle(() => storageService.remove(oldkey, 1 /* StorageScope.WORKSPACE */));\n // restore lens data on start\n const key = 'codelens/cache2';\n const raw = storageService.get(key, 1 /* StorageScope.WORKSPACE */, '{}');\n this._deserialize(raw);\n // store lens data on shutdown\n once(storageService.onWillSaveState)(e => {\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\n storageService.store(key, this._serialize(), 1 /* StorageScope.WORKSPACE */, 1 /* StorageTarget.MACHINE */);\n }\n });\n }\n put(model, data) {\n // create a copy of the model that is without command-ids\n // but with comand-labels\n const copyItems = data.lenses.map(item => {\n var _a;\n return {\n range: item.symbol.range,\n command: item.symbol.command && { id: '', title: (_a = item.symbol.command) === null || _a === void 0 ? void 0 : _a.title },\n };\n });\n const copyModel = new CodeLensModel();\n copyModel.add({ lenses: copyItems, dispose: () => { } }, this._fakeProvider);\n const item = new CacheItem(model.getLineCount(), copyModel);\n this._cache.set(model.uri.toString(), item);\n }\n get(model) {\n const item = this._cache.get(model.uri.toString());\n return item && item.lineCount === model.getLineCount() ? item.data : undefined;\n }\n delete(model) {\n this._cache.delete(model.uri.toString());\n }\n // --- persistence\n _serialize() {\n const data = Object.create(null);\n for (const [key, value] of this._cache) {\n const lines = new Set();\n for (const d of value.data.lenses) {\n lines.add(d.symbol.range.startLineNumber);\n }\n data[key] = {\n lineCount: value.lineCount,\n lines: [...lines.values()]\n };\n }\n return JSON.stringify(data);\n }\n _deserialize(raw) {\n try {\n const data = JSON.parse(raw);\n for (const key in data) {\n const element = data[key];\n const lenses = [];\n for (const line of element.lines) {\n lenses.push({ range: new Range(line, 1, line, 11) });\n }\n const model = new CodeLensModel();\n model.add({ lenses, dispose() { } }, this._fakeProvider);\n this._cache.set(key, new CacheItem(element.lineCount, model));\n }\n }\n catch (_a) {\n // ignore...\n }\n }\n};\nCodeLensCache = __decorate([\n __param(0, IStorageService)\n], CodeLensCache);\nexport { CodeLensCache };\nregisterSingleton(ICodeLensCache, CodeLensCache);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport { renderLabelWithIcons } from '../../../../base/browser/ui/iconLabel/iconLabels.js';\nimport './codelensWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nclass CodeLensViewZone {\n constructor(afterLineNumber, heightInPx, onHeight) {\n /**\n * We want that this view zone, which reserves space for a code lens appears\n * as close as possible to the next line, so we use a very large value here.\n */\n this.afterColumn = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n this.afterLineNumber = afterLineNumber;\n this.heightInPx = heightInPx;\n this._onHeight = onHeight;\n this.suppressMouseDown = true;\n this.domNode = document.createElement('div');\n }\n onComputedHeight(height) {\n if (this._lastHeight === undefined) {\n this._lastHeight = height;\n }\n else if (this._lastHeight !== height) {\n this._lastHeight = height;\n this._onHeight();\n }\n }\n isVisible() {\n return this._lastHeight !== 0\n && this.domNode.hasAttribute('monaco-visible-view-zone');\n }\n}\nclass CodeLensContentWidget {\n constructor(editor, className, line) {\n // Editor.IContentWidget.allowEditorOverflow\n this.allowEditorOverflow = false;\n this.suppressMouseDown = true;\n this._commands = new Map();\n this._isEmpty = true;\n this._editor = editor;\n this._id = `codelens.widget-${(CodeLensContentWidget._idPool++)}`;\n this.updatePosition(line);\n this._domNode = document.createElement('span');\n this._domNode.className = `codelens-decoration ${className}`;\n }\n withCommands(lenses, animate) {\n this._commands.clear();\n const children = [];\n let hasSymbol = false;\n for (let i = 0; i < lenses.length; i++) {\n const lens = lenses[i];\n if (!lens) {\n continue;\n }\n hasSymbol = true;\n if (lens.command) {\n const title = renderLabelWithIcons(lens.command.title.trim());\n if (lens.command.id) {\n children.push(dom.$('a', { id: String(i), title: lens.command.tooltip, role: 'button' }, ...title));\n this._commands.set(String(i), lens.command);\n }\n else {\n children.push(dom.$('span', { title: lens.command.tooltip }, ...title));\n }\n if (i + 1 < lenses.length) {\n children.push(dom.$('span', undefined, '\\u00a0|\\u00a0'));\n }\n }\n }\n if (!hasSymbol) {\n // symbols but no commands\n dom.reset(this._domNode, dom.$('span', undefined, 'no commands'));\n }\n else {\n // symbols and commands\n dom.reset(this._domNode, ...children);\n if (this._isEmpty && animate) {\n this._domNode.classList.add('fadein');\n }\n this._isEmpty = false;\n }\n }\n getCommand(link) {\n return link.parentElement === this._domNode\n ? this._commands.get(link.id)\n : undefined;\n }\n getId() {\n return this._id;\n }\n getDomNode() {\n return this._domNode;\n }\n updatePosition(line) {\n const column = this._editor.getModel().getLineFirstNonWhitespaceColumn(line);\n this._widgetPosition = {\n position: { lineNumber: line, column: column },\n preference: [1 /* ContentWidgetPositionPreference.ABOVE */]\n };\n }\n getPosition() {\n return this._widgetPosition || null;\n }\n}\nCodeLensContentWidget._idPool = 0;\nexport class CodeLensHelper {\n constructor() {\n this._removeDecorations = [];\n this._addDecorations = [];\n this._addDecorationsCallbacks = [];\n }\n addDecoration(decoration, callback) {\n this._addDecorations.push(decoration);\n this._addDecorationsCallbacks.push(callback);\n }\n removeDecoration(decorationId) {\n this._removeDecorations.push(decorationId);\n }\n commit(changeAccessor) {\n const resultingDecorations = changeAccessor.deltaDecorations(this._removeDecorations, this._addDecorations);\n for (let i = 0, len = resultingDecorations.length; i < len; i++) {\n this._addDecorationsCallbacks[i](resultingDecorations[i]);\n }\n }\n}\nexport class CodeLensWidget {\n constructor(data, editor, className, helper, viewZoneChangeAccessor, heightInPx, updateCallback) {\n this._isDisposed = false;\n this._editor = editor;\n this._className = className;\n this._data = data;\n // create combined range, track all ranges with decorations,\n // check if there is already something to render\n this._decorationIds = [];\n let range;\n const lenses = [];\n this._data.forEach((codeLensData, i) => {\n if (codeLensData.symbol.command) {\n lenses.push(codeLensData.symbol);\n }\n helper.addDecoration({\n range: codeLensData.symbol.range,\n options: ModelDecorationOptions.EMPTY\n }, id => this._decorationIds[i] = id);\n // the range contains all lenses on this line\n if (!range) {\n range = Range.lift(codeLensData.symbol.range);\n }\n else {\n range = Range.plusRange(range, codeLensData.symbol.range);\n }\n });\n this._viewZone = new CodeLensViewZone(range.startLineNumber - 1, heightInPx, updateCallback);\n this._viewZoneId = viewZoneChangeAccessor.addZone(this._viewZone);\n if (lenses.length > 0) {\n this._createContentWidgetIfNecessary();\n this._contentWidget.withCommands(lenses, false);\n }\n }\n _createContentWidgetIfNecessary() {\n if (!this._contentWidget) {\n this._contentWidget = new CodeLensContentWidget(this._editor, this._className, this._viewZone.afterLineNumber + 1);\n this._editor.addContentWidget(this._contentWidget);\n }\n else {\n this._editor.layoutContentWidget(this._contentWidget);\n }\n }\n dispose(helper, viewZoneChangeAccessor) {\n this._decorationIds.forEach(helper.removeDecoration, helper);\n this._decorationIds = [];\n viewZoneChangeAccessor === null || viewZoneChangeAccessor === void 0 ? void 0 : viewZoneChangeAccessor.removeZone(this._viewZoneId);\n if (this._contentWidget) {\n this._editor.removeContentWidget(this._contentWidget);\n this._contentWidget = undefined;\n }\n this._isDisposed = true;\n }\n isDisposed() {\n return this._isDisposed;\n }\n isValid() {\n return this._decorationIds.some((id, i) => {\n const range = this._editor.getModel().getDecorationRange(id);\n const symbol = this._data[i].symbol;\n return !!(range && Range.isEmpty(symbol.range) === range.isEmpty());\n });\n }\n updateCodeLensSymbols(data, helper) {\n this._decorationIds.forEach(helper.removeDecoration, helper);\n this._decorationIds = [];\n this._data = data;\n this._data.forEach((codeLensData, i) => {\n helper.addDecoration({\n range: codeLensData.symbol.range,\n options: ModelDecorationOptions.EMPTY\n }, id => this._decorationIds[i] = id);\n });\n }\n updateHeight(height, viewZoneChangeAccessor) {\n this._viewZone.heightInPx = height;\n viewZoneChangeAccessor.layoutZone(this._viewZoneId);\n if (this._contentWidget) {\n this._editor.layoutContentWidget(this._contentWidget);\n }\n }\n computeIfNecessary(model) {\n if (!this._viewZone.isVisible()) {\n return null;\n }\n // Read editor current state\n for (let i = 0; i < this._decorationIds.length; i++) {\n const range = model.getDecorationRange(this._decorationIds[i]);\n if (range) {\n this._data[i].symbol.range = range;\n }\n }\n return this._data;\n }\n updateCommands(symbols) {\n this._createContentWidgetIfNecessary();\n this._contentWidget.withCommands(symbols, true);\n for (let i = 0; i < this._data.length; i++) {\n const resolved = symbols[i];\n if (resolved) {\n const { symbol } = this._data[i];\n symbol.command = resolved.command || symbol.command;\n }\n }\n }\n getCommand(link) {\n var _a;\n return (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.getCommand(link);\n }\n getLineNumber() {\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\n if (range) {\n return range.startLineNumber;\n }\n return -1;\n }\n update(viewZoneChangeAccessor) {\n if (this.isValid()) {\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\n if (range) {\n this._viewZone.afterLineNumber = range.startLineNumber - 1;\n viewZoneChangeAccessor.layoutZone(this._viewZoneId);\n if (this._contentWidget) {\n this._contentWidget.updatePosition(range.startLineNumber);\n this._editor.layoutContentWidget(this._contentWidget);\n }\n }\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { createCancelablePromise, disposableTimeout, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { hash } from '../../../../base/common/hash.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/editorOptions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { getCodeLensModel } from './codelens.js';\nimport { ICodeLensCache } from './codeLensCache.js';\nimport { CodeLensHelper, CodeLensWidget } from './codelensWidget.js';\nimport { localize } from '../../../../nls.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nlet CodeLensContribution = class CodeLensContribution {\n constructor(_editor, _languageFeaturesService, debounceService, _commandService, _notificationService, _codeLensCache) {\n this._editor = _editor;\n this._languageFeaturesService = _languageFeaturesService;\n this._commandService = _commandService;\n this._notificationService = _notificationService;\n this._codeLensCache = _codeLensCache;\n this._disposables = new DisposableStore();\n this._localToDispose = new DisposableStore();\n this._lenses = [];\n this._oldCodeLensModels = new DisposableStore();\n this._provideCodeLensDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensProvide', { min: 250 });\n this._resolveCodeLensesDebounce = debounceService.for(_languageFeaturesService.codeLensProvider, 'CodeLensResolve', { min: 250, salt: 'resolve' });\n this._resolveCodeLensesScheduler = new RunOnceScheduler(() => this._resolveCodeLensesInViewport(), this._resolveCodeLensesDebounce.default());\n this._disposables.add(this._editor.onDidChangeModel(() => this._onModelChange()));\n this._disposables.add(this._editor.onDidChangeModelLanguage(() => this._onModelChange()));\n this._disposables.add(this._editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(46 /* EditorOption.fontInfo */) || e.hasChanged(16 /* EditorOption.codeLensFontSize */) || e.hasChanged(15 /* EditorOption.codeLensFontFamily */)) {\n this._updateLensStyle();\n }\n if (e.hasChanged(14 /* EditorOption.codeLens */)) {\n this._onModelChange();\n }\n }));\n this._disposables.add(_languageFeaturesService.codeLensProvider.onDidChange(this._onModelChange, this));\n this._onModelChange();\n this._styleClassName = '_' + hash(this._editor.getId()).toString(16);\n this._styleElement = dom.createStyleSheet(dom.isInShadowDOM(this._editor.getContainerDomNode())\n ? this._editor.getContainerDomNode()\n : undefined);\n this._updateLensStyle();\n }\n dispose() {\n var _a;\n this._localDispose();\n this._disposables.dispose();\n this._oldCodeLensModels.dispose();\n (_a = this._currentCodeLensModel) === null || _a === void 0 ? void 0 : _a.dispose();\n this._styleElement.remove();\n }\n _getLayoutInfo() {\n const lineHeightFactor = Math.max(1.3, this._editor.getOption(61 /* EditorOption.lineHeight */) / this._editor.getOption(48 /* EditorOption.fontSize */));\n let fontSize = this._editor.getOption(16 /* EditorOption.codeLensFontSize */);\n if (!fontSize || fontSize < 5) {\n fontSize = (this._editor.getOption(48 /* EditorOption.fontSize */) * .9) | 0;\n }\n return {\n fontSize,\n codeLensHeight: (fontSize * lineHeightFactor) | 0,\n };\n }\n _updateLensStyle() {\n const { codeLensHeight, fontSize } = this._getLayoutInfo();\n const fontFamily = this._editor.getOption(15 /* EditorOption.codeLensFontFamily */);\n const editorFontInfo = this._editor.getOption(46 /* EditorOption.fontInfo */);\n const fontFamilyVar = `--codelens-font-family${this._styleClassName}`;\n const fontFeaturesVar = `--codelens-font-features${this._styleClassName}`;\n let newStyle = `\n\t\t.monaco-editor .codelens-decoration.${this._styleClassName} { line-height: ${codeLensHeight}px; font-size: ${fontSize}px; padding-right: ${Math.round(fontSize * 0.5)}px; font-feature-settings: var(${fontFeaturesVar}) }\n\t\t.monaco-editor .codelens-decoration.${this._styleClassName} span.codicon { line-height: ${codeLensHeight}px; font-size: ${fontSize}px; }\n\t\t`;\n if (fontFamily) {\n newStyle += `.monaco-editor .codelens-decoration.${this._styleClassName} { font-family: var(${fontFamilyVar}), ${EDITOR_FONT_DEFAULTS.fontFamily}}`;\n }\n this._styleElement.textContent = newStyle;\n this._editor.getContainerDomNode().style.setProperty(fontFamilyVar, fontFamily !== null && fontFamily !== void 0 ? fontFamily : 'inherit');\n this._editor.getContainerDomNode().style.setProperty(fontFeaturesVar, editorFontInfo.fontFeatureSettings);\n //\n this._editor.changeViewZones(accessor => {\n for (const lens of this._lenses) {\n lens.updateHeight(codeLensHeight, accessor);\n }\n });\n }\n _localDispose() {\n var _a, _b, _c;\n (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n this._getCodeLensModelPromise = undefined;\n (_b = this._resolveCodeLensesPromise) === null || _b === void 0 ? void 0 : _b.cancel();\n this._resolveCodeLensesPromise = undefined;\n this._localToDispose.clear();\n this._oldCodeLensModels.clear();\n (_c = this._currentCodeLensModel) === null || _c === void 0 ? void 0 : _c.dispose();\n }\n _onModelChange() {\n this._localDispose();\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n if (!this._editor.getOption(14 /* EditorOption.codeLens */)) {\n return;\n }\n const cachedLenses = this._codeLensCache.get(model);\n if (cachedLenses) {\n this._renderCodeLensSymbols(cachedLenses);\n }\n if (!this._languageFeaturesService.codeLensProvider.has(model)) {\n // no provider -> return but check with\n // cached lenses. they expire after 30 seconds\n if (cachedLenses) {\n this._localToDispose.add(disposableTimeout(() => {\n const cachedLensesNow = this._codeLensCache.get(model);\n if (cachedLenses === cachedLensesNow) {\n this._codeLensCache.delete(model);\n this._onModelChange();\n }\n }, 30 * 1000));\n }\n return;\n }\n for (const provider of this._languageFeaturesService.codeLensProvider.all(model)) {\n if (typeof provider.onDidChange === 'function') {\n const registration = provider.onDidChange(() => scheduler.schedule());\n this._localToDispose.add(registration);\n }\n }\n const scheduler = new RunOnceScheduler(() => {\n var _a;\n const t1 = Date.now();\n (_a = this._getCodeLensModelPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n this._getCodeLensModelPromise = createCancelablePromise(token => getCodeLensModel(this._languageFeaturesService.codeLensProvider, model, token));\n this._getCodeLensModelPromise.then(result => {\n if (this._currentCodeLensModel) {\n this._oldCodeLensModels.add(this._currentCodeLensModel);\n }\n this._currentCodeLensModel = result;\n // cache model to reduce flicker\n this._codeLensCache.put(model, result);\n // update moving average\n const newDelay = this._provideCodeLensDebounce.update(model, Date.now() - t1);\n scheduler.delay = newDelay;\n // render lenses\n this._renderCodeLensSymbols(result);\n // dom.scheduleAtNextAnimationFrame(() => this._resolveCodeLensesInViewport());\n this._resolveCodeLensesInViewportSoon();\n }, onUnexpectedError);\n }, this._provideCodeLensDebounce.get(model));\n this._localToDispose.add(scheduler);\n this._localToDispose.add(toDisposable(() => this._resolveCodeLensesScheduler.cancel()));\n this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n this._editor.changeDecorations(decorationsAccessor => {\n this._editor.changeViewZones(viewZonesAccessor => {\n const toDispose = [];\n let lastLensLineNumber = -1;\n this._lenses.forEach((lens) => {\n if (!lens.isValid() || lastLensLineNumber === lens.getLineNumber()) {\n // invalid -> lens collapsed, attach range doesn't exist anymore\n // line_number -> lenses should never be on the same line\n toDispose.push(lens);\n }\n else {\n lens.update(viewZonesAccessor);\n lastLensLineNumber = lens.getLineNumber();\n }\n });\n const helper = new CodeLensHelper();\n toDispose.forEach((l) => {\n l.dispose(helper, viewZonesAccessor);\n this._lenses.splice(this._lenses.indexOf(l), 1);\n });\n helper.commit(decorationsAccessor);\n });\n });\n // Ask for all references again\n scheduler.schedule();\n }));\n this._localToDispose.add(this._editor.onDidFocusEditorWidget(() => {\n scheduler.schedule();\n }));\n this._localToDispose.add(this._editor.onDidScrollChange(e => {\n if (e.scrollTopChanged && this._lenses.length > 0) {\n this._resolveCodeLensesInViewportSoon();\n }\n }));\n this._localToDispose.add(this._editor.onDidLayoutChange(() => {\n this._resolveCodeLensesInViewportSoon();\n }));\n this._localToDispose.add(toDisposable(() => {\n if (this._editor.getModel()) {\n const scrollState = StableEditorScrollState.capture(this._editor);\n this._editor.changeDecorations(decorationsAccessor => {\n this._editor.changeViewZones(viewZonesAccessor => {\n this._disposeAllLenses(decorationsAccessor, viewZonesAccessor);\n });\n });\n scrollState.restore(this._editor);\n }\n else {\n // No accessors available\n this._disposeAllLenses(undefined, undefined);\n }\n }));\n this._localToDispose.add(this._editor.onMouseDown(e => {\n if (e.target.type !== 9 /* MouseTargetType.CONTENT_WIDGET */) {\n return;\n }\n let target = e.target.element;\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'SPAN') {\n target = target.parentElement;\n }\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'A') {\n for (const lens of this._lenses) {\n const command = lens.getCommand(target);\n if (command) {\n this._commandService.executeCommand(command.id, ...(command.arguments || [])).catch(err => this._notificationService.error(err));\n break;\n }\n }\n }\n }));\n scheduler.schedule();\n }\n _disposeAllLenses(decChangeAccessor, viewZoneChangeAccessor) {\n const helper = new CodeLensHelper();\n for (const lens of this._lenses) {\n lens.dispose(helper, viewZoneChangeAccessor);\n }\n if (decChangeAccessor) {\n helper.commit(decChangeAccessor);\n }\n this._lenses.length = 0;\n }\n _renderCodeLensSymbols(symbols) {\n if (!this._editor.hasModel()) {\n return;\n }\n const maxLineNumber = this._editor.getModel().getLineCount();\n const groups = [];\n let lastGroup;\n for (const symbol of symbols.lenses) {\n const line = symbol.symbol.range.startLineNumber;\n if (line < 1 || line > maxLineNumber) {\n // invalid code lens\n continue;\n }\n else if (lastGroup && lastGroup[lastGroup.length - 1].symbol.range.startLineNumber === line) {\n // on same line as previous\n lastGroup.push(symbol);\n }\n else {\n // on later line as previous\n lastGroup = [symbol];\n groups.push(lastGroup);\n }\n }\n const scrollState = StableEditorScrollState.capture(this._editor);\n const layoutInfo = this._getLayoutInfo();\n this._editor.changeDecorations(decorationsAccessor => {\n this._editor.changeViewZones(viewZoneAccessor => {\n const helper = new CodeLensHelper();\n let codeLensIndex = 0;\n let groupsIndex = 0;\n while (groupsIndex < groups.length && codeLensIndex < this._lenses.length) {\n const symbolsLineNumber = groups[groupsIndex][0].symbol.range.startLineNumber;\n const codeLensLineNumber = this._lenses[codeLensIndex].getLineNumber();\n if (codeLensLineNumber < symbolsLineNumber) {\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n this._lenses.splice(codeLensIndex, 1);\n }\n else if (codeLensLineNumber === symbolsLineNumber) {\n this._lenses[codeLensIndex].updateCodeLensSymbols(groups[groupsIndex], helper);\n groupsIndex++;\n codeLensIndex++;\n }\n else {\n this._lenses.splice(codeLensIndex, 0, new CodeLensWidget(groups[groupsIndex], this._editor, this._styleClassName, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n codeLensIndex++;\n groupsIndex++;\n }\n }\n // Delete extra code lenses\n while (codeLensIndex < this._lenses.length) {\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\n this._lenses.splice(codeLensIndex, 1);\n }\n // Create extra symbols\n while (groupsIndex < groups.length) {\n this._lenses.push(new CodeLensWidget(groups[groupsIndex], this._editor, this._styleClassName, helper, viewZoneAccessor, layoutInfo.codeLensHeight, () => this._resolveCodeLensesInViewportSoon()));\n groupsIndex++;\n }\n helper.commit(decorationsAccessor);\n });\n });\n scrollState.restore(this._editor);\n }\n _resolveCodeLensesInViewportSoon() {\n const model = this._editor.getModel();\n if (model) {\n this._resolveCodeLensesScheduler.schedule();\n }\n }\n _resolveCodeLensesInViewport() {\n var _a;\n (_a = this._resolveCodeLensesPromise) === null || _a === void 0 ? void 0 : _a.cancel();\n this._resolveCodeLensesPromise = undefined;\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n const toResolve = [];\n const lenses = [];\n this._lenses.forEach((lens) => {\n const request = lens.computeIfNecessary(model);\n if (request) {\n toResolve.push(request);\n lenses.push(lens);\n }\n });\n if (toResolve.length === 0) {\n return;\n }\n const t1 = Date.now();\n const resolvePromise = createCancelablePromise(token => {\n const promises = toResolve.map((request, i) => {\n const resolvedSymbols = new Array(request.length);\n const promises = request.map((request, i) => {\n if (!request.symbol.command && typeof request.provider.resolveCodeLens === 'function') {\n return Promise.resolve(request.provider.resolveCodeLens(model, request.symbol, token)).then(symbol => {\n resolvedSymbols[i] = symbol;\n }, onUnexpectedExternalError);\n }\n else {\n resolvedSymbols[i] = request.symbol;\n return Promise.resolve(undefined);\n }\n });\n return Promise.all(promises).then(() => {\n if (!token.isCancellationRequested && !lenses[i].isDisposed()) {\n lenses[i].updateCommands(resolvedSymbols);\n }\n });\n });\n return Promise.all(promises);\n });\n this._resolveCodeLensesPromise = resolvePromise;\n this._resolveCodeLensesPromise.then(() => {\n // update moving average\n const newDelay = this._resolveCodeLensesDebounce.update(model, Date.now() - t1);\n this._resolveCodeLensesScheduler.delay = newDelay;\n if (this._currentCodeLensModel) { // update the cached state with new resolved items\n this._codeLensCache.put(model, this._currentCodeLensModel);\n }\n this._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model\n if (resolvePromise === this._resolveCodeLensesPromise) {\n this._resolveCodeLensesPromise = undefined;\n }\n }, err => {\n onUnexpectedError(err); // can also be cancellation!\n if (resolvePromise === this._resolveCodeLensesPromise) {\n this._resolveCodeLensesPromise = undefined;\n }\n });\n }\n getModel() {\n return this._currentCodeLensModel;\n }\n};\nCodeLensContribution.ID = 'css.editor.codeLens';\nCodeLensContribution = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, ILanguageFeatureDebounceService),\n __param(3, ICommandService),\n __param(4, INotificationService),\n __param(5, ICodeLensCache)\n], CodeLensContribution);\nexport { CodeLensContribution };\nregisterEditorContribution(CodeLensContribution.ID, CodeLensContribution);\nregisterEditorAction(class ShowLensesInCurrentLine extends EditorAction {\n constructor() {\n super({\n id: 'codelens.showLensesInCurrentLine',\n precondition: EditorContextKeys.hasCodeLensProvider,\n label: localize('showLensOnLine', \"Show CodeLens Commands For Current Line\"),\n alias: 'Show CodeLens Commands For Current Line',\n });\n }\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!editor.hasModel()) {\n return;\n }\n const quickInputService = accessor.get(IQuickInputService);\n const commandService = accessor.get(ICommandService);\n const notificationService = accessor.get(INotificationService);\n const lineNumber = editor.getSelection().positionLineNumber;\n const codelensController = editor.getContribution(CodeLensContribution.ID);\n if (!codelensController) {\n return;\n }\n const model = codelensController.getModel();\n if (!model) {\n // nothing\n return;\n }\n const items = [];\n for (const lens of model.lenses) {\n if (lens.symbol.command && lens.symbol.range.startLineNumber === lineNumber) {\n items.push({\n label: lens.symbol.command.title,\n command: lens.symbol.command\n });\n }\n }\n if (items.length === 0) {\n // We dont want an empty picker\n return;\n }\n const item = yield quickInputService.pick(items, { canPickMany: false });\n if (!item) {\n // Nothing picked\n return;\n }\n if (model.isDisposed) {\n // retry whenever the model has been disposed\n return yield commandService.executeCommand(this.id);\n }\n try {\n yield commandService.executeCommand(item.command.id, ...(item.command.arguments || []));\n }\n catch (err) {\n notificationService.error(err);\n }\n });\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument } from '../../../../base/common/errors.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport function getColors(registry, model, token) {\n const colors = [];\n const providers = registry.ordered(model).reverse();\n const promises = providers.map(provider => Promise.resolve(provider.provideDocumentColors(model, token)).then(result => {\n if (Array.isArray(result)) {\n for (const colorInfo of result) {\n colors.push({ colorInfo, provider });\n }\n }\n }));\n return Promise.all(promises).then(() => colors);\n}\nexport function getColorPresentations(model, colorInfo, provider, token) {\n return Promise.resolve(provider.provideColorPresentations(model, colorInfo, token));\n}\nCommandsRegistry.registerCommand('_executeDocumentColorProvider', function (accessor, ...args) {\n const [resource] = args;\n if (!(resource instanceof URI)) {\n throw illegalArgument();\n }\n const { colorProvider: colorProviderRegistry } = accessor.get(ILanguageFeaturesService);\n const model = accessor.get(IModelService).getModel(resource);\n if (!model) {\n throw illegalArgument();\n }\n const rawCIs = [];\n const providers = colorProviderRegistry.ordered(model).reverse();\n const promises = providers.map(provider => Promise.resolve(provider.provideDocumentColors(model, CancellationToken.None)).then(result => {\n if (Array.isArray(result)) {\n for (const ci of result) {\n rawCIs.push({ range: ci.range, color: [ci.color.red, ci.color.green, ci.color.blue, ci.color.alpha] });\n }\n }\n }));\n return Promise.all(promises).then(() => rawCIs);\n});\nCommandsRegistry.registerCommand('_executeColorPresentationProvider', function (accessor, ...args) {\n const [color, context] = args;\n const { uri, range } = context;\n if (!(uri instanceof URI) || !Array.isArray(color) || color.length !== 4 || !Range.isIRange(range)) {\n throw illegalArgument();\n }\n const [red, green, blue, alpha] = color;\n const { colorProvider: colorProviderRegistry } = accessor.get(ILanguageFeaturesService);\n const model = accessor.get(IModelService).getModel(uri);\n if (!model) {\n throw illegalArgument();\n }\n const colorInfo = {\n range,\n color: { red, green, blue, alpha }\n };\n const presentations = [];\n const providers = colorProviderRegistry.ordered(model).reverse();\n const promises = providers.map(provider => Promise.resolve(provider.provideColorPresentations(model, colorInfo, CancellationToken.None)).then(result => {\n if (Array.isArray(result)) {\n presentations.push(...result);\n }\n }));\n return Promise.all(promises).then(() => presentations);\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createCancelablePromise, TimeoutTimer } from '../../../../base/common/async.js';\nimport { RGBA } from '../../../../base/common/color.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { noBreakWhitespace } from '../../../../base/common/strings.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { getColors } from './color.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nexport const ColorDecorationInjectedTextMarker = Object.create({});\nconst MAX_DECORATORS = 500;\nlet ColorDetector = class ColorDetector extends Disposable {\n constructor(_editor, _configurationService, _languageFeaturesService, languageFeatureDebounceService) {\n super();\n this._editor = _editor;\n this._configurationService = _configurationService;\n this._languageFeaturesService = _languageFeaturesService;\n this._localToDispose = this._register(new DisposableStore());\n this._decorationsIds = [];\n this._colorDatas = new Map();\n this._colorDecoratorIds = this._editor.createDecorationsCollection();\n this._ruleFactory = new DynamicCssRules(this._editor);\n this._colorDecorationClassRefs = this._register(new DisposableStore());\n this._debounceInformation = languageFeatureDebounceService.for(_languageFeaturesService.colorProvider, 'Document Colors', { min: ColorDetector.RECOMPUTE_TIME });\n this._register(_editor.onDidChangeModel(() => {\n this._isEnabled = this.isEnabled();\n this.onModelChanged();\n }));\n this._register(_editor.onDidChangeModelLanguage(() => this.onModelChanged()));\n this._register(_languageFeaturesService.colorProvider.onDidChange(() => this.onModelChanged()));\n this._register(_editor.onDidChangeConfiguration(() => {\n const prevIsEnabled = this._isEnabled;\n this._isEnabled = this.isEnabled();\n if (prevIsEnabled !== this._isEnabled) {\n if (this._isEnabled) {\n this.onModelChanged();\n }\n else {\n this.removeAllDecorations();\n }\n }\n }));\n this._timeoutTimer = null;\n this._computePromise = null;\n this._isEnabled = this.isEnabled();\n this.onModelChanged();\n }\n isEnabled() {\n const model = this._editor.getModel();\n if (!model) {\n return false;\n }\n const languageId = model.getLanguageId();\n // handle deprecated settings. [languageId].colorDecorators.enable\n const deprecatedConfig = this._configurationService.getValue(languageId);\n if (deprecatedConfig && typeof deprecatedConfig === 'object') {\n const colorDecorators = deprecatedConfig['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\n if (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\n return colorDecorators['enable'];\n }\n }\n return this._editor.getOption(17 /* EditorOption.colorDecorators */);\n }\n static get(editor) {\n return editor.getContribution(this.ID);\n }\n dispose() {\n this.stop();\n this.removeAllDecorations();\n super.dispose();\n }\n onModelChanged() {\n this.stop();\n if (!this._isEnabled) {\n return;\n }\n const model = this._editor.getModel();\n if (!model || !this._languageFeaturesService.colorProvider.has(model)) {\n return;\n }\n this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\n if (!this._timeoutTimer) {\n this._timeoutTimer = new TimeoutTimer();\n this._timeoutTimer.cancelAndSet(() => {\n this._timeoutTimer = null;\n this.beginCompute();\n }, this._debounceInformation.get(model));\n }\n }));\n this.beginCompute();\n }\n beginCompute() {\n this._computePromise = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\n const model = this._editor.getModel();\n if (!model) {\n return Promise.resolve([]);\n }\n const sw = new StopWatch(false);\n const colors = yield getColors(this._languageFeaturesService.colorProvider, model, token);\n this._debounceInformation.update(model, sw.elapsed());\n return colors;\n }));\n this._computePromise.then((colorInfos) => {\n this.updateDecorations(colorInfos);\n this.updateColorDecorators(colorInfos);\n this._computePromise = null;\n }, onUnexpectedError);\n }\n stop() {\n if (this._timeoutTimer) {\n this._timeoutTimer.cancel();\n this._timeoutTimer = null;\n }\n if (this._computePromise) {\n this._computePromise.cancel();\n this._computePromise = null;\n }\n this._localToDispose.clear();\n }\n updateDecorations(colorDatas) {\n const decorations = colorDatas.map(c => ({\n range: {\n startLineNumber: c.colorInfo.range.startLineNumber,\n startColumn: c.colorInfo.range.startColumn,\n endLineNumber: c.colorInfo.range.endLineNumber,\n endColumn: c.colorInfo.range.endColumn\n },\n options: ModelDecorationOptions.EMPTY\n }));\n this._editor.changeDecorations((changeAccessor) => {\n this._decorationsIds = changeAccessor.deltaDecorations(this._decorationsIds, decorations);\n this._colorDatas = new Map();\n this._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\n });\n }\n updateColorDecorators(colorData) {\n this._colorDecorationClassRefs.clear();\n const decorations = [];\n for (let i = 0; i < colorData.length && decorations.length < MAX_DECORATORS; i++) {\n const { red, green, blue, alpha } = colorData[i].colorInfo.color;\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n const color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n const ref = this._colorDecorationClassRefs.add(this._ruleFactory.createClassNameRef({\n backgroundColor: color\n }));\n decorations.push({\n range: {\n startLineNumber: colorData[i].colorInfo.range.startLineNumber,\n startColumn: colorData[i].colorInfo.range.startColumn,\n endLineNumber: colorData[i].colorInfo.range.endLineNumber,\n endColumn: colorData[i].colorInfo.range.endColumn\n },\n options: {\n description: 'colorDetector',\n before: {\n content: noBreakWhitespace,\n inlineClassName: `${ref.className} colorpicker-color-decoration`,\n inlineClassNameAffectsLetterSpacing: true,\n attachedData: ColorDecorationInjectedTextMarker\n }\n }\n });\n }\n this._colorDecoratorIds.set(decorations);\n }\n removeAllDecorations() {\n this._editor.removeDecorations(this._decorationsIds);\n this._decorationsIds = [];\n this._colorDecoratorIds.clear();\n this._colorDecorationClassRefs.clear();\n }\n getColorData(position) {\n const model = this._editor.getModel();\n if (!model) {\n return null;\n }\n const decorations = model\n .getDecorationsInRange(Range.fromPositions(position, position))\n .filter(d => this._colorDatas.has(d.id));\n if (decorations.length === 0) {\n return null;\n }\n return this._colorDatas.get(decorations[0].id);\n }\n isColorDecoration(decoration) {\n return this._colorDecoratorIds.has(decoration);\n }\n};\nColorDetector.ID = 'editor.contrib.colorDetector';\nColorDetector.RECOMPUTE_TIME = 1000; // ms\nColorDetector = __decorate([\n __param(1, IConfigurationService),\n __param(2, ILanguageFeaturesService),\n __param(3, ILanguageFeatureDebounceService)\n], ColorDetector);\nexport { ColorDetector };\nregisterEditorContribution(ColorDetector.ID, ColorDetector);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../base/common/event.js';\nexport class ColorPickerModel {\n constructor(color, availableColorPresentations, presentationIndex) {\n this.presentationIndex = presentationIndex;\n this._onColorFlushed = new Emitter();\n this.onColorFlushed = this._onColorFlushed.event;\n this._onDidChangeColor = new Emitter();\n this.onDidChangeColor = this._onDidChangeColor.event;\n this._onDidChangePresentation = new Emitter();\n this.onDidChangePresentation = this._onDidChangePresentation.event;\n this.originalColor = color;\n this._color = color;\n this._colorPresentations = availableColorPresentations;\n }\n get color() {\n return this._color;\n }\n set color(color) {\n if (this._color.equals(color)) {\n return;\n }\n this._color = color;\n this._onDidChangeColor.fire(color);\n }\n get presentation() { return this.colorPresentations[this.presentationIndex]; }\n get colorPresentations() {\n return this._colorPresentations;\n }\n set colorPresentations(colorPresentations) {\n this._colorPresentations = colorPresentations;\n if (this.presentationIndex > colorPresentations.length - 1) {\n this.presentationIndex = 0;\n }\n this._onDidChangePresentation.fire(this.presentation);\n }\n selectNextColorPresentation() {\n this.presentationIndex = (this.presentationIndex + 1) % this.colorPresentations.length;\n this.flushColor();\n this._onDidChangePresentation.fire(this.presentation);\n }\n guessColorPresentation(color, originalText) {\n for (let i = 0; i < this.colorPresentations.length; i++) {\n if (originalText.toLowerCase() === this.colorPresentations[i].label) {\n this.presentationIndex = i;\n this._onDidChangePresentation.fire(this.presentation);\n break;\n }\n }\n }\n flushColor() {\n this._onColorFlushed.fire(this._color);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { PixelRatio } from '../../../../base/browser/browser.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { GlobalPointerMoveMonitor } from '../../../../base/browser/globalPointerMoveMonitor.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { Color, HSVA, RGBA } from '../../../../base/common/color.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport './colorPicker.css';\nimport { localize } from '../../../../nls.js';\nimport { editorHoverBackground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nconst $ = dom.$;\nexport class ColorPickerHeader extends Disposable {\n constructor(container, model, themeService) {\n super();\n this.model = model;\n this.domNode = $('.colorpicker-header');\n dom.append(container, this.domNode);\n this.pickedColorNode = dom.append(this.domNode, $('.picked-color'));\n const tooltip = localize('clickToToggleColorOptions', \"Click to toggle color options (rgb/hsl/hex)\");\n this.pickedColorNode.setAttribute('title', tooltip);\n const colorBox = dom.append(this.domNode, $('.original-color'));\n colorBox.style.backgroundColor = Color.Format.CSS.format(this.model.originalColor) || '';\n this.backgroundColor = themeService.getColorTheme().getColor(editorHoverBackground) || Color.white;\n this._register(registerThemingParticipant((theme, collector) => {\n this.backgroundColor = theme.getColor(editorHoverBackground) || Color.white;\n }));\n this._register(dom.addDisposableListener(this.pickedColorNode, dom.EventType.CLICK, () => this.model.selectNextColorPresentation()));\n this._register(dom.addDisposableListener(colorBox, dom.EventType.CLICK, () => {\n this.model.color = this.model.originalColor;\n this.model.flushColor();\n }));\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\n this._register(model.onDidChangePresentation(this.onDidChangePresentation, this));\n this.pickedColorNode.style.backgroundColor = Color.Format.CSS.format(model.color) || '';\n this.pickedColorNode.classList.toggle('light', model.color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : model.color.isLighter());\n this.onDidChangeColor(this.model.color);\n }\n onDidChangeColor(color) {\n this.pickedColorNode.style.backgroundColor = Color.Format.CSS.format(color) || '';\n this.pickedColorNode.classList.toggle('light', color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : color.isLighter());\n this.onDidChangePresentation();\n }\n onDidChangePresentation() {\n this.pickedColorNode.textContent = this.model.presentation ? this.model.presentation.label : '';\n this.pickedColorNode.prepend($('.codicon.codicon-color-mode'));\n }\n}\nexport class ColorPickerBody extends Disposable {\n constructor(container, model, pixelRatio) {\n super();\n this.model = model;\n this.pixelRatio = pixelRatio;\n this.domNode = $('.colorpicker-body');\n dom.append(container, this.domNode);\n this.saturationBox = new SaturationBox(this.domNode, this.model, this.pixelRatio);\n this._register(this.saturationBox);\n this._register(this.saturationBox.onDidChange(this.onDidSaturationValueChange, this));\n this._register(this.saturationBox.onColorFlushed(this.flushColor, this));\n this.opacityStrip = new OpacityStrip(this.domNode, this.model);\n this._register(this.opacityStrip);\n this._register(this.opacityStrip.onDidChange(this.onDidOpacityChange, this));\n this._register(this.opacityStrip.onColorFlushed(this.flushColor, this));\n this.hueStrip = new HueStrip(this.domNode, this.model);\n this._register(this.hueStrip);\n this._register(this.hueStrip.onDidChange(this.onDidHueChange, this));\n this._register(this.hueStrip.onColorFlushed(this.flushColor, this));\n }\n flushColor() {\n this.model.flushColor();\n }\n onDidSaturationValueChange({ s, v }) {\n const hsva = this.model.color.hsva;\n this.model.color = new Color(new HSVA(hsva.h, s, v, hsva.a));\n }\n onDidOpacityChange(a) {\n const hsva = this.model.color.hsva;\n this.model.color = new Color(new HSVA(hsva.h, hsva.s, hsva.v, a));\n }\n onDidHueChange(value) {\n const hsva = this.model.color.hsva;\n const h = (1 - value) * 360;\n this.model.color = new Color(new HSVA(h === 360 ? 0 : h, hsva.s, hsva.v, hsva.a));\n }\n layout() {\n this.saturationBox.layout();\n this.opacityStrip.layout();\n this.hueStrip.layout();\n }\n}\nclass SaturationBox extends Disposable {\n constructor(container, model, pixelRatio) {\n super();\n this.model = model;\n this.pixelRatio = pixelRatio;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onColorFlushed = new Emitter();\n this.onColorFlushed = this._onColorFlushed.event;\n this.domNode = $('.saturation-wrap');\n dom.append(container, this.domNode);\n // Create canvas, draw selected color\n this.canvas = document.createElement('canvas');\n this.canvas.className = 'saturation-box';\n dom.append(this.domNode, this.canvas);\n // Add selection circle\n this.selection = $('.saturation-selection');\n dom.append(this.domNode, this.selection);\n this.layout();\n this._register(dom.addDisposableListener(this.domNode, dom.EventType.POINTER_DOWN, e => this.onPointerDown(e)));\n this._register(this.model.onDidChangeColor(this.onDidChangeColor, this));\n this.monitor = null;\n }\n onPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n this.monitor = this._register(new GlobalPointerMoveMonitor());\n const origin = dom.getDomNodePagePosition(this.domNode);\n if (e.target !== this.selection) {\n this.onDidChangePosition(e.offsetX, e.offsetY);\n }\n this.monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangePosition(event.pageX - origin.left, event.pageY - origin.top), () => null);\n const pointerUpListener = dom.addDisposableListener(document, dom.EventType.POINTER_UP, () => {\n this._onColorFlushed.fire();\n pointerUpListener.dispose();\n if (this.monitor) {\n this.monitor.stopMonitoring(true);\n this.monitor = null;\n }\n }, true);\n }\n onDidChangePosition(left, top) {\n const s = Math.max(0, Math.min(1, left / this.width));\n const v = Math.max(0, Math.min(1, 1 - (top / this.height)));\n this.paintSelection(s, v);\n this._onDidChange.fire({ s, v });\n }\n layout() {\n this.width = this.domNode.offsetWidth;\n this.height = this.domNode.offsetHeight;\n this.canvas.width = this.width * this.pixelRatio;\n this.canvas.height = this.height * this.pixelRatio;\n this.paint();\n const hsva = this.model.color.hsva;\n this.paintSelection(hsva.s, hsva.v);\n }\n paint() {\n const hsva = this.model.color.hsva;\n const saturatedColor = new Color(new HSVA(hsva.h, 1, 1, 1));\n const ctx = this.canvas.getContext('2d');\n const whiteGradient = ctx.createLinearGradient(0, 0, this.canvas.width, 0);\n whiteGradient.addColorStop(0, 'rgba(255, 255, 255, 1)');\n whiteGradient.addColorStop(0.5, 'rgba(255, 255, 255, 0.5)');\n whiteGradient.addColorStop(1, 'rgba(255, 255, 255, 0)');\n const blackGradient = ctx.createLinearGradient(0, 0, 0, this.canvas.height);\n blackGradient.addColorStop(0, 'rgba(0, 0, 0, 0)');\n blackGradient.addColorStop(1, 'rgba(0, 0, 0, 1)');\n ctx.rect(0, 0, this.canvas.width, this.canvas.height);\n ctx.fillStyle = Color.Format.CSS.format(saturatedColor);\n ctx.fill();\n ctx.fillStyle = whiteGradient;\n ctx.fill();\n ctx.fillStyle = blackGradient;\n ctx.fill();\n }\n paintSelection(s, v) {\n this.selection.style.left = `${s * this.width}px`;\n this.selection.style.top = `${this.height - v * this.height}px`;\n }\n onDidChangeColor() {\n if (this.monitor && this.monitor.isMonitoring()) {\n return;\n }\n this.paint();\n }\n}\nclass Strip extends Disposable {\n constructor(container, model) {\n super();\n this.model = model;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._onColorFlushed = new Emitter();\n this.onColorFlushed = this._onColorFlushed.event;\n this.domNode = dom.append(container, $('.strip'));\n this.overlay = dom.append(this.domNode, $('.overlay'));\n this.slider = dom.append(this.domNode, $('.slider'));\n this.slider.style.top = `0px`;\n this._register(dom.addDisposableListener(this.domNode, dom.EventType.POINTER_DOWN, e => this.onPointerDown(e)));\n this.layout();\n }\n layout() {\n this.height = this.domNode.offsetHeight - this.slider.offsetHeight;\n const value = this.getValue(this.model.color);\n this.updateSliderPosition(value);\n }\n onPointerDown(e) {\n if (!e.target || !(e.target instanceof Element)) {\n return;\n }\n const monitor = this._register(new GlobalPointerMoveMonitor());\n const origin = dom.getDomNodePagePosition(this.domNode);\n this.domNode.classList.add('grabbing');\n if (e.target !== this.slider) {\n this.onDidChangeTop(e.offsetY);\n }\n monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangeTop(event.pageY - origin.top), () => null);\n const pointerUpListener = dom.addDisposableListener(document, dom.EventType.POINTER_UP, () => {\n this._onColorFlushed.fire();\n pointerUpListener.dispose();\n monitor.stopMonitoring(true);\n this.domNode.classList.remove('grabbing');\n }, true);\n }\n onDidChangeTop(top) {\n const value = Math.max(0, Math.min(1, 1 - (top / this.height)));\n this.updateSliderPosition(value);\n this._onDidChange.fire(value);\n }\n updateSliderPosition(value) {\n this.slider.style.top = `${(1 - value) * this.height}px`;\n }\n}\nclass OpacityStrip extends Strip {\n constructor(container, model) {\n super(container, model);\n this.domNode.classList.add('opacity-strip');\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\n this.onDidChangeColor(this.model.color);\n }\n onDidChangeColor(color) {\n const { r, g, b } = color.rgba;\n const opaque = new Color(new RGBA(r, g, b, 1));\n const transparent = new Color(new RGBA(r, g, b, 0));\n this.overlay.style.background = `linear-gradient(to bottom, ${opaque} 0%, ${transparent} 100%)`;\n }\n getValue(color) {\n return color.hsva.a;\n }\n}\nclass HueStrip extends Strip {\n constructor(container, model) {\n super(container, model);\n this.domNode.classList.add('hue-strip');\n }\n getValue(color) {\n return 1 - (color.hsva.h / 360);\n }\n}\nexport class ColorPickerWidget extends Widget {\n constructor(container, model, pixelRatio, themeService) {\n super();\n this.model = model;\n this.pixelRatio = pixelRatio;\n this._register(PixelRatio.onDidChange(() => this.layout()));\n const element = $('.colorpicker-widget');\n container.appendChild(element);\n const header = new ColorPickerHeader(element, this.model, themeService);\n this.body = new ColorPickerBody(element, this.model, this.pixelRatio);\n this._register(header);\n this._register(this.body);\n }\n layout() {\n this.body.layout();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Color, RGBA } from '../../../../base/common/color.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Range } from '../../../common/core/range.js';\nimport { getColorPresentations } from './color.js';\nimport { ColorDetector } from './colorDetector.js';\nimport { ColorPickerModel } from './colorPickerModel.js';\nimport { ColorPickerWidget } from './colorPickerWidget.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nexport class ColorHover {\n constructor(owner, range, model, provider) {\n this.owner = owner;\n this.range = range;\n this.model = model;\n this.provider = provider;\n /**\n * Force the hover to always be rendered at this specific range,\n * even in the case of multiple hover parts.\n */\n this.forceShowAtRange = true;\n }\n isValidForHoverAnchor(anchor) {\n return (anchor.type === 1 /* HoverAnchorType.Range */\n && this.range.startColumn <= anchor.range.startColumn\n && this.range.endColumn >= anchor.range.endColumn);\n }\n}\nlet ColorHoverParticipant = class ColorHoverParticipant {\n constructor(_editor, _themeService) {\n this._editor = _editor;\n this._themeService = _themeService;\n this.hoverOrdinal = 1;\n }\n computeSync(anchor, lineDecorations) {\n return [];\n }\n computeAsync(anchor, lineDecorations, token) {\n return AsyncIterableObject.fromPromise(this._computeAsync(anchor, lineDecorations, token));\n }\n _computeAsync(anchor, lineDecorations, token) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._editor.hasModel()) {\n return [];\n }\n const colorDetector = ColorDetector.get(this._editor);\n if (!colorDetector) {\n return [];\n }\n for (const d of lineDecorations) {\n if (!colorDetector.isColorDecoration(d)) {\n continue;\n }\n const colorData = colorDetector.getColorData(d.range.getStartPosition());\n if (colorData) {\n const colorHover = yield this._createColorHover(this._editor.getModel(), colorData.colorInfo, colorData.provider);\n return [colorHover];\n }\n }\n return [];\n });\n }\n _createColorHover(editorModel, colorInfo, provider) {\n return __awaiter(this, void 0, void 0, function* () {\n const originalText = editorModel.getValueInRange(colorInfo.range);\n const { red, green, blue, alpha } = colorInfo.color;\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\n const color = new Color(rgba);\n const colorPresentations = yield getColorPresentations(editorModel, colorInfo, provider, CancellationToken.None);\n const model = new ColorPickerModel(color, [], 0);\n model.colorPresentations = colorPresentations || [];\n model.guessColorPresentation(color, originalText);\n return new ColorHover(this, Range.lift(colorInfo.range), model, provider);\n });\n }\n renderHoverParts(context, hoverParts) {\n if (hoverParts.length === 0 || !this._editor.hasModel()) {\n return Disposable.None;\n }\n const disposables = new DisposableStore();\n const colorHover = hoverParts[0];\n const editorModel = this._editor.getModel();\n const model = colorHover.model;\n const widget = disposables.add(new ColorPickerWidget(context.fragment, model, this._editor.getOption(131 /* EditorOption.pixelRatio */), this._themeService));\n context.setColorPicker(widget);\n let range = new Range(colorHover.range.startLineNumber, colorHover.range.startColumn, colorHover.range.endLineNumber, colorHover.range.endColumn);\n const updateEditorModel = () => {\n let textEdits;\n let newRange;\n if (model.presentation.textEdit) {\n textEdits = [model.presentation.textEdit];\n newRange = new Range(model.presentation.textEdit.range.startLineNumber, model.presentation.textEdit.range.startColumn, model.presentation.textEdit.range.endLineNumber, model.presentation.textEdit.range.endColumn);\n const trackedRange = this._editor.getModel()._setTrackedRange(null, newRange, 3 /* TrackedRangeStickiness.GrowsOnlyWhenTypingAfter */);\n this._editor.pushUndoStop();\n this._editor.executeEdits('colorpicker', textEdits);\n newRange = this._editor.getModel()._getTrackedRange(trackedRange) || newRange;\n }\n else {\n textEdits = [{ range, text: model.presentation.label, forceMoveMarkers: false }];\n newRange = range.setEndPosition(range.endLineNumber, range.startColumn + model.presentation.label.length);\n this._editor.pushUndoStop();\n this._editor.executeEdits('colorpicker', textEdits);\n }\n if (model.presentation.additionalTextEdits) {\n textEdits = [...model.presentation.additionalTextEdits];\n this._editor.executeEdits('colorpicker', textEdits);\n context.hide();\n }\n this._editor.pushUndoStop();\n range = newRange;\n };\n const updateColorPresentations = (color) => {\n return getColorPresentations(editorModel, {\n range: range,\n color: {\n red: color.rgba.r / 255,\n green: color.rgba.g / 255,\n blue: color.rgba.b / 255,\n alpha: color.rgba.a\n }\n }, colorHover.provider, CancellationToken.None).then((colorPresentations) => {\n model.colorPresentations = colorPresentations || [];\n });\n };\n disposables.add(model.onColorFlushed((color) => {\n updateColorPresentations(color).then(updateEditorModel);\n }));\n disposables.add(model.onDidChangeColor(updateColorPresentations));\n return disposables;\n }\n};\nColorHoverParticipant = __decorate([\n __param(1, IThemeService)\n], ColorHoverParticipant);\nexport { ColorHoverParticipant };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ColorDecorationInjectedTextMarker } from './colorDetector.js';\nimport { ColorHoverParticipant } from './colorHoverParticipant.js';\nimport { ModesHoverController } from '../../hover/browser/hover.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nexport class ColorContribution extends Disposable {\n constructor(_editor) {\n super();\n this._editor = _editor;\n this._register(_editor.onMouseDown((e) => this.onMouseDown(e)));\n }\n dispose() {\n super.dispose();\n }\n onMouseDown(mouseEvent) {\n const target = mouseEvent.target;\n if (target.type !== 6 /* MouseTargetType.CONTENT_TEXT */) {\n return;\n }\n if (!target.detail.injectedText) {\n return;\n }\n if (target.detail.injectedText.options.attachedData !== ColorDecorationInjectedTextMarker) {\n return;\n }\n if (!target.range) {\n return;\n }\n const hoverController = this._editor.getContribution(ModesHoverController.ID);\n if (!hoverController) {\n return;\n }\n if (!hoverController.isColorPickerVisible()) {\n const range = new Range(target.range.startLineNumber, target.range.startColumn + 1, target.range.endLineNumber, target.range.endColumn + 1);\n hoverController.showContentHover(range, 1 /* HoverStartMode.Immediate */, false);\n }\n }\n}\nColorContribution.ID = 'editor.contrib.colorContribution'; // ms\nregisterEditorContribution(ColorContribution.ID, ColorContribution);\nHoverParticipantRegistry.register(ColorHoverParticipant);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class BlockCommentCommand {\n constructor(selection, insertSpace, languageConfigurationService) {\n this.languageConfigurationService = languageConfigurationService;\n this._selection = selection;\n this._insertSpace = insertSpace;\n this._usedEndToken = null;\n }\n static _haystackHasNeedleAtOffset(haystack, needle, offset) {\n if (offset < 0) {\n return false;\n }\n const needleLength = needle.length;\n const haystackLength = haystack.length;\n if (offset + needleLength > haystackLength) {\n return false;\n }\n for (let i = 0; i < needleLength; i++) {\n const codeA = haystack.charCodeAt(offset + i);\n const codeB = needle.charCodeAt(i);\n if (codeA === codeB) {\n continue;\n }\n if (codeA >= 65 /* CharCode.A */ && codeA <= 90 /* CharCode.Z */ && codeA + 32 === codeB) {\n // codeA is upper-case variant of codeB\n continue;\n }\n if (codeB >= 65 /* CharCode.A */ && codeB <= 90 /* CharCode.Z */ && codeB + 32 === codeA) {\n // codeB is upper-case variant of codeA\n continue;\n }\n return false;\n }\n return true;\n }\n _createOperationsForBlockComment(selection, startToken, endToken, insertSpace, model, builder) {\n const startLineNumber = selection.startLineNumber;\n const startColumn = selection.startColumn;\n const endLineNumber = selection.endLineNumber;\n const endColumn = selection.endColumn;\n const startLineText = model.getLineContent(startLineNumber);\n const endLineText = model.getLineContent(endLineNumber);\n let startTokenIndex = startLineText.lastIndexOf(startToken, startColumn - 1 + startToken.length);\n let endTokenIndex = endLineText.indexOf(endToken, endColumn - 1 - endToken.length);\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n if (startLineNumber === endLineNumber) {\n const lineBetweenTokens = startLineText.substring(startTokenIndex + startToken.length, endTokenIndex);\n if (lineBetweenTokens.indexOf(endToken) >= 0) {\n // force to add a block comment\n startTokenIndex = -1;\n endTokenIndex = -1;\n }\n }\n else {\n const startLineAfterStartToken = startLineText.substring(startTokenIndex + startToken.length);\n const endLineBeforeEndToken = endLineText.substring(0, endTokenIndex);\n if (startLineAfterStartToken.indexOf(endToken) >= 0 || endLineBeforeEndToken.indexOf(endToken) >= 0) {\n // force to add a block comment\n startTokenIndex = -1;\n endTokenIndex = -1;\n }\n }\n }\n let ops;\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n // Consider spaces as part of the comment tokens\n if (insertSpace && startTokenIndex + startToken.length < startLineText.length && startLineText.charCodeAt(startTokenIndex + startToken.length) === 32 /* CharCode.Space */) {\n // Pretend the start token contains a trailing space\n startToken = startToken + ' ';\n }\n if (insertSpace && endTokenIndex > 0 && endLineText.charCodeAt(endTokenIndex - 1) === 32 /* CharCode.Space */) {\n // Pretend the end token contains a leading space\n endToken = ' ' + endToken;\n endTokenIndex -= 1;\n }\n ops = BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\n }\n else {\n ops = BlockCommentCommand._createAddBlockCommentOperations(selection, startToken, endToken, this._insertSpace);\n this._usedEndToken = ops.length === 1 ? endToken : null;\n }\n for (const op of ops) {\n builder.addTrackedEditOperation(op.range, op.text);\n }\n }\n static _createRemoveBlockCommentOperations(r, startToken, endToken) {\n const res = [];\n if (!Range.isEmpty(r)) {\n // Remove block comment start\n res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.startLineNumber, r.startColumn)));\n // Remove block comment end\n res.push(EditOperation.delete(new Range(r.endLineNumber, r.endColumn, r.endLineNumber, r.endColumn + endToken.length)));\n }\n else {\n // Remove both continuously\n res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.endLineNumber, r.endColumn + endToken.length)));\n }\n return res;\n }\n static _createAddBlockCommentOperations(r, startToken, endToken, insertSpace) {\n const res = [];\n if (!Range.isEmpty(r)) {\n // Insert block comment start\n res.push(EditOperation.insert(new Position(r.startLineNumber, r.startColumn), startToken + (insertSpace ? ' ' : '')));\n // Insert block comment end\n res.push(EditOperation.insert(new Position(r.endLineNumber, r.endColumn), (insertSpace ? ' ' : '') + endToken));\n }\n else {\n // Insert both continuously\n res.push(EditOperation.replace(new Range(r.startLineNumber, r.startColumn, r.endLineNumber, r.endColumn), startToken + ' ' + endToken));\n }\n return res;\n }\n getEditOperations(model, builder) {\n const startLineNumber = this._selection.startLineNumber;\n const startColumn = this._selection.startColumn;\n model.tokenization.tokenizeIfCheap(startLineNumber);\n const languageId = model.getLanguageIdAtPosition(startLineNumber, startColumn);\n const config = this.languageConfigurationService.getLanguageConfiguration(languageId).comments;\n if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\n // Mode does not support block comments\n return;\n }\n this._createOperationsForBlockComment(this._selection, config.blockCommentStartToken, config.blockCommentEndToken, this._insertSpace, model, builder);\n }\n computeCursorState(model, helper) {\n const inverseEditOperations = helper.getInverseEditOperations();\n if (inverseEditOperations.length === 2) {\n const startTokenEditOperation = inverseEditOperations[0];\n const endTokenEditOperation = inverseEditOperations[1];\n return new Selection(startTokenEditOperation.range.endLineNumber, startTokenEditOperation.range.endColumn, endTokenEditOperation.range.startLineNumber, endTokenEditOperation.range.startColumn);\n }\n else {\n const srcRange = inverseEditOperations[0].range;\n const deltaColumn = this._usedEndToken ? -this._usedEndToken.length - 1 : 0; // minus 1 space before endToken\n return new Selection(srcRange.endLineNumber, srcRange.endColumn + deltaColumn, srcRange.endLineNumber, srcRange.endColumn + deltaColumn);\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as strings from '../../../../base/common/strings.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { BlockCommentCommand } from './blockCommentCommand.js';\nexport class LineCommentCommand {\n constructor(languageConfigurationService, selection, tabSize, type, insertSpace, ignoreEmptyLines, ignoreFirstLine) {\n this.languageConfigurationService = languageConfigurationService;\n this._selection = selection;\n this._tabSize = tabSize;\n this._type = type;\n this._insertSpace = insertSpace;\n this._selectionId = null;\n this._deltaColumn = 0;\n this._moveEndPositionDown = false;\n this._ignoreEmptyLines = ignoreEmptyLines;\n this._ignoreFirstLine = ignoreFirstLine || false;\n }\n /**\n * Do an initial pass over the lines and gather info about the line comment string.\n * Returns null if any of the lines doesn't support a line comment string.\n */\n static _gatherPreflightCommentStrings(model, startLineNumber, endLineNumber, languageConfigurationService) {\n model.tokenization.tokenizeIfCheap(startLineNumber);\n const languageId = model.getLanguageIdAtPosition(startLineNumber, 1);\n const config = languageConfigurationService.getLanguageConfiguration(languageId).comments;\n const commentStr = (config ? config.lineCommentToken : null);\n if (!commentStr) {\n // Mode does not support line comments\n return null;\n }\n const lines = [];\n for (let i = 0, lineCount = endLineNumber - startLineNumber + 1; i < lineCount; i++) {\n lines[i] = {\n ignore: false,\n commentStr: commentStr,\n commentStrOffset: 0,\n commentStrLength: commentStr.length\n };\n }\n return lines;\n }\n /**\n * Analyze lines and decide which lines are relevant and what the toggle should do.\n * Also, build up several offsets and lengths useful in the generation of editor operations.\n */\n static _analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService) {\n let onlyWhitespaceLines = true;\n let shouldRemoveComments;\n if (type === 0 /* Type.Toggle */) {\n shouldRemoveComments = true;\n }\n else if (type === 1 /* Type.ForceAdd */) {\n shouldRemoveComments = false;\n }\n else {\n shouldRemoveComments = true;\n }\n for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\n const lineData = lines[i];\n const lineNumber = startLineNumber + i;\n if (lineNumber === startLineNumber && ignoreFirstLine) {\n // first line ignored\n lineData.ignore = true;\n continue;\n }\n const lineContent = model.getLineContent(lineNumber);\n const lineContentStartOffset = strings.firstNonWhitespaceIndex(lineContent);\n if (lineContentStartOffset === -1) {\n // Empty or whitespace only line\n lineData.ignore = ignoreEmptyLines;\n lineData.commentStrOffset = lineContent.length;\n continue;\n }\n onlyWhitespaceLines = false;\n lineData.ignore = false;\n lineData.commentStrOffset = lineContentStartOffset;\n if (shouldRemoveComments && !BlockCommentCommand._haystackHasNeedleAtOffset(lineContent, lineData.commentStr, lineContentStartOffset)) {\n if (type === 0 /* Type.Toggle */) {\n // Every line so far has been a line comment, but this one is not\n shouldRemoveComments = false;\n }\n else if (type === 1 /* Type.ForceAdd */) {\n // Will not happen\n }\n else {\n lineData.ignore = true;\n }\n }\n if (shouldRemoveComments && insertSpace) {\n // Remove a following space if present\n const commentStrEndOffset = lineContentStartOffset + lineData.commentStrLength;\n if (commentStrEndOffset < lineContent.length && lineContent.charCodeAt(commentStrEndOffset) === 32 /* CharCode.Space */) {\n lineData.commentStrLength += 1;\n }\n }\n }\n if (type === 0 /* Type.Toggle */ && onlyWhitespaceLines) {\n // For only whitespace lines, we insert comments\n shouldRemoveComments = false;\n // Also, no longer ignore them\n for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\n lines[i].ignore = false;\n }\n }\n return {\n supported: true,\n shouldRemoveComments: shouldRemoveComments,\n lines: lines\n };\n }\n /**\n * Analyze all lines and decide exactly what to do => not supported | insert line comments | remove line comments\n */\n static _gatherPreflightData(type, insertSpace, model, startLineNumber, endLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService) {\n const lines = LineCommentCommand._gatherPreflightCommentStrings(model, startLineNumber, endLineNumber, languageConfigurationService);\n if (lines === null) {\n return {\n supported: false\n };\n }\n return LineCommentCommand._analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines, ignoreFirstLine, languageConfigurationService);\n }\n /**\n * Given a successful analysis, execute either insert line comments, either remove line comments\n */\n _executeLineComments(model, builder, data, s) {\n let ops;\n if (data.shouldRemoveComments) {\n ops = LineCommentCommand._createRemoveLineCommentsOperations(data.lines, s.startLineNumber);\n }\n else {\n LineCommentCommand._normalizeInsertionPoint(model, data.lines, s.startLineNumber, this._tabSize);\n ops = this._createAddLineCommentsOperations(data.lines, s.startLineNumber);\n }\n const cursorPosition = new Position(s.positionLineNumber, s.positionColumn);\n for (let i = 0, len = ops.length; i < len; i++) {\n builder.addEditOperation(ops[i].range, ops[i].text);\n if (Range.isEmpty(ops[i].range) && Range.getStartPosition(ops[i].range).equals(cursorPosition)) {\n const lineContent = model.getLineContent(cursorPosition.lineNumber);\n if (lineContent.length + 1 === cursorPosition.column) {\n this._deltaColumn = (ops[i].text || '').length;\n }\n }\n }\n this._selectionId = builder.trackSelection(s);\n }\n _attemptRemoveBlockComment(model, s, startToken, endToken) {\n let startLineNumber = s.startLineNumber;\n let endLineNumber = s.endLineNumber;\n const startTokenAllowedBeforeColumn = endToken.length + Math.max(model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.startColumn);\n let startTokenIndex = model.getLineContent(startLineNumber).lastIndexOf(startToken, startTokenAllowedBeforeColumn - 1);\n let endTokenIndex = model.getLineContent(endLineNumber).indexOf(endToken, s.endColumn - 1 - startToken.length);\n if (startTokenIndex !== -1 && endTokenIndex === -1) {\n endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\n endLineNumber = startLineNumber;\n }\n if (startTokenIndex === -1 && endTokenIndex !== -1) {\n startTokenIndex = model.getLineContent(endLineNumber).lastIndexOf(startToken, endTokenIndex);\n startLineNumber = endLineNumber;\n }\n if (s.isEmpty() && (startTokenIndex === -1 || endTokenIndex === -1)) {\n startTokenIndex = model.getLineContent(startLineNumber).indexOf(startToken);\n if (startTokenIndex !== -1) {\n endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\n }\n }\n // We have to adjust to possible inner white space.\n // For Space after startToken, add Space to startToken - range math will work out.\n if (startTokenIndex !== -1 && model.getLineContent(startLineNumber).charCodeAt(startTokenIndex + startToken.length) === 32 /* CharCode.Space */) {\n startToken += ' ';\n }\n // For Space before endToken, add Space before endToken and shift index one left.\n if (endTokenIndex !== -1 && model.getLineContent(endLineNumber).charCodeAt(endTokenIndex - 1) === 32 /* CharCode.Space */) {\n endToken = ' ' + endToken;\n endTokenIndex -= 1;\n }\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\n return BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\n }\n return null;\n }\n /**\n * Given an unsuccessful analysis, delegate to the block comment command\n */\n _executeBlockComment(model, builder, s) {\n model.tokenization.tokenizeIfCheap(s.startLineNumber);\n const languageId = model.getLanguageIdAtPosition(s.startLineNumber, 1);\n const config = this.languageConfigurationService.getLanguageConfiguration(languageId).comments;\n if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\n // Mode does not support block comments\n return;\n }\n const startToken = config.blockCommentStartToken;\n const endToken = config.blockCommentEndToken;\n let ops = this._attemptRemoveBlockComment(model, s, startToken, endToken);\n if (!ops) {\n if (s.isEmpty()) {\n const lineContent = model.getLineContent(s.startLineNumber);\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\n if (firstNonWhitespaceIndex === -1) {\n // Line is empty or contains only whitespace\n firstNonWhitespaceIndex = lineContent.length;\n }\n ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, firstNonWhitespaceIndex + 1, s.startLineNumber, lineContent.length + 1), startToken, endToken, this._insertSpace);\n }\n else {\n ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), startToken, endToken, this._insertSpace);\n }\n if (ops.length === 1) {\n // Leave cursor after token and Space\n this._deltaColumn = startToken.length + 1;\n }\n }\n this._selectionId = builder.trackSelection(s);\n for (const op of ops) {\n builder.addEditOperation(op.range, op.text);\n }\n }\n getEditOperations(model, builder) {\n let s = this._selection;\n this._moveEndPositionDown = false;\n if (s.startLineNumber === s.endLineNumber && this._ignoreFirstLine) {\n builder.addEditOperation(new Range(s.startLineNumber, model.getLineMaxColumn(s.startLineNumber), s.startLineNumber + 1, 1), s.startLineNumber === model.getLineCount() ? '' : '\\n');\n this._selectionId = builder.trackSelection(s);\n return;\n }\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n this._moveEndPositionDown = true;\n s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\n }\n const data = LineCommentCommand._gatherPreflightData(this._type, this._insertSpace, model, s.startLineNumber, s.endLineNumber, this._ignoreEmptyLines, this._ignoreFirstLine, this.languageConfigurationService);\n if (data.supported) {\n return this._executeLineComments(model, builder, data, s);\n }\n return this._executeBlockComment(model, builder, s);\n }\n computeCursorState(model, helper) {\n let result = helper.getTrackedSelection(this._selectionId);\n if (this._moveEndPositionDown) {\n result = result.setEndPosition(result.endLineNumber + 1, 1);\n }\n return new Selection(result.selectionStartLineNumber, result.selectionStartColumn + this._deltaColumn, result.positionLineNumber, result.positionColumn + this._deltaColumn);\n }\n /**\n * Generate edit operations in the remove line comment case\n */\n static _createRemoveLineCommentsOperations(lines, startLineNumber) {\n const res = [];\n for (let i = 0, len = lines.length; i < len; i++) {\n const lineData = lines[i];\n if (lineData.ignore) {\n continue;\n }\n res.push(EditOperation.delete(new Range(startLineNumber + i, lineData.commentStrOffset + 1, startLineNumber + i, lineData.commentStrOffset + lineData.commentStrLength + 1)));\n }\n return res;\n }\n /**\n * Generate edit operations in the add line comment case\n */\n _createAddLineCommentsOperations(lines, startLineNumber) {\n const res = [];\n const afterCommentStr = this._insertSpace ? ' ' : '';\n for (let i = 0, len = lines.length; i < len; i++) {\n const lineData = lines[i];\n if (lineData.ignore) {\n continue;\n }\n res.push(EditOperation.insert(new Position(startLineNumber + i, lineData.commentStrOffset + 1), lineData.commentStr + afterCommentStr));\n }\n return res;\n }\n static nextVisibleColumn(currentVisibleColumn, tabSize, isTab, columnSize) {\n if (isTab) {\n return currentVisibleColumn + (tabSize - (currentVisibleColumn % tabSize));\n }\n return currentVisibleColumn + columnSize;\n }\n /**\n * Adjust insertion points to have them vertically aligned in the add line comment case\n */\n static _normalizeInsertionPoint(model, lines, startLineNumber, tabSize) {\n let minVisibleColumn = 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */;\n let j;\n let lenJ;\n for (let i = 0, len = lines.length; i < len; i++) {\n if (lines[i].ignore) {\n continue;\n }\n const lineContent = model.getLineContent(startLineNumber + i);\n let currentVisibleColumn = 0;\n for (let j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\n currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, tabSize, lineContent.charCodeAt(j) === 9 /* CharCode.Tab */, 1);\n }\n if (currentVisibleColumn < minVisibleColumn) {\n minVisibleColumn = currentVisibleColumn;\n }\n }\n minVisibleColumn = Math.floor(minVisibleColumn / tabSize) * tabSize;\n for (let i = 0, len = lines.length; i < len; i++) {\n if (lines[i].ignore) {\n continue;\n }\n const lineContent = model.getLineContent(startLineNumber + i);\n let currentVisibleColumn = 0;\n for (j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\n currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, tabSize, lineContent.charCodeAt(j) === 9 /* CharCode.Tab */, 1);\n }\n if (currentVisibleColumn > minVisibleColumn) {\n lines[i].commentStrOffset = j - 1;\n }\n else {\n lines[i].commentStrOffset = j;\n }\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { BlockCommentCommand } from './blockCommentCommand.js';\nimport { LineCommentCommand } from './lineCommentCommand.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nclass CommentLineAction extends EditorAction {\n constructor(type, opts) {\n super(opts);\n this._type = type;\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n if (!editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n const commands = [];\n const modelOptions = model.getOptions();\n const commentsOptions = editor.getOption(19 /* EditorOption.comments */);\n const selections = editor.getSelections().map((selection, index) => ({ selection, index, ignoreFirstLine: false }));\n selections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n // Remove selections that would result in copying the same line\n let prev = selections[0];\n for (let i = 1; i < selections.length; i++) {\n const curr = selections[i];\n if (prev.selection.endLineNumber === curr.selection.startLineNumber) {\n // these two selections would copy the same line\n if (prev.index < curr.index) {\n // prev wins\n curr.ignoreFirstLine = true;\n }\n else {\n // curr wins\n prev.ignoreFirstLine = true;\n prev = curr;\n }\n }\n }\n for (const selection of selections) {\n commands.push(new LineCommentCommand(languageConfigurationService, selection.selection, modelOptions.tabSize, this._type, commentsOptions.insertSpace, commentsOptions.ignoreEmptyLines, selection.ignoreFirstLine));\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nclass ToggleCommentLineAction extends CommentLineAction {\n constructor() {\n super(0 /* Type.Toggle */, {\n id: 'editor.action.commentLine',\n label: nls.localize('comment.line', \"Toggle Line Comment\"),\n alias: 'Toggle Line Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 85 /* KeyCode.Slash */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '5_insert',\n title: nls.localize({ key: 'miToggleLineComment', comment: ['&& denotes a mnemonic'] }, \"&&Toggle Line Comment\"),\n order: 1\n }\n });\n }\n}\nclass AddLineCommentAction extends CommentLineAction {\n constructor() {\n super(1 /* Type.ForceAdd */, {\n id: 'editor.action.addCommentLine',\n label: nls.localize('comment.line.add', \"Add Line Comment\"),\n alias: 'Add Line Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nclass RemoveLineCommentAction extends CommentLineAction {\n constructor() {\n super(2 /* Type.ForceRemove */, {\n id: 'editor.action.removeCommentLine',\n label: nls.localize('comment.line.remove', \"Remove Line Comment\"),\n alias: 'Remove Line Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 51 /* KeyCode.KeyU */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nclass BlockCommentAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.blockComment',\n label: nls.localize('comment.block', \"Toggle Block Comment\"),\n alias: 'Toggle Block Comment',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 31 /* KeyCode.KeyA */,\n linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 31 /* KeyCode.KeyA */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '5_insert',\n title: nls.localize({ key: 'miToggleBlockComment', comment: ['&& denotes a mnemonic'] }, \"Toggle &&Block Comment\"),\n order: 2\n }\n });\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n if (!editor.hasModel()) {\n return;\n }\n const commentsOptions = editor.getOption(19 /* EditorOption.comments */);\n const commands = [];\n const selections = editor.getSelections();\n for (const selection of selections) {\n commands.push(new BlockCommentCommand(selection, commentsOptions.insertSpace, languageConfigurationService));\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nregisterEditorAction(ToggleCommentLineAction);\nregisterEditorAction(AddLineCommentAction);\nregisterEditorAction(RemoveLineCommentAction);\nregisterEditorAction(BlockCommentAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionViewItem } from '../../../../base/browser/ui/actionbar/actionViewItems.js';\nimport { Separator, SubmenuAction } from '../../../../base/common/actions.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { isIOS } from '../../../../base/common/platform.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nimport { IMenuService, MenuId, SubmenuItemAction } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextMenuService, IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nlet ContextMenuController = class ContextMenuController {\n constructor(editor, _contextMenuService, _contextViewService, _contextKeyService, _keybindingService, _menuService, _configurationService) {\n this._contextMenuService = _contextMenuService;\n this._contextViewService = _contextViewService;\n this._contextKeyService = _contextKeyService;\n this._keybindingService = _keybindingService;\n this._menuService = _menuService;\n this._configurationService = _configurationService;\n this._toDispose = new DisposableStore();\n this._contextMenuIsBeingShownCount = 0;\n this._editor = editor;\n this._toDispose.add(this._editor.onContextMenu((e) => this._onContextMenu(e)));\n this._toDispose.add(this._editor.onMouseWheel((e) => {\n if (this._contextMenuIsBeingShownCount > 0) {\n const view = this._contextViewService.getContextViewElement();\n const target = e.srcElement;\n // Event triggers on shadow root host first\n // Check if the context view is under this host before hiding it #103169\n if (!(target.shadowRoot && dom.getShadowRoot(view) === target.shadowRoot)) {\n this._contextViewService.hideContextView();\n }\n }\n }));\n this._toDispose.add(this._editor.onKeyDown((e) => {\n if (!this._editor.getOption(20 /* EditorOption.contextmenu */)) {\n return; // Context menu is turned off through configuration\n }\n if (e.keyCode === 58 /* KeyCode.ContextMenu */) {\n // Chrome is funny like that\n e.preventDefault();\n e.stopPropagation();\n this.showContextMenu();\n }\n }));\n }\n static get(editor) {\n return editor.getContribution(ContextMenuController.ID);\n }\n _onContextMenu(e) {\n if (!this._editor.hasModel()) {\n return;\n }\n if (!this._editor.getOption(20 /* EditorOption.contextmenu */)) {\n this._editor.focus();\n // Ensure the cursor is at the position of the mouse click\n if (e.target.position && !this._editor.getSelection().containsPosition(e.target.position)) {\n this._editor.setPosition(e.target.position);\n }\n return; // Context menu is turned off through configuration\n }\n if (e.target.type === 12 /* MouseTargetType.OVERLAY_WIDGET */) {\n return; // allow native menu on widgets to support right click on input field for example in find\n }\n if (e.target.type === 6 /* MouseTargetType.CONTENT_TEXT */ && e.target.detail.injectedText) {\n return; // allow native menu on injected text\n }\n e.event.preventDefault();\n e.event.stopPropagation();\n if (e.target.type === 11 /* MouseTargetType.SCROLLBAR */) {\n return this._showScrollbarContextMenu({ x: e.event.posx - 1, width: 2, y: e.event.posy - 1, height: 2 });\n }\n if (e.target.type !== 6 /* MouseTargetType.CONTENT_TEXT */ && e.target.type !== 7 /* MouseTargetType.CONTENT_EMPTY */ && e.target.type !== 1 /* MouseTargetType.TEXTAREA */) {\n return; // only support mouse click into text or native context menu key for now\n }\n // Ensure the editor gets focus if it hasn't, so the right events are being sent to other contributions\n this._editor.focus();\n // Ensure the cursor is at the position of the mouse click\n if (e.target.position) {\n let hasSelectionAtPosition = false;\n for (const selection of this._editor.getSelections()) {\n if (selection.containsPosition(e.target.position)) {\n hasSelectionAtPosition = true;\n break;\n }\n }\n if (!hasSelectionAtPosition) {\n this._editor.setPosition(e.target.position);\n }\n }\n // Unless the user triggerd the context menu through Shift+F10, use the mouse position as menu position\n let anchor = null;\n if (e.target.type !== 1 /* MouseTargetType.TEXTAREA */) {\n anchor = { x: e.event.posx - 1, width: 2, y: e.event.posy - 1, height: 2 };\n }\n // Show the context menu\n this.showContextMenu(anchor);\n }\n showContextMenu(anchor) {\n if (!this._editor.getOption(20 /* EditorOption.contextmenu */)) {\n return; // Context menu is turned off through configuration\n }\n if (!this._editor.hasModel()) {\n return;\n }\n // Find actions available for menu\n const menuActions = this._getMenuActions(this._editor.getModel(), this._editor.isSimpleWidget ? MenuId.SimpleEditorContext : MenuId.EditorContext);\n // Show menu if we have actions to show\n if (menuActions.length > 0) {\n this._doShowContextMenu(menuActions, anchor);\n }\n }\n _getMenuActions(model, menuId) {\n const result = [];\n // get menu groups\n const menu = this._menuService.createMenu(menuId, this._contextKeyService);\n const groups = menu.getActions({ arg: model.uri });\n menu.dispose();\n // translate them into other actions\n for (const group of groups) {\n const [, actions] = group;\n let addedItems = 0;\n for (const action of actions) {\n if (action instanceof SubmenuItemAction) {\n const subActions = this._getMenuActions(model, action.item.submenu);\n if (subActions.length > 0) {\n result.push(new SubmenuAction(action.id, action.label, subActions));\n addedItems++;\n }\n }\n else {\n result.push(action);\n addedItems++;\n }\n }\n if (addedItems) {\n result.push(new Separator());\n }\n }\n if (result.length) {\n result.pop(); // remove last separator\n }\n return result;\n }\n _doShowContextMenu(actions, anchor = null) {\n if (!this._editor.hasModel()) {\n return;\n }\n // Disable hover\n const oldHoverSetting = this._editor.getOption(55 /* EditorOption.hover */);\n this._editor.updateOptions({\n hover: {\n enabled: false\n }\n });\n if (!anchor) {\n // Ensure selection is visible\n this._editor.revealPosition(this._editor.getPosition(), 1 /* ScrollType.Immediate */);\n this._editor.render();\n const cursorCoords = this._editor.getScrolledVisiblePosition(this._editor.getPosition());\n // Translate to absolute editor position\n const editorCoords = dom.getDomNodePagePosition(this._editor.getDomNode());\n const posx = editorCoords.left + cursorCoords.left;\n const posy = editorCoords.top + cursorCoords.top + cursorCoords.height;\n anchor = { x: posx, y: posy };\n }\n const useShadowDOM = this._editor.getOption(117 /* EditorOption.useShadowDOM */) && !isIOS; // Do not use shadow dom on IOS #122035\n // Show menu\n this._contextMenuIsBeingShownCount++;\n this._contextMenuService.showContextMenu({\n domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\n getAnchor: () => anchor,\n getActions: () => actions,\n getActionViewItem: (action) => {\n const keybinding = this._keybindingFor(action);\n if (keybinding) {\n return new ActionViewItem(action, action, { label: true, keybinding: keybinding.getLabel(), isMenu: true });\n }\n const customActionViewItem = action;\n if (typeof customActionViewItem.getActionViewItem === 'function') {\n return customActionViewItem.getActionViewItem();\n }\n return new ActionViewItem(action, action, { icon: true, label: true, isMenu: true });\n },\n getKeyBinding: (action) => {\n return this._keybindingFor(action);\n },\n onHide: (wasCancelled) => {\n this._contextMenuIsBeingShownCount--;\n this._editor.focus();\n this._editor.updateOptions({\n hover: oldHoverSetting\n });\n }\n });\n }\n _showScrollbarContextMenu(anchor) {\n if (!this._editor.hasModel()) {\n return;\n }\n const minimapOptions = this._editor.getOption(67 /* EditorOption.minimap */);\n let lastId = 0;\n const createAction = (opts) => {\n return {\n id: `menu-action-${++lastId}`,\n label: opts.label,\n tooltip: '',\n class: undefined,\n enabled: (typeof opts.enabled === 'undefined' ? true : opts.enabled),\n checked: opts.checked,\n run: opts.run,\n dispose: () => null\n };\n };\n const createSubmenuAction = (label, actions) => {\n return new SubmenuAction(`menu-action-${++lastId}`, label, actions, undefined);\n };\n const createEnumAction = (label, enabled, configName, configuredValue, options) => {\n if (!enabled) {\n return createAction({ label, enabled, run: () => { } });\n }\n const createRunner = (value) => {\n return () => {\n this._configurationService.updateValue(configName, value);\n };\n };\n const actions = [];\n for (const option of options) {\n actions.push(createAction({\n label: option.label,\n checked: configuredValue === option.value,\n run: createRunner(option.value)\n }));\n }\n return createSubmenuAction(label, actions);\n };\n const actions = [];\n actions.push(createAction({\n label: nls.localize('context.minimap.minimap', \"Minimap\"),\n checked: minimapOptions.enabled,\n run: () => {\n this._configurationService.updateValue(`editor.minimap.enabled`, !minimapOptions.enabled);\n }\n }));\n actions.push(new Separator());\n actions.push(createAction({\n label: nls.localize('context.minimap.renderCharacters', \"Render Characters\"),\n enabled: minimapOptions.enabled,\n checked: minimapOptions.renderCharacters,\n run: () => {\n this._configurationService.updateValue(`editor.minimap.renderCharacters`, !minimapOptions.renderCharacters);\n }\n }));\n actions.push(createEnumAction(nls.localize('context.minimap.size', \"Vertical size\"), minimapOptions.enabled, 'editor.minimap.size', minimapOptions.size, [{\n label: nls.localize('context.minimap.size.proportional', \"Proportional\"),\n value: 'proportional'\n }, {\n label: nls.localize('context.minimap.size.fill', \"Fill\"),\n value: 'fill'\n }, {\n label: nls.localize('context.minimap.size.fit', \"Fit\"),\n value: 'fit'\n }]));\n actions.push(createEnumAction(nls.localize('context.minimap.slider', \"Slider\"), minimapOptions.enabled, 'editor.minimap.showSlider', minimapOptions.showSlider, [{\n label: nls.localize('context.minimap.slider.mouseover', \"Mouse Over\"),\n value: 'mouseover'\n }, {\n label: nls.localize('context.minimap.slider.always', \"Always\"),\n value: 'always'\n }]));\n const useShadowDOM = this._editor.getOption(117 /* EditorOption.useShadowDOM */) && !isIOS; // Do not use shadow dom on IOS #122035\n this._contextMenuIsBeingShownCount++;\n this._contextMenuService.showContextMenu({\n domForShadowRoot: useShadowDOM ? this._editor.getDomNode() : undefined,\n getAnchor: () => anchor,\n getActions: () => actions,\n onHide: (wasCancelled) => {\n this._contextMenuIsBeingShownCount--;\n this._editor.focus();\n }\n });\n }\n _keybindingFor(action) {\n return this._keybindingService.lookupKeybinding(action.id);\n }\n dispose() {\n if (this._contextMenuIsBeingShownCount > 0) {\n this._contextViewService.hideContextView();\n }\n this._toDispose.dispose();\n }\n};\nContextMenuController.ID = 'editor.contrib.contextmenu';\nContextMenuController = __decorate([\n __param(1, IContextMenuService),\n __param(2, IContextViewService),\n __param(3, IContextKeyService),\n __param(4, IKeybindingService),\n __param(5, IMenuService),\n __param(6, IConfigurationService)\n], ContextMenuController);\nexport { ContextMenuController };\nclass ShowContextMenu extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.showContextMenu',\n label: nls.localize('action.showContextMenu.label', \"Show Editor Context Menu\"),\n alias: 'Show Editor Context Menu',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 1024 /* KeyMod.Shift */ | 68 /* KeyCode.F10 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n var _a;\n (_a = ContextMenuController.get(editor)) === null || _a === void 0 ? void 0 : _a.showContextMenu();\n }\n}\nregisterEditorContribution(ContextMenuController.ID, ContextMenuController);\nregisterEditorAction(ShowContextMenu);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { DataTransfers } from '../../../../base/browser/dnd.js';\nimport { addDisposableListener } from '../../../../base/browser/dom.js';\nimport { createCancelablePromise } from '../../../../base/common/async.js';\nimport { createStringDataTransferItem } from '../../../../base/common/dataTransfer.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { toVSDataTransfer, UriList } from '../../../browser/dnd.js';\nimport { IBulkEditService, ResourceEdit } from '../../../browser/services/bulkEditService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { performSnippetEdit } from '../../snippet/browser/snippetController2.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nconst vscodeClipboardMime = 'application/vnd.code.copyMetadata';\nlet CopyPasteController = class CopyPasteController extends Disposable {\n constructor(editor, _bulkEditService, _clipboardService, _configurationService, _languageFeaturesService) {\n super();\n this._bulkEditService = _bulkEditService;\n this._clipboardService = _clipboardService;\n this._configurationService = _configurationService;\n this._languageFeaturesService = _languageFeaturesService;\n this._editor = editor;\n const container = editor.getContainerDomNode();\n this._register(addDisposableListener(container, 'copy', e => this.handleCopy(e)));\n this._register(addDisposableListener(container, 'cut', e => this.handleCopy(e)));\n this._register(addDisposableListener(container, 'paste', e => this.handlePaste(e), true));\n }\n arePasteActionsEnabled(model) {\n return this._configurationService.getValue('editor.experimental.pasteActions.enabled', {\n resource: model.uri\n });\n }\n handleCopy(e) {\n var _a;\n if (!e.clipboardData || !this._editor.hasTextFocus()) {\n return;\n }\n const model = this._editor.getModel();\n const selections = this._editor.getSelections();\n if (!model || !(selections === null || selections === void 0 ? void 0 : selections.length)) {\n return;\n }\n if (!this.arePasteActionsEnabled(model)) {\n return;\n }\n const ranges = [...selections];\n const primarySelection = selections[0];\n const wasFromEmptySelection = primarySelection.isEmpty();\n if (wasFromEmptySelection) {\n if (!this._editor.getOption(33 /* EditorOption.emptySelectionClipboard */)) {\n return;\n }\n ranges[0] = new Range(primarySelection.startLineNumber, 0, primarySelection.startLineNumber, model.getLineLength(primarySelection.startLineNumber));\n }\n const providers = this._languageFeaturesService.documentPasteEditProvider.ordered(model).filter(x => !!x.prepareDocumentPaste);\n if (!providers.length) {\n this.setCopyMetadata(e.clipboardData, { wasFromEmptySelection });\n return;\n }\n const dataTransfer = toVSDataTransfer(e.clipboardData);\n // Save off a handle pointing to data that VS Code maintains.\n const handle = generateUuid();\n this.setCopyMetadata(e.clipboardData, {\n id: handle,\n wasFromEmptySelection,\n });\n const promise = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\n const results = yield Promise.all(providers.map(provider => {\n return provider.prepareDocumentPaste(model, ranges, dataTransfer, token);\n }));\n for (const result of results) {\n result === null || result === void 0 ? void 0 : result.forEach((value, key) => {\n dataTransfer.replace(key, value);\n });\n }\n return dataTransfer;\n }));\n (_a = this._currentClipboardItem) === null || _a === void 0 ? void 0 : _a.dataTransferPromise.cancel();\n this._currentClipboardItem = { handle: handle, dataTransferPromise: promise };\n }\n setCopyMetadata(dataTransfer, metadata) {\n dataTransfer.setData(vscodeClipboardMime, JSON.stringify(metadata));\n }\n handlePaste(e) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n if (!e.clipboardData || !this._editor.hasTextFocus()) {\n return;\n }\n const selections = this._editor.getSelections();\n if (!(selections === null || selections === void 0 ? void 0 : selections.length) || !this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n if (!this.arePasteActionsEnabled(model)) {\n return;\n }\n let metadata;\n const rawMetadata = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData(vscodeClipboardMime);\n if (rawMetadata && typeof rawMetadata === 'string') {\n metadata = JSON.parse(rawMetadata);\n }\n const providers = this._languageFeaturesService.documentPasteEditProvider.ordered(model);\n if (!providers.length) {\n return;\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n const originalDocVersion = model.getVersionId();\n const tokenSource = new EditorStateCancellationTokenSource(this._editor, 1 /* CodeEditorStateFlag.Value */ | 2 /* CodeEditorStateFlag.Selection */);\n try {\n const dataTransfer = toVSDataTransfer(e.clipboardData);\n if ((metadata === null || metadata === void 0 ? void 0 : metadata.id) && ((_b = this._currentClipboardItem) === null || _b === void 0 ? void 0 : _b.handle) === metadata.id) {\n const toMergeDataTransfer = yield this._currentClipboardItem.dataTransferPromise;\n toMergeDataTransfer.forEach((value, key) => {\n dataTransfer.replace(key, value);\n });\n }\n if (!dataTransfer.has(Mimes.uriList)) {\n const resources = yield this._clipboardService.readResources();\n if (resources.length) {\n dataTransfer.append(Mimes.uriList, createStringDataTransferItem(UriList.create(resources)));\n }\n }\n dataTransfer.delete(vscodeClipboardMime);\n for (const provider of providers) {\n if (!provider.pasteMimeTypes.some(type => {\n if (type.toLowerCase() === DataTransfers.FILES.toLowerCase()) {\n return [...dataTransfer.values()].some(item => item.asFile());\n }\n return dataTransfer.has(type);\n })) {\n continue;\n }\n const edit = yield provider.provideDocumentPasteEdits(model, selections, dataTransfer, tokenSource.token);\n if (originalDocVersion !== model.getVersionId()) {\n return;\n }\n if (edit) {\n performSnippetEdit(this._editor, typeof edit.insertText === 'string' ? SnippetParser.escape(edit.insertText) : edit.insertText.snippet, selections);\n if (edit.additionalEdit) {\n yield this._bulkEditService.apply(ResourceEdit.convert(edit.additionalEdit), { editor: this._editor });\n }\n return;\n }\n }\n // Default handler\n const textDataTransfer = (_c = dataTransfer.get(Mimes.text)) !== null && _c !== void 0 ? _c : dataTransfer.get('text');\n if (!textDataTransfer) {\n return;\n }\n const text = yield textDataTransfer.asString();\n if (originalDocVersion !== model.getVersionId()) {\n return;\n }\n this._editor.trigger('keyboard', \"paste\" /* Handler.Paste */, {\n text: text,\n pasteOnNewLine: metadata === null || metadata === void 0 ? void 0 : metadata.wasFromEmptySelection,\n multicursorText: null\n });\n }\n finally {\n tokenSource.dispose();\n }\n });\n }\n};\nCopyPasteController.ID = 'editor.contrib.copyPasteActionController';\nCopyPasteController = __decorate([\n __param(1, IBulkEditService),\n __param(2, IClipboardService),\n __param(3, IConfigurationService),\n __param(4, ILanguageFeaturesService)\n], CopyPasteController);\nexport { CopyPasteController };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { editorConfigurationBaseNode } from '../../../common/config/editorConfigurationSchema.js';\nimport { CopyPasteController } from './copyPasteController.js';\nimport * as nls from '../../../../nls.js';\nimport { Extensions } from '../../../../platform/configuration/common/configurationRegistry.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nregisterEditorContribution(CopyPasteController.ID, CopyPasteController);\nRegistry.as(Extensions.Configuration).registerConfiguration(Object.assign(Object.assign({}, editorConfigurationBaseNode), { properties: {\n 'editor.experimental.pasteActions.enabled': {\n type: 'boolean',\n scope: 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,\n description: nls.localize('pasteActions', \"Enable/disable running edits from extensions on paste.\"),\n default: false,\n },\n } }));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nclass CursorState {\n constructor(selections) {\n this.selections = selections;\n }\n equals(other) {\n const thisLen = this.selections.length;\n const otherLen = other.selections.length;\n if (thisLen !== otherLen) {\n return false;\n }\n for (let i = 0; i < thisLen; i++) {\n if (!this.selections[i].equalsSelection(other.selections[i])) {\n return false;\n }\n }\n return true;\n }\n}\nclass StackElement {\n constructor(cursorState, scrollTop, scrollLeft) {\n this.cursorState = cursorState;\n this.scrollTop = scrollTop;\n this.scrollLeft = scrollLeft;\n }\n}\nexport class CursorUndoRedoController extends Disposable {\n constructor(editor) {\n super();\n this._editor = editor;\n this._isCursorUndoRedo = false;\n this._undoStack = [];\n this._redoStack = [];\n this._register(editor.onDidChangeModel((e) => {\n this._undoStack = [];\n this._redoStack = [];\n }));\n this._register(editor.onDidChangeModelContent((e) => {\n this._undoStack = [];\n this._redoStack = [];\n }));\n this._register(editor.onDidChangeCursorSelection((e) => {\n if (this._isCursorUndoRedo) {\n return;\n }\n if (!e.oldSelections) {\n return;\n }\n if (e.oldModelVersionId !== e.modelVersionId) {\n return;\n }\n const prevState = new CursorState(e.oldSelections);\n const isEqualToLastUndoStack = (this._undoStack.length > 0 && this._undoStack[this._undoStack.length - 1].cursorState.equals(prevState));\n if (!isEqualToLastUndoStack) {\n this._undoStack.push(new StackElement(prevState, editor.getScrollTop(), editor.getScrollLeft()));\n this._redoStack = [];\n if (this._undoStack.length > 50) {\n // keep the cursor undo stack bounded\n this._undoStack.shift();\n }\n }\n }));\n }\n static get(editor) {\n return editor.getContribution(CursorUndoRedoController.ID);\n }\n cursorUndo() {\n if (!this._editor.hasModel() || this._undoStack.length === 0) {\n return;\n }\n this._redoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\n this._applyState(this._undoStack.pop());\n }\n cursorRedo() {\n if (!this._editor.hasModel() || this._redoStack.length === 0) {\n return;\n }\n this._undoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\n this._applyState(this._redoStack.pop());\n }\n _applyState(stackElement) {\n this._isCursorUndoRedo = true;\n this._editor.setSelections(stackElement.cursorState.selections);\n this._editor.setScrollPosition({\n scrollTop: stackElement.scrollTop,\n scrollLeft: stackElement.scrollLeft\n });\n this._isCursorUndoRedo = false;\n }\n}\nCursorUndoRedoController.ID = 'editor.contrib.cursorUndoRedoController';\nexport class CursorUndo extends EditorAction {\n constructor() {\n super({\n id: 'cursorUndo',\n label: nls.localize('cursor.undo', \"Cursor Undo\"),\n alias: 'Cursor Undo',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 51 /* KeyCode.KeyU */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor, args) {\n var _a;\n (_a = CursorUndoRedoController.get(editor)) === null || _a === void 0 ? void 0 : _a.cursorUndo();\n }\n}\nexport class CursorRedo extends EditorAction {\n constructor() {\n super({\n id: 'cursorRedo',\n label: nls.localize('cursor.redo', \"Cursor Redo\"),\n alias: 'Cursor Redo',\n precondition: undefined\n });\n }\n run(accessor, editor, args) {\n var _a;\n (_a = CursorUndoRedoController.get(editor)) === null || _a === void 0 ? void 0 : _a.cursorRedo();\n }\n}\nregisterEditorContribution(CursorUndoRedoController.ID, CursorUndoRedoController);\nregisterEditorAction(CursorUndo);\nregisterEditorAction(CursorRedo);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class DragAndDropCommand {\n constructor(selection, targetPosition, copy) {\n this.selection = selection;\n this.targetPosition = targetPosition;\n this.copy = copy;\n this.targetSelection = null;\n }\n getEditOperations(model, builder) {\n const text = model.getValueInRange(this.selection);\n if (!this.copy) {\n builder.addEditOperation(this.selection, null);\n }\n builder.addEditOperation(new Range(this.targetPosition.lineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.targetPosition.column), text);\n if (this.selection.containsPosition(this.targetPosition) && !(this.copy && (this.selection.getEndPosition().equals(this.targetPosition) || this.selection.getStartPosition().equals(this.targetPosition)) // we allow users to paste content beside the selection\n )) {\n this.targetSelection = this.selection;\n return;\n }\n if (this.copy) {\n this.targetSelection = new Selection(this.targetPosition.lineNumber, this.targetPosition.column, this.selection.endLineNumber - this.selection.startLineNumber + this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\n this.selection.endColumn);\n return;\n }\n if (this.targetPosition.lineNumber > this.selection.endLineNumber) {\n // Drag the selection downwards\n this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\n this.selection.endColumn);\n return;\n }\n if (this.targetPosition.lineNumber < this.selection.endLineNumber) {\n // Drag the selection upwards\n this.targetSelection = new Selection(this.targetPosition.lineNumber, this.targetPosition.column, this.targetPosition.lineNumber + this.selection.endLineNumber - this.selection.startLineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\n this.selection.endColumn);\n return;\n }\n // The target position is at the same line as the selection's end position.\n if (this.selection.endColumn <= this.targetPosition.column) {\n // The target position is after the selection's end position\n this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n this.targetPosition.column - this.selection.endColumn + this.selection.startColumn :\n this.targetPosition.column - this.selection.endColumn + this.selection.startColumn, this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\n this.targetPosition.column :\n this.selection.endColumn);\n }\n else {\n // The target position is before the selection's end position. Since the selection doesn't contain the target position, the selection is one-line and target position is before this selection.\n this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.targetPosition.column + this.selection.endColumn - this.selection.startColumn);\n }\n }\n computeCursorState(model, helper) {\n return this.targetSelection;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { isMacintosh } from '../../../../base/common/platform.js';\nimport './dnd.css';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { DragAndDropCommand } from './dragAndDropCommand.js';\nfunction hasTriggerModifier(e) {\n if (isMacintosh) {\n return e.altKey;\n }\n else {\n return e.ctrlKey;\n }\n}\nexport class DragAndDropController extends Disposable {\n constructor(editor) {\n super();\n this._editor = editor;\n this._dndDecorationIds = this._editor.createDecorationsCollection();\n this._register(this._editor.onMouseDown((e) => this._onEditorMouseDown(e)));\n this._register(this._editor.onMouseUp((e) => this._onEditorMouseUp(e)));\n this._register(this._editor.onMouseDrag((e) => this._onEditorMouseDrag(e)));\n this._register(this._editor.onMouseDrop((e) => this._onEditorMouseDrop(e)));\n this._register(this._editor.onMouseDropCanceled(() => this._onEditorMouseDropCanceled()));\n this._register(this._editor.onKeyDown((e) => this.onEditorKeyDown(e)));\n this._register(this._editor.onKeyUp((e) => this.onEditorKeyUp(e)));\n this._register(this._editor.onDidBlurEditorWidget(() => this.onEditorBlur()));\n this._register(this._editor.onDidBlurEditorText(() => this.onEditorBlur()));\n this._mouseDown = false;\n this._modifierPressed = false;\n this._dragSelection = null;\n }\n onEditorBlur() {\n this._removeDecoration();\n this._dragSelection = null;\n this._mouseDown = false;\n this._modifierPressed = false;\n }\n onEditorKeyDown(e) {\n if (!this._editor.getOption(31 /* EditorOption.dragAndDrop */) || this._editor.getOption(18 /* EditorOption.columnSelection */)) {\n return;\n }\n if (hasTriggerModifier(e)) {\n this._modifierPressed = true;\n }\n if (this._mouseDown && hasTriggerModifier(e)) {\n this._editor.updateOptions({\n mouseStyle: 'copy'\n });\n }\n }\n onEditorKeyUp(e) {\n if (!this._editor.getOption(31 /* EditorOption.dragAndDrop */) || this._editor.getOption(18 /* EditorOption.columnSelection */)) {\n return;\n }\n if (hasTriggerModifier(e)) {\n this._modifierPressed = false;\n }\n if (this._mouseDown && e.keyCode === DragAndDropController.TRIGGER_KEY_VALUE) {\n this._editor.updateOptions({\n mouseStyle: 'default'\n });\n }\n }\n _onEditorMouseDown(mouseEvent) {\n this._mouseDown = true;\n }\n _onEditorMouseUp(mouseEvent) {\n this._mouseDown = false;\n // Whenever users release the mouse, the drag and drop operation should finish and the cursor should revert to text.\n this._editor.updateOptions({\n mouseStyle: 'text'\n });\n }\n _onEditorMouseDrag(mouseEvent) {\n const target = mouseEvent.target;\n if (this._dragSelection === null) {\n const selections = this._editor.getSelections() || [];\n const possibleSelections = selections.filter(selection => target.position && selection.containsPosition(target.position));\n if (possibleSelections.length === 1) {\n this._dragSelection = possibleSelections[0];\n }\n else {\n return;\n }\n }\n if (hasTriggerModifier(mouseEvent.event)) {\n this._editor.updateOptions({\n mouseStyle: 'copy'\n });\n }\n else {\n this._editor.updateOptions({\n mouseStyle: 'default'\n });\n }\n if (target.position) {\n if (this._dragSelection.containsPosition(target.position)) {\n this._removeDecoration();\n }\n else {\n this.showAt(target.position);\n }\n }\n }\n _onEditorMouseDropCanceled() {\n this._editor.updateOptions({\n mouseStyle: 'text'\n });\n this._removeDecoration();\n this._dragSelection = null;\n this._mouseDown = false;\n }\n _onEditorMouseDrop(mouseEvent) {\n if (mouseEvent.target && (this._hitContent(mouseEvent.target) || this._hitMargin(mouseEvent.target)) && mouseEvent.target.position) {\n const newCursorPosition = new Position(mouseEvent.target.position.lineNumber, mouseEvent.target.position.column);\n if (this._dragSelection === null) {\n let newSelections = null;\n if (mouseEvent.event.shiftKey) {\n const primarySelection = this._editor.getSelection();\n if (primarySelection) {\n const { selectionStartLineNumber, selectionStartColumn } = primarySelection;\n newSelections = [new Selection(selectionStartLineNumber, selectionStartColumn, newCursorPosition.lineNumber, newCursorPosition.column)];\n }\n }\n else {\n newSelections = (this._editor.getSelections() || []).map(selection => {\n if (selection.containsPosition(newCursorPosition)) {\n return new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\n }\n else {\n return selection;\n }\n });\n }\n // Use `mouse` as the source instead of `api` and setting the reason to explicit (to behave like any other mouse operation).\n this._editor.setSelections(newSelections || [], 'mouse', 3 /* CursorChangeReason.Explicit */);\n }\n else if (!this._dragSelection.containsPosition(newCursorPosition) ||\n ((hasTriggerModifier(mouseEvent.event) ||\n this._modifierPressed) && (this._dragSelection.getEndPosition().equals(newCursorPosition) || this._dragSelection.getStartPosition().equals(newCursorPosition)) // we allow users to paste content beside the selection\n )) {\n this._editor.pushUndoStop();\n this._editor.executeCommand(DragAndDropController.ID, new DragAndDropCommand(this._dragSelection, newCursorPosition, hasTriggerModifier(mouseEvent.event) || this._modifierPressed));\n this._editor.pushUndoStop();\n }\n }\n this._editor.updateOptions({\n mouseStyle: 'text'\n });\n this._removeDecoration();\n this._dragSelection = null;\n this._mouseDown = false;\n }\n showAt(position) {\n this._dndDecorationIds.set([{\n range: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\n options: DragAndDropController._DECORATION_OPTIONS\n }]);\n this._editor.revealPosition(position, 1 /* ScrollType.Immediate */);\n }\n _removeDecoration() {\n this._dndDecorationIds.clear();\n }\n _hitContent(target) {\n return target.type === 6 /* MouseTargetType.CONTENT_TEXT */ ||\n target.type === 7 /* MouseTargetType.CONTENT_EMPTY */;\n }\n _hitMargin(target) {\n return target.type === 2 /* MouseTargetType.GUTTER_GLYPH_MARGIN */ ||\n target.type === 3 /* MouseTargetType.GUTTER_LINE_NUMBERS */ ||\n target.type === 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */;\n }\n dispose() {\n this._removeDecoration();\n this._dragSelection = null;\n this._mouseDown = false;\n this._modifierPressed = false;\n super.dispose();\n }\n}\nDragAndDropController.ID = 'editor.contrib.dragAndDrop';\nDragAndDropController.TRIGGER_KEY_VALUE = isMacintosh ? 6 /* KeyCode.Alt */ : 5 /* KeyCode.Ctrl */;\nDragAndDropController._DECORATION_OPTIONS = ModelDecorationOptions.register({\n description: 'dnd-target',\n className: 'dnd-target'\n});\nregisterEditorContribution(DragAndDropController.ID, DragAndDropController);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { IOutlineModelService } from './outlineModel.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nCommandsRegistry.registerCommand('_executeDocumentSymbolProvider', function (accessor, ...args) {\n return __awaiter(this, void 0, void 0, function* () {\n const [resource] = args;\n assertType(URI.isUri(resource));\n const outlineService = accessor.get(IOutlineModelService);\n const modelService = accessor.get(ITextModelService);\n const reference = yield modelService.createModelReference(resource);\n try {\n return (yield outlineService.getOrCreate(reference.object.textEditorModel, CancellationToken.None)).getTopLevelSymbols();\n }\n finally {\n reference.dispose();\n }\n });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { equals } from '../../../../base/common/arrays.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class TreeElement {\n remove() {\n var _a;\n (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.delete(this.id);\n }\n static findId(candidate, container) {\n // complex id-computation which contains the origin/extension,\n // the parent path, and some dedupe logic when names collide\n let candidateId;\n if (typeof candidate === 'string') {\n candidateId = `${container.id}/${candidate}`;\n }\n else {\n candidateId = `${container.id}/${candidate.name}`;\n if (container.children.get(candidateId) !== undefined) {\n candidateId = `${container.id}/${candidate.name}_${candidate.range.startLineNumber}_${candidate.range.startColumn}`;\n }\n }\n let id = candidateId;\n for (let i = 0; container.children.get(id) !== undefined; i++) {\n id = `${candidateId}_${i}`;\n }\n return id;\n }\n static empty(element) {\n return element.children.size === 0;\n }\n}\nexport class OutlineElement extends TreeElement {\n constructor(id, parent, symbol) {\n super();\n this.id = id;\n this.parent = parent;\n this.symbol = symbol;\n this.children = new Map();\n }\n}\nexport class OutlineGroup extends TreeElement {\n constructor(id, parent, label, order) {\n super();\n this.id = id;\n this.parent = parent;\n this.label = label;\n this.order = order;\n this.children = new Map();\n }\n}\nexport class OutlineModel extends TreeElement {\n constructor(uri) {\n super();\n this.uri = uri;\n this.id = 'root';\n this.parent = undefined;\n this._groups = new Map();\n this.children = new Map();\n this.id = 'root';\n this.parent = undefined;\n }\n static create(registry, textModel, token) {\n const cts = new CancellationTokenSource(token);\n const result = new OutlineModel(textModel.uri);\n const provider = registry.ordered(textModel);\n const promises = provider.map((provider, index) => {\n var _a;\n const id = TreeElement.findId(`provider_${index}`, result);\n const group = new OutlineGroup(id, result, (_a = provider.displayName) !== null && _a !== void 0 ? _a : 'Unknown Outline Provider', index);\n return Promise.resolve(provider.provideDocumentSymbols(textModel, cts.token)).then(result => {\n for (const info of result || []) {\n OutlineModel._makeOutlineElement(info, group);\n }\n return group;\n }, err => {\n onUnexpectedExternalError(err);\n return group;\n }).then(group => {\n if (!TreeElement.empty(group)) {\n result._groups.set(id, group);\n }\n else {\n group.remove();\n }\n });\n });\n const listener = registry.onDidChange(() => {\n const newProvider = registry.ordered(textModel);\n if (!equals(newProvider, provider)) {\n cts.cancel();\n }\n });\n return Promise.all(promises).then(() => {\n if (cts.token.isCancellationRequested && !token.isCancellationRequested) {\n return OutlineModel.create(registry, textModel, token);\n }\n else {\n return result._compact();\n }\n }).finally(() => {\n listener.dispose();\n });\n }\n static _makeOutlineElement(info, container) {\n const id = TreeElement.findId(info, container);\n const res = new OutlineElement(id, container, info);\n if (info.children) {\n for (const childInfo of info.children) {\n OutlineModel._makeOutlineElement(childInfo, res);\n }\n }\n container.children.set(res.id, res);\n }\n _compact() {\n let count = 0;\n for (const [key, group] of this._groups) {\n if (group.children.size === 0) { // empty\n this._groups.delete(key);\n }\n else {\n count += 1;\n }\n }\n if (count !== 1) {\n //\n this.children = this._groups;\n }\n else {\n // adopt all elements of the first group\n const group = Iterable.first(this._groups.values());\n for (const [, child] of group.children) {\n child.parent = this;\n this.children.set(child.id, child);\n }\n }\n return this;\n }\n getTopLevelSymbols() {\n const roots = [];\n for (const child of this.children.values()) {\n if (child instanceof OutlineElement) {\n roots.push(child.symbol);\n }\n else {\n roots.push(...Iterable.map(child.children.values(), child => child.symbol));\n }\n }\n return roots.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n }\n asListOfDocumentSymbols() {\n const roots = this.getTopLevelSymbols();\n const bucket = [];\n OutlineModel._flattenDocumentSymbols(bucket, roots, '');\n return bucket.sort((a, b) => Position.compare(Range.getStartPosition(a.range), Range.getStartPosition(b.range)) || Position.compare(Range.getEndPosition(b.range), Range.getEndPosition(a.range)));\n }\n static _flattenDocumentSymbols(bucket, entries, overrideContainerLabel) {\n for (const entry of entries) {\n bucket.push({\n kind: entry.kind,\n tags: entry.tags,\n name: entry.name,\n detail: entry.detail,\n containerName: entry.containerName || overrideContainerLabel,\n range: entry.range,\n selectionRange: entry.selectionRange,\n children: undefined, // we flatten it...\n });\n // Recurse over children\n if (entry.children) {\n OutlineModel._flattenDocumentSymbols(bucket, entry.children, entry.name);\n }\n }\n }\n}\nexport const IOutlineModelService = createDecorator('IOutlineModelService');\nlet OutlineModelService = class OutlineModelService {\n constructor(_languageFeaturesService, debounces, modelService) {\n this._languageFeaturesService = _languageFeaturesService;\n this._disposables = new DisposableStore();\n this._cache = new LRUCache(10, 0.7);\n this._debounceInformation = debounces.for(_languageFeaturesService.documentSymbolProvider, 'DocumentSymbols', { min: 350 });\n // don't cache outline models longer than their text model\n this._disposables.add(modelService.onModelRemoved(textModel => {\n this._cache.delete(textModel.id);\n }));\n }\n dispose() {\n this._disposables.dispose();\n }\n getOrCreate(textModel, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const registry = this._languageFeaturesService.documentSymbolProvider;\n const provider = registry.ordered(textModel);\n let data = this._cache.get(textModel.id);\n if (!data || data.versionId !== textModel.getVersionId() || !equals(data.provider, provider)) {\n const source = new CancellationTokenSource();\n data = {\n versionId: textModel.getVersionId(),\n provider,\n promiseCnt: 0,\n source,\n promise: OutlineModel.create(registry, textModel, source.token),\n model: undefined,\n };\n this._cache.set(textModel.id, data);\n const now = Date.now();\n data.promise.then(outlineModel => {\n data.model = outlineModel;\n this._debounceInformation.update(textModel, Date.now() - now);\n }).catch(_err => {\n this._cache.delete(textModel.id);\n });\n }\n if (data.model) {\n // resolved -> return data\n return data.model;\n }\n // increase usage counter\n data.promiseCnt += 1;\n const listener = token.onCancellationRequested(() => {\n // last -> cancel provider request, remove cached promise\n if (--data.promiseCnt === 0) {\n data.source.cancel();\n this._cache.delete(textModel.id);\n }\n });\n try {\n return yield data.promise;\n }\n finally {\n listener.dispose();\n }\n });\n }\n};\nOutlineModelService = __decorate([\n __param(0, ILanguageFeaturesService),\n __param(1, ILanguageFeatureDebounceService),\n __param(2, IModelService)\n], OutlineModelService);\nexport { OutlineModelService };\nregisterSingleton(IOutlineModelService, OutlineModelService, true);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { raceCancellation } from '../../../../base/common/async.js';\nimport { VSDataTransfer } from '../../../../base/common/dataTransfer.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Mimes } from '../../../../base/common/mime.js';\nimport { relativePath } from '../../../../base/common/resources.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { addExternalEditorsDropData, toVSDataTransfer, UriList } from '../../../browser/dnd.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IBulkEditService, ResourceEdit } from '../../../browser/services/bulkEditService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { performSnippetEdit } from '../../snippet/browser/snippetController2.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { localize } from '../../../../nls.js';\nimport { IProgressService } from '../../../../platform/progress/common/progress.js';\nimport { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';\nlet DropIntoEditorController = class DropIntoEditorController extends Disposable {\n constructor(editor, _bulkEditService, _languageFeaturesService, _progressService, workspaceContextService) {\n super();\n this._bulkEditService = _bulkEditService;\n this._languageFeaturesService = _languageFeaturesService;\n this._progressService = _progressService;\n this._register(editor.onDropIntoEditor(e => this.onDropIntoEditor(editor, e.position, e.event)));\n this._languageFeaturesService.documentOnDropEditProvider.register('*', new DefaultOnDropProvider(workspaceContextService));\n }\n onDropIntoEditor(editor, position, dragEvent) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!dragEvent.dataTransfer || !editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n const initialModelVersion = model.getVersionId();\n const ourDataTransfer = yield this.extractDataTransferData(dragEvent);\n if (ourDataTransfer.size === 0) {\n return;\n }\n if (editor.getModel().getVersionId() !== initialModelVersion) {\n return;\n }\n const tokenSource = new EditorStateCancellationTokenSource(editor, 1 /* CodeEditorStateFlag.Value */);\n try {\n const providers = this._languageFeaturesService.documentOnDropEditProvider.ordered(model);\n const edit = yield this._progressService.withProgress({\n location: 15 /* ProgressLocation.Notification */,\n delay: 750,\n title: localize('dropProgressTitle', \"Running drop handlers...\"),\n cancellable: true,\n }, () => {\n return raceCancellation((() => __awaiter(this, void 0, void 0, function* () {\n for (const provider of providers) {\n const edit = yield provider.provideDocumentOnDropEdits(model, position, ourDataTransfer, tokenSource.token);\n if (tokenSource.token.isCancellationRequested) {\n return undefined;\n }\n if (edit) {\n return edit;\n }\n }\n return undefined;\n }))(), tokenSource.token);\n }, () => {\n tokenSource.cancel();\n });\n if (tokenSource.token.isCancellationRequested || editor.getModel().getVersionId() !== initialModelVersion) {\n return;\n }\n if (edit) {\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n performSnippetEdit(editor, typeof edit.insertText === 'string' ? SnippetParser.escape(edit.insertText) : edit.insertText.snippet, [Selection.fromRange(range, 0 /* SelectionDirection.LTR */)]);\n if (edit.additionalEdit) {\n yield this._bulkEditService.apply(ResourceEdit.convert(edit.additionalEdit), { editor });\n }\n return;\n }\n }\n finally {\n tokenSource.dispose();\n }\n });\n }\n extractDataTransferData(dragEvent) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!dragEvent.dataTransfer) {\n return new VSDataTransfer();\n }\n const textEditorDataTransfer = toVSDataTransfer(dragEvent.dataTransfer);\n addExternalEditorsDropData(textEditorDataTransfer, dragEvent);\n return textEditorDataTransfer;\n });\n }\n};\nDropIntoEditorController.ID = 'editor.contrib.dropIntoEditorController';\nDropIntoEditorController = __decorate([\n __param(1, IBulkEditService),\n __param(2, ILanguageFeaturesService),\n __param(3, IProgressService),\n __param(4, IWorkspaceContextService)\n], DropIntoEditorController);\nexport { DropIntoEditorController };\nlet DefaultOnDropProvider = class DefaultOnDropProvider {\n constructor(_workspaceContextService) {\n this._workspaceContextService = _workspaceContextService;\n }\n provideDocumentOnDropEdits(_model, _position, dataTransfer, _token) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const urlListEntry = dataTransfer.get(Mimes.uriList);\n if (urlListEntry) {\n const urlList = yield urlListEntry.asString();\n const snippet = this.getUriListInsertText(urlList);\n if (snippet) {\n return { insertText: snippet };\n }\n }\n const textEntry = (_a = dataTransfer.get('text')) !== null && _a !== void 0 ? _a : dataTransfer.get(Mimes.text);\n if (textEntry) {\n const text = yield textEntry.asString();\n return { insertText: text };\n }\n return undefined;\n });\n }\n getUriListInsertText(strUriList) {\n const uris = [];\n for (const resource of UriList.parse(strUriList)) {\n try {\n uris.push(URI.parse(resource));\n }\n catch (_a) {\n // noop\n }\n }\n if (!uris.length) {\n return;\n }\n return uris\n .map(uri => {\n const root = this._workspaceContextService.getWorkspaceFolder(uri);\n if (root) {\n const rel = relativePath(root.uri, uri);\n if (rel) {\n return rel;\n }\n }\n return uri.fsPath;\n })\n .join(' ');\n }\n};\nDefaultOnDropProvider = __decorate([\n __param(0, IWorkspaceContextService)\n], DefaultOnDropProvider);\nregisterEditorContribution(DropIntoEditorController.ID, DropIntoEditorController);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorCommand, registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { localize } from '../../../../nls.js';\nconst IEditorCancellationTokens = createDecorator('IEditorCancelService');\nconst ctxCancellableOperation = new RawContextKey('cancellableOperation', false, localize('cancellableOperation', 'Whether the editor runs a cancellable operation, e.g. like \\'Peek References\\''));\nregisterSingleton(IEditorCancellationTokens, class {\n constructor() {\n this._tokens = new WeakMap();\n }\n add(editor, cts) {\n let data = this._tokens.get(editor);\n if (!data) {\n data = editor.invokeWithinContext(accessor => {\n const key = ctxCancellableOperation.bindTo(accessor.get(IContextKeyService));\n const tokens = new LinkedList();\n return { key, tokens };\n });\n this._tokens.set(editor, data);\n }\n let removeFn;\n data.key.set(true);\n removeFn = data.tokens.push(cts);\n return () => {\n // remove w/o cancellation\n if (removeFn) {\n removeFn();\n data.key.set(!data.tokens.isEmpty());\n removeFn = undefined;\n }\n };\n }\n cancel(editor) {\n const data = this._tokens.get(editor);\n if (!data) {\n return;\n }\n // remove with cancellation\n const cts = data.tokens.pop();\n if (cts) {\n cts.cancel();\n data.key.set(!data.tokens.isEmpty());\n }\n }\n}, true);\nexport class EditorKeybindingCancellationTokenSource extends CancellationTokenSource {\n constructor(editor, parent) {\n super(parent);\n this.editor = editor;\n this._unregister = editor.invokeWithinContext(accessor => accessor.get(IEditorCancellationTokens).add(editor, this));\n }\n dispose() {\n this._unregister();\n super.dispose();\n }\n}\nregisterEditorCommand(new class extends EditorCommand {\n constructor() {\n super({\n id: 'editor.cancelOperation',\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */,\n primary: 9 /* KeyCode.Escape */\n },\n precondition: ctxCancellableOperation\n });\n }\n runEditorCommand(accessor, editor) {\n accessor.get(IEditorCancellationTokens).cancel(editor);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as strings from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorKeybindingCancellationTokenSource } from './keybindingCancellation.js';\nexport class EditorState {\n constructor(editor, flags) {\n this.flags = flags;\n if ((this.flags & 1 /* CodeEditorStateFlag.Value */) !== 0) {\n const model = editor.getModel();\n this.modelVersionId = model ? strings.format('{0}#{1}', model.uri.toString(), model.getVersionId()) : null;\n }\n else {\n this.modelVersionId = null;\n }\n if ((this.flags & 4 /* CodeEditorStateFlag.Position */) !== 0) {\n this.position = editor.getPosition();\n }\n else {\n this.position = null;\n }\n if ((this.flags & 2 /* CodeEditorStateFlag.Selection */) !== 0) {\n this.selection = editor.getSelection();\n }\n else {\n this.selection = null;\n }\n if ((this.flags & 8 /* CodeEditorStateFlag.Scroll */) !== 0) {\n this.scrollLeft = editor.getScrollLeft();\n this.scrollTop = editor.getScrollTop();\n }\n else {\n this.scrollLeft = -1;\n this.scrollTop = -1;\n }\n }\n _equals(other) {\n if (!(other instanceof EditorState)) {\n return false;\n }\n const state = other;\n if (this.modelVersionId !== state.modelVersionId) {\n return false;\n }\n if (this.scrollLeft !== state.scrollLeft || this.scrollTop !== state.scrollTop) {\n return false;\n }\n if (!this.position && state.position || this.position && !state.position || this.position && state.position && !this.position.equals(state.position)) {\n return false;\n }\n if (!this.selection && state.selection || this.selection && !state.selection || this.selection && state.selection && !this.selection.equalsRange(state.selection)) {\n return false;\n }\n return true;\n }\n validate(editor) {\n return this._equals(new EditorState(editor, this.flags));\n }\n}\n/**\n * A cancellation token source that cancels when the editor changes as expressed\n * by the provided flags\n * @param range If provided, changes in position and selection within this range will not trigger cancellation\n */\nexport class EditorStateCancellationTokenSource extends EditorKeybindingCancellationTokenSource {\n constructor(editor, flags, range, parent) {\n super(editor, parent);\n this._listener = new DisposableStore();\n if (flags & 4 /* CodeEditorStateFlag.Position */) {\n this._listener.add(editor.onDidChangeCursorPosition(e => {\n if (!range || !Range.containsPosition(range, e.position)) {\n this.cancel();\n }\n }));\n }\n if (flags & 2 /* CodeEditorStateFlag.Selection */) {\n this._listener.add(editor.onDidChangeCursorSelection(e => {\n if (!range || !Range.containsRange(range, e.selection)) {\n this.cancel();\n }\n }));\n }\n if (flags & 8 /* CodeEditorStateFlag.Scroll */) {\n this._listener.add(editor.onDidScrollChange(_ => this.cancel()));\n }\n if (flags & 1 /* CodeEditorStateFlag.Value */) {\n this._listener.add(editor.onDidChangeModel(_ => this.cancel()));\n this._listener.add(editor.onDidChangeModelContent(_ => this.cancel()));\n }\n }\n dispose() {\n this._listener.dispose();\n super.dispose();\n }\n}\n/**\n * A cancellation token source that cancels when the provided model changes\n */\nexport class TextModelCancellationTokenSource extends CancellationTokenSource {\n constructor(model, parent) {\n super(parent);\n this._listener = model.onDidChangeContent(() => this.cancel());\n }\n dispose() {\n this._listener.dispose();\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nimport { MinimapPosition, OverviewRulerLane } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { minimapFindMatch, overviewRulerFindMatchForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nexport class FindDecorations {\n constructor(editor) {\n this._editor = editor;\n this._decorations = [];\n this._overviewRulerApproximateDecorations = [];\n this._findScopeDecorationIds = [];\n this._rangeHighlightDecorationId = null;\n this._highlightedDecorationId = null;\n this._startPosition = this._editor.getPosition();\n }\n dispose() {\n this._editor.removeDecorations(this._allDecorations());\n this._decorations = [];\n this._overviewRulerApproximateDecorations = [];\n this._findScopeDecorationIds = [];\n this._rangeHighlightDecorationId = null;\n this._highlightedDecorationId = null;\n }\n reset() {\n this._decorations = [];\n this._overviewRulerApproximateDecorations = [];\n this._findScopeDecorationIds = [];\n this._rangeHighlightDecorationId = null;\n this._highlightedDecorationId = null;\n }\n getCount() {\n return this._decorations.length;\n }\n /** @deprecated use getFindScopes to support multiple selections */\n getFindScope() {\n if (this._findScopeDecorationIds[0]) {\n return this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]);\n }\n return null;\n }\n getFindScopes() {\n if (this._findScopeDecorationIds.length) {\n const scopes = this._findScopeDecorationIds.map(findScopeDecorationId => this._editor.getModel().getDecorationRange(findScopeDecorationId)).filter(element => !!element);\n if (scopes.length) {\n return scopes;\n }\n }\n return null;\n }\n getStartPosition() {\n return this._startPosition;\n }\n setStartPosition(newStartPosition) {\n this._startPosition = newStartPosition;\n this.setCurrentFindMatch(null);\n }\n _getDecorationIndex(decorationId) {\n const index = this._decorations.indexOf(decorationId);\n if (index >= 0) {\n return index + 1;\n }\n return 1;\n }\n getCurrentMatchesPosition(desiredRange) {\n const candidates = this._editor.getModel().getDecorationsInRange(desiredRange);\n for (const candidate of candidates) {\n const candidateOpts = candidate.options;\n if (candidateOpts === FindDecorations._FIND_MATCH_DECORATION || candidateOpts === FindDecorations._CURRENT_FIND_MATCH_DECORATION) {\n return this._getDecorationIndex(candidate.id);\n }\n }\n // We don't know the current match position, so returns zero to show '?' in find widget\n return 0;\n }\n setCurrentFindMatch(nextMatch) {\n let newCurrentDecorationId = null;\n let matchPosition = 0;\n if (nextMatch) {\n for (let i = 0, len = this._decorations.length; i < len; i++) {\n const range = this._editor.getModel().getDecorationRange(this._decorations[i]);\n if (nextMatch.equalsRange(range)) {\n newCurrentDecorationId = this._decorations[i];\n matchPosition = (i + 1);\n break;\n }\n }\n }\n if (this._highlightedDecorationId !== null || newCurrentDecorationId !== null) {\n this._editor.changeDecorations((changeAccessor) => {\n if (this._highlightedDecorationId !== null) {\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._FIND_MATCH_DECORATION);\n this._highlightedDecorationId = null;\n }\n if (newCurrentDecorationId !== null) {\n this._highlightedDecorationId = newCurrentDecorationId;\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._CURRENT_FIND_MATCH_DECORATION);\n }\n if (this._rangeHighlightDecorationId !== null) {\n changeAccessor.removeDecoration(this._rangeHighlightDecorationId);\n this._rangeHighlightDecorationId = null;\n }\n if (newCurrentDecorationId !== null) {\n let rng = this._editor.getModel().getDecorationRange(newCurrentDecorationId);\n if (rng.startLineNumber !== rng.endLineNumber && rng.endColumn === 1) {\n const lineBeforeEnd = rng.endLineNumber - 1;\n const lineBeforeEndMaxColumn = this._editor.getModel().getLineMaxColumn(lineBeforeEnd);\n rng = new Range(rng.startLineNumber, rng.startColumn, lineBeforeEnd, lineBeforeEndMaxColumn);\n }\n this._rangeHighlightDecorationId = changeAccessor.addDecoration(rng, FindDecorations._RANGE_HIGHLIGHT_DECORATION);\n }\n });\n }\n return matchPosition;\n }\n set(findMatches, findScopes) {\n this._editor.changeDecorations((accessor) => {\n let findMatchesOptions = FindDecorations._FIND_MATCH_DECORATION;\n const newOverviewRulerApproximateDecorations = [];\n if (findMatches.length > 1000) {\n // we go into a mode where the overview ruler gets \"approximate\" decorations\n // the reason is that the overview ruler paints all the decorations in the file and we don't want to cause freezes\n findMatchesOptions = FindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION;\n // approximate a distance in lines where matches should be merged\n const lineCount = this._editor.getModel().getLineCount();\n const height = this._editor.getLayoutInfo().height;\n const approxPixelsPerLine = height / lineCount;\n const mergeLinesDelta = Math.max(2, Math.ceil(3 / approxPixelsPerLine));\n // merge decorations as much as possible\n let prevStartLineNumber = findMatches[0].range.startLineNumber;\n let prevEndLineNumber = findMatches[0].range.endLineNumber;\n for (let i = 1, len = findMatches.length; i < len; i++) {\n const range = findMatches[i].range;\n if (prevEndLineNumber + mergeLinesDelta >= range.startLineNumber) {\n if (range.endLineNumber > prevEndLineNumber) {\n prevEndLineNumber = range.endLineNumber;\n }\n }\n else {\n newOverviewRulerApproximateDecorations.push({\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\n });\n prevStartLineNumber = range.startLineNumber;\n prevEndLineNumber = range.endLineNumber;\n }\n }\n newOverviewRulerApproximateDecorations.push({\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\n });\n }\n // Find matches\n const newFindMatchesDecorations = new Array(findMatches.length);\n for (let i = 0, len = findMatches.length; i < len; i++) {\n newFindMatchesDecorations[i] = {\n range: findMatches[i].range,\n options: findMatchesOptions\n };\n }\n this._decorations = accessor.deltaDecorations(this._decorations, newFindMatchesDecorations);\n // Overview ruler approximate decorations\n this._overviewRulerApproximateDecorations = accessor.deltaDecorations(this._overviewRulerApproximateDecorations, newOverviewRulerApproximateDecorations);\n // Range highlight\n if (this._rangeHighlightDecorationId) {\n accessor.removeDecoration(this._rangeHighlightDecorationId);\n this._rangeHighlightDecorationId = null;\n }\n // Find scope\n if (this._findScopeDecorationIds.length) {\n this._findScopeDecorationIds.forEach(findScopeDecorationId => accessor.removeDecoration(findScopeDecorationId));\n this._findScopeDecorationIds = [];\n }\n if (findScopes === null || findScopes === void 0 ? void 0 : findScopes.length) {\n this._findScopeDecorationIds = findScopes.map(findScope => accessor.addDecoration(findScope, FindDecorations._FIND_SCOPE_DECORATION));\n }\n });\n }\n matchBeforePosition(position) {\n if (this._decorations.length === 0) {\n return null;\n }\n for (let i = this._decorations.length - 1; i >= 0; i--) {\n const decorationId = this._decorations[i];\n const r = this._editor.getModel().getDecorationRange(decorationId);\n if (!r || r.endLineNumber > position.lineNumber) {\n continue;\n }\n if (r.endLineNumber < position.lineNumber) {\n return r;\n }\n if (r.endColumn > position.column) {\n continue;\n }\n return r;\n }\n return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length - 1]);\n }\n matchAfterPosition(position) {\n if (this._decorations.length === 0) {\n return null;\n }\n for (let i = 0, len = this._decorations.length; i < len; i++) {\n const decorationId = this._decorations[i];\n const r = this._editor.getModel().getDecorationRange(decorationId);\n if (!r || r.startLineNumber < position.lineNumber) {\n continue;\n }\n if (r.startLineNumber > position.lineNumber) {\n return r;\n }\n if (r.startColumn < position.column) {\n continue;\n }\n return r;\n }\n return this._editor.getModel().getDecorationRange(this._decorations[0]);\n }\n _allDecorations() {\n let result = [];\n result = result.concat(this._decorations);\n result = result.concat(this._overviewRulerApproximateDecorations);\n if (this._findScopeDecorationIds.length) {\n result.push(...this._findScopeDecorationIds);\n }\n if (this._rangeHighlightDecorationId) {\n result.push(this._rangeHighlightDecorationId);\n }\n return result;\n }\n}\nFindDecorations._CURRENT_FIND_MATCH_DECORATION = ModelDecorationOptions.register({\n description: 'current-find-match',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n zIndex: 13,\n className: 'currentFindMatch',\n showIfCollapsed: true,\n overviewRuler: {\n color: themeColorFromId(overviewRulerFindMatchForeground),\n position: OverviewRulerLane.Center\n },\n minimap: {\n color: themeColorFromId(minimapFindMatch),\n position: MinimapPosition.Inline\n }\n});\nFindDecorations._FIND_MATCH_DECORATION = ModelDecorationOptions.register({\n description: 'find-match',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n zIndex: 10,\n className: 'findMatch',\n showIfCollapsed: true,\n overviewRuler: {\n color: themeColorFromId(overviewRulerFindMatchForeground),\n position: OverviewRulerLane.Center\n },\n minimap: {\n color: themeColorFromId(minimapFindMatch),\n position: MinimapPosition.Inline\n }\n});\nFindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION = ModelDecorationOptions.register({\n description: 'find-match-no-overview',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'findMatch',\n showIfCollapsed: true\n});\nFindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION = ModelDecorationOptions.register({\n description: 'find-match-only-overview',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n overviewRuler: {\n color: themeColorFromId(overviewRulerFindMatchForeground),\n position: OverviewRulerLane.Center\n }\n});\nFindDecorations._RANGE_HIGHLIGHT_DECORATION = ModelDecorationOptions.register({\n description: 'find-range-highlight',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'rangeHighlight',\n isWholeLine: true\n});\nFindDecorations._FIND_SCOPE_DECORATION = ModelDecorationOptions.register({\n description: 'find-scope',\n className: 'findScope',\n isWholeLine: true\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nexport class ReplaceAllCommand {\n constructor(editorSelection, ranges, replaceStrings) {\n this._editorSelection = editorSelection;\n this._ranges = ranges;\n this._replaceStrings = replaceStrings;\n this._trackedEditorSelectionId = null;\n }\n getEditOperations(model, builder) {\n if (this._ranges.length > 0) {\n // Collect all edit operations\n const ops = [];\n for (let i = 0; i < this._ranges.length; i++) {\n ops.push({\n range: this._ranges[i],\n text: this._replaceStrings[i]\n });\n }\n // Sort them in ascending order by range starts\n ops.sort((o1, o2) => {\n return Range.compareRangesUsingStarts(o1.range, o2.range);\n });\n // Merge operations that touch each other\n const resultOps = [];\n let previousOp = ops[0];\n for (let i = 1; i < ops.length; i++) {\n if (previousOp.range.endLineNumber === ops[i].range.startLineNumber && previousOp.range.endColumn === ops[i].range.startColumn) {\n // These operations are one after another and can be merged\n previousOp.range = previousOp.range.plusRange(ops[i].range);\n previousOp.text = previousOp.text + ops[i].text;\n }\n else {\n resultOps.push(previousOp);\n previousOp = ops[i];\n }\n }\n resultOps.push(previousOp);\n for (const op of resultOps) {\n builder.addEditOperation(op.range, op.text);\n }\n }\n this._trackedEditorSelectionId = builder.trackSelection(this._editorSelection);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this._trackedEditorSelectionId);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as strings from './strings.js';\nexport function buildReplaceStringWithCasePreserved(matches, pattern) {\n if (matches && (matches[0] !== '')) {\n const containsHyphens = validateSpecificSpecialCharacter(matches, pattern, '-');\n const containsUnderscores = validateSpecificSpecialCharacter(matches, pattern, '_');\n if (containsHyphens && !containsUnderscores) {\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '-');\n }\n else if (!containsHyphens && containsUnderscores) {\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '_');\n }\n if (matches[0].toUpperCase() === matches[0]) {\n return pattern.toUpperCase();\n }\n else if (matches[0].toLowerCase() === matches[0]) {\n return pattern.toLowerCase();\n }\n else if (strings.containsUppercaseCharacter(matches[0][0]) && pattern.length > 0) {\n return pattern[0].toUpperCase() + pattern.substr(1);\n }\n else if (matches[0][0].toUpperCase() !== matches[0][0] && pattern.length > 0) {\n return pattern[0].toLowerCase() + pattern.substr(1);\n }\n else {\n // we don't understand its pattern yet.\n return pattern;\n }\n }\n else {\n return pattern;\n }\n}\nfunction validateSpecificSpecialCharacter(matches, pattern, specialCharacter) {\n const doesContainSpecialCharacter = matches[0].indexOf(specialCharacter) !== -1 && pattern.indexOf(specialCharacter) !== -1;\n return doesContainSpecialCharacter && matches[0].split(specialCharacter).length === pattern.split(specialCharacter).length;\n}\nfunction buildReplaceStringForSpecificSpecialCharacter(matches, pattern, specialCharacter) {\n const splitPatternAtSpecialCharacter = pattern.split(specialCharacter);\n const splitMatchAtSpecialCharacter = matches[0].split(specialCharacter);\n let replaceString = '';\n splitPatternAtSpecialCharacter.forEach((splitValue, index) => {\n replaceString += buildReplaceStringWithCasePreserved([splitMatchAtSpecialCharacter[index]], splitValue) + specialCharacter;\n });\n return replaceString.slice(0, -1);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { buildReplaceStringWithCasePreserved } from '../../../../base/common/search.js';\n/**\n * Assigned when the replace pattern is entirely static.\n */\nclass StaticValueReplacePattern {\n constructor(staticValue) {\n this.staticValue = staticValue;\n this.kind = 0 /* ReplacePatternKind.StaticValue */;\n }\n}\n/**\n * Assigned when the replace pattern has replacement patterns.\n */\nclass DynamicPiecesReplacePattern {\n constructor(pieces) {\n this.pieces = pieces;\n this.kind = 1 /* ReplacePatternKind.DynamicPieces */;\n }\n}\nexport class ReplacePattern {\n constructor(pieces) {\n if (!pieces || pieces.length === 0) {\n this._state = new StaticValueReplacePattern('');\n }\n else if (pieces.length === 1 && pieces[0].staticValue !== null) {\n this._state = new StaticValueReplacePattern(pieces[0].staticValue);\n }\n else {\n this._state = new DynamicPiecesReplacePattern(pieces);\n }\n }\n static fromStaticValue(value) {\n return new ReplacePattern([ReplacePiece.staticValue(value)]);\n }\n get hasReplacementPatterns() {\n return (this._state.kind === 1 /* ReplacePatternKind.DynamicPieces */);\n }\n buildReplaceString(matches, preserveCase) {\n if (this._state.kind === 0 /* ReplacePatternKind.StaticValue */) {\n if (preserveCase) {\n return buildReplaceStringWithCasePreserved(matches, this._state.staticValue);\n }\n else {\n return this._state.staticValue;\n }\n }\n let result = '';\n for (let i = 0, len = this._state.pieces.length; i < len; i++) {\n const piece = this._state.pieces[i];\n if (piece.staticValue !== null) {\n // static value ReplacePiece\n result += piece.staticValue;\n continue;\n }\n // match index ReplacePiece\n let match = ReplacePattern._substitute(piece.matchIndex, matches);\n if (piece.caseOps !== null && piece.caseOps.length > 0) {\n const repl = [];\n const lenOps = piece.caseOps.length;\n let opIdx = 0;\n for (let idx = 0, len = match.length; idx < len; idx++) {\n if (opIdx >= lenOps) {\n repl.push(match.slice(idx));\n break;\n }\n switch (piece.caseOps[opIdx]) {\n case 'U':\n repl.push(match[idx].toUpperCase());\n break;\n case 'u':\n repl.push(match[idx].toUpperCase());\n opIdx++;\n break;\n case 'L':\n repl.push(match[idx].toLowerCase());\n break;\n case 'l':\n repl.push(match[idx].toLowerCase());\n opIdx++;\n break;\n default:\n repl.push(match[idx]);\n }\n }\n match = repl.join('');\n }\n result += match;\n }\n return result;\n }\n static _substitute(matchIndex, matches) {\n if (matches === null) {\n return '';\n }\n if (matchIndex === 0) {\n return matches[0];\n }\n let remainder = '';\n while (matchIndex > 0) {\n if (matchIndex < matches.length) {\n // A match can be undefined\n const match = (matches[matchIndex] || '');\n return match + remainder;\n }\n remainder = String(matchIndex % 10) + remainder;\n matchIndex = Math.floor(matchIndex / 10);\n }\n return '$' + remainder;\n }\n}\n/**\n * A replace piece can either be a static string or an index to a specific match.\n */\nexport class ReplacePiece {\n constructor(staticValue, matchIndex, caseOps) {\n this.staticValue = staticValue;\n this.matchIndex = matchIndex;\n if (!caseOps || caseOps.length === 0) {\n this.caseOps = null;\n }\n else {\n this.caseOps = caseOps.slice(0);\n }\n }\n static staticValue(value) {\n return new ReplacePiece(value, -1, null);\n }\n static caseOps(index, caseOps) {\n return new ReplacePiece(null, index, caseOps);\n }\n}\nclass ReplacePieceBuilder {\n constructor(source) {\n this._source = source;\n this._lastCharIndex = 0;\n this._result = [];\n this._resultLen = 0;\n this._currentStaticPiece = '';\n }\n emitUnchanged(toCharIndex) {\n this._emitStatic(this._source.substring(this._lastCharIndex, toCharIndex));\n this._lastCharIndex = toCharIndex;\n }\n emitStatic(value, toCharIndex) {\n this._emitStatic(value);\n this._lastCharIndex = toCharIndex;\n }\n _emitStatic(value) {\n if (value.length === 0) {\n return;\n }\n this._currentStaticPiece += value;\n }\n emitMatchIndex(index, toCharIndex, caseOps) {\n if (this._currentStaticPiece.length !== 0) {\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\n this._currentStaticPiece = '';\n }\n this._result[this._resultLen++] = ReplacePiece.caseOps(index, caseOps);\n this._lastCharIndex = toCharIndex;\n }\n finalize() {\n this.emitUnchanged(this._source.length);\n if (this._currentStaticPiece.length !== 0) {\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\n this._currentStaticPiece = '';\n }\n return new ReplacePattern(this._result);\n }\n}\n/**\n * \\n\t\t\t=> inserts a LF\n * \\t\t\t\t=> inserts a TAB\n * \\\\\t\t\t=> inserts a \"\\\".\n * \\u\t\t\t=> upper-cases one character in a match.\n * \\U\t\t\t=> upper-cases ALL remaining characters in a match.\n * \\l\t\t\t=> lower-cases one character in a match.\n * \\L\t\t\t=> lower-cases ALL remaining characters in a match.\n * $$\t\t\t=> inserts a \"$\".\n * $& and $0\t=> inserts the matched substring.\n * $n\t\t\t=> Where n is a non-negative integer lesser than 100, inserts the nth parenthesized submatch string\n * everything else stays untouched\n *\n * Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter\n */\nexport function parseReplaceString(replaceString) {\n if (!replaceString || replaceString.length === 0) {\n return new ReplacePattern(null);\n }\n const caseOps = [];\n const result = new ReplacePieceBuilder(replaceString);\n for (let i = 0, len = replaceString.length; i < len; i++) {\n const chCode = replaceString.charCodeAt(i);\n if (chCode === 92 /* CharCode.Backslash */) {\n // move to next char\n i++;\n if (i >= len) {\n // string ends with a \\\n break;\n }\n const nextChCode = replaceString.charCodeAt(i);\n // let replaceWithCharacter: string | null = null;\n switch (nextChCode) {\n case 92 /* CharCode.Backslash */:\n // \\\\ => inserts a \"\\\"\n result.emitUnchanged(i - 1);\n result.emitStatic('\\\\', i + 1);\n break;\n case 110 /* CharCode.n */:\n // \\n => inserts a LF\n result.emitUnchanged(i - 1);\n result.emitStatic('\\n', i + 1);\n break;\n case 116 /* CharCode.t */:\n // \\t => inserts a TAB\n result.emitUnchanged(i - 1);\n result.emitStatic('\\t', i + 1);\n break;\n // Case modification of string replacements, patterned after Boost, but only applied\n // to the replacement text, not subsequent content.\n case 117 /* CharCode.u */:\n // \\u => upper-cases one character.\n case 85 /* CharCode.U */:\n // \\U => upper-cases ALL following characters.\n case 108 /* CharCode.l */:\n // \\l => lower-cases one character.\n case 76 /* CharCode.L */:\n // \\L => lower-cases ALL following characters.\n result.emitUnchanged(i - 1);\n result.emitStatic('', i + 1);\n caseOps.push(String.fromCharCode(nextChCode));\n break;\n }\n continue;\n }\n if (chCode === 36 /* CharCode.DollarSign */) {\n // move to next char\n i++;\n if (i >= len) {\n // string ends with a $\n break;\n }\n const nextChCode = replaceString.charCodeAt(i);\n if (nextChCode === 36 /* CharCode.DollarSign */) {\n // $$ => inserts a \"$\"\n result.emitUnchanged(i - 1);\n result.emitStatic('$', i + 1);\n continue;\n }\n if (nextChCode === 48 /* CharCode.Digit0 */ || nextChCode === 38 /* CharCode.Ampersand */) {\n // $& and $0 => inserts the matched substring.\n result.emitUnchanged(i - 1);\n result.emitMatchIndex(0, i + 1, caseOps);\n caseOps.length = 0;\n continue;\n }\n if (49 /* CharCode.Digit1 */ <= nextChCode && nextChCode <= 57 /* CharCode.Digit9 */) {\n // $n\n let matchIndex = nextChCode - 48 /* CharCode.Digit0 */;\n // peek next char to probe for $nn\n if (i + 1 < len) {\n const nextNextChCode = replaceString.charCodeAt(i + 1);\n if (48 /* CharCode.Digit0 */ <= nextNextChCode && nextNextChCode <= 57 /* CharCode.Digit9 */) {\n // $nn\n // move to next char\n i++;\n matchIndex = matchIndex * 10 + (nextNextChCode - 48 /* CharCode.Digit0 */);\n result.emitUnchanged(i - 2);\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\n caseOps.length = 0;\n continue;\n }\n }\n result.emitUnchanged(i - 1);\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\n caseOps.length = 0;\n continue;\n }\n }\n }\n return result.finalize();\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { findFirstInSorted } from '../../../../base/common/arrays.js';\nimport { RunOnceScheduler, TimeoutTimer } from '../../../../base/common/async.js';\nimport { DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection } from '../../../common/commands/replaceCommand.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { SearchParams } from '../../../common/model/textModelSearch.js';\nimport { FindDecorations } from './findDecorations.js';\nimport { ReplaceAllCommand } from './replaceAllCommand.js';\nimport { parseReplaceString, ReplacePattern } from './replacePattern.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nexport const CONTEXT_FIND_WIDGET_VISIBLE = new RawContextKey('findWidgetVisible', false);\nexport const CONTEXT_FIND_WIDGET_NOT_VISIBLE = CONTEXT_FIND_WIDGET_VISIBLE.toNegated();\n// Keep ContextKey use of 'Focussed' to not break when clauses\nexport const CONTEXT_FIND_INPUT_FOCUSED = new RawContextKey('findInputFocussed', false);\nexport const CONTEXT_REPLACE_INPUT_FOCUSED = new RawContextKey('replaceInputFocussed', false);\nexport const ToggleCaseSensitiveKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 33 /* KeyCode.KeyC */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 33 /* KeyCode.KeyC */ }\n};\nexport const ToggleWholeWordKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 53 /* KeyCode.KeyW */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 53 /* KeyCode.KeyW */ }\n};\nexport const ToggleRegexKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 48 /* KeyCode.KeyR */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 48 /* KeyCode.KeyR */ }\n};\nexport const ToggleSearchScopeKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 42 /* KeyCode.KeyL */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 42 /* KeyCode.KeyL */ }\n};\nexport const TogglePreserveCaseKeybinding = {\n primary: 512 /* KeyMod.Alt */ | 46 /* KeyCode.KeyP */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 46 /* KeyCode.KeyP */ }\n};\nexport const FIND_IDS = {\n StartFindAction: 'actions.find',\n StartFindWithSelection: 'actions.findWithSelection',\n StartFindWithArgs: 'editor.actions.findWithArgs',\n NextMatchFindAction: 'editor.action.nextMatchFindAction',\n PreviousMatchFindAction: 'editor.action.previousMatchFindAction',\n NextSelectionMatchFindAction: 'editor.action.nextSelectionMatchFindAction',\n PreviousSelectionMatchFindAction: 'editor.action.previousSelectionMatchFindAction',\n StartFindReplaceAction: 'editor.action.startFindReplaceAction',\n CloseFindWidgetCommand: 'closeFindWidget',\n ToggleCaseSensitiveCommand: 'toggleFindCaseSensitive',\n ToggleWholeWordCommand: 'toggleFindWholeWord',\n ToggleRegexCommand: 'toggleFindRegex',\n ToggleSearchScopeCommand: 'toggleFindInSelection',\n TogglePreserveCaseCommand: 'togglePreserveCase',\n ReplaceOneAction: 'editor.action.replaceOne',\n ReplaceAllAction: 'editor.action.replaceAll',\n SelectAllMatchesAction: 'editor.action.selectAllMatches'\n};\nexport const MATCHES_LIMIT = 19999;\nconst RESEARCH_DELAY = 240;\nexport class FindModelBoundToEditorModel {\n constructor(editor, state) {\n this._toDispose = new DisposableStore();\n this._editor = editor;\n this._state = state;\n this._isDisposed = false;\n this._startSearchingTimer = new TimeoutTimer();\n this._decorations = new FindDecorations(editor);\n this._toDispose.add(this._decorations);\n this._updateDecorationsScheduler = new RunOnceScheduler(() => this.research(false), 100);\n this._toDispose.add(this._updateDecorationsScheduler);\n this._toDispose.add(this._editor.onDidChangeCursorPosition((e) => {\n if (e.reason === 3 /* CursorChangeReason.Explicit */\n || e.reason === 5 /* CursorChangeReason.Undo */\n || e.reason === 6 /* CursorChangeReason.Redo */) {\n this._decorations.setStartPosition(this._editor.getPosition());\n }\n }));\n this._ignoreModelContentChanged = false;\n this._toDispose.add(this._editor.onDidChangeModelContent((e) => {\n if (this._ignoreModelContentChanged) {\n return;\n }\n if (e.isFlush) {\n // a model.setValue() was called\n this._decorations.reset();\n }\n this._decorations.setStartPosition(this._editor.getPosition());\n this._updateDecorationsScheduler.schedule();\n }));\n this._toDispose.add(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n this.research(false, this._state.searchScope);\n }\n dispose() {\n this._isDisposed = true;\n dispose(this._startSearchingTimer);\n this._toDispose.dispose();\n }\n _onStateChanged(e) {\n if (this._isDisposed) {\n // The find model is disposed during a find state changed event\n return;\n }\n if (!this._editor.hasModel()) {\n // The find model will be disposed momentarily\n return;\n }\n if (e.searchString || e.isReplaceRevealed || e.isRegex || e.wholeWord || e.matchCase || e.searchScope) {\n const model = this._editor.getModel();\n if (model.isTooLargeForSyncing()) {\n this._startSearchingTimer.cancel();\n this._startSearchingTimer.setIfNotSet(() => {\n if (e.searchScope) {\n this.research(e.moveCursor, this._state.searchScope);\n }\n else {\n this.research(e.moveCursor);\n }\n }, RESEARCH_DELAY);\n }\n else {\n if (e.searchScope) {\n this.research(e.moveCursor, this._state.searchScope);\n }\n else {\n this.research(e.moveCursor);\n }\n }\n }\n }\n static _getSearchRange(model, findScope) {\n // If we have set now or before a find scope, use it for computing the search range\n if (findScope) {\n return findScope;\n }\n return model.getFullModelRange();\n }\n research(moveCursor, newFindScope) {\n let findScopes = null;\n if (typeof newFindScope !== 'undefined') {\n if (newFindScope !== null) {\n if (!Array.isArray(newFindScope)) {\n findScopes = [newFindScope];\n }\n else {\n findScopes = newFindScope;\n }\n }\n }\n else {\n findScopes = this._decorations.getFindScopes();\n }\n if (findScopes !== null) {\n findScopes = findScopes.map(findScope => {\n if (findScope.startLineNumber !== findScope.endLineNumber) {\n let endLineNumber = findScope.endLineNumber;\n if (findScope.endColumn === 1) {\n endLineNumber = endLineNumber - 1;\n }\n return new Range(findScope.startLineNumber, 1, endLineNumber, this._editor.getModel().getLineMaxColumn(endLineNumber));\n }\n return findScope;\n });\n }\n const findMatches = this._findMatches(findScopes, false, MATCHES_LIMIT);\n this._decorations.set(findMatches, findScopes);\n const editorSelection = this._editor.getSelection();\n let currentMatchesPosition = this._decorations.getCurrentMatchesPosition(editorSelection);\n if (currentMatchesPosition === 0 && findMatches.length > 0) {\n // current selection is not on top of a match\n // try to find its nearest result from the top of the document\n const matchAfterSelection = findFirstInSorted(findMatches.map(match => match.range), range => Range.compareRangesUsingStarts(range, editorSelection) >= 0);\n currentMatchesPosition = matchAfterSelection > 0 ? matchAfterSelection - 1 + 1 /** match position is one based */ : currentMatchesPosition;\n }\n this._state.changeMatchInfo(currentMatchesPosition, this._decorations.getCount(), undefined);\n if (moveCursor && this._editor.getOption(37 /* EditorOption.find */).cursorMoveOnType) {\n this._moveToNextMatch(this._decorations.getStartPosition());\n }\n }\n _hasMatches() {\n return (this._state.matchesCount > 0);\n }\n _cannotFind() {\n if (!this._hasMatches()) {\n const findScope = this._decorations.getFindScope();\n if (findScope) {\n // Reveal the selection so user is reminded that 'selection find' is on.\n this._editor.revealRangeInCenterIfOutsideViewport(findScope, 0 /* ScrollType.Smooth */);\n }\n return true;\n }\n return false;\n }\n _setCurrentFindMatch(match) {\n const matchesPosition = this._decorations.setCurrentFindMatch(match);\n this._state.changeMatchInfo(matchesPosition, this._decorations.getCount(), match);\n this._editor.setSelection(match);\n this._editor.revealRangeInCenterIfOutsideViewport(match, 0 /* ScrollType.Smooth */);\n }\n _prevSearchPosition(before) {\n const isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\n || this._state.searchString.indexOf('$') >= 0);\n let { lineNumber, column } = before;\n const model = this._editor.getModel();\n if (isUsingLineStops || column === 1) {\n if (lineNumber === 1) {\n lineNumber = model.getLineCount();\n }\n else {\n lineNumber--;\n }\n column = model.getLineMaxColumn(lineNumber);\n }\n else {\n column--;\n }\n return new Position(lineNumber, column);\n }\n _moveToPrevMatch(before, isRecursed = false) {\n if (!this._state.canNavigateBack()) {\n // we are beyond the first matched find result\n // instead of doing nothing, we should refocus the first item\n const nextMatchRange = this._decorations.matchAfterPosition(before);\n if (nextMatchRange) {\n this._setCurrentFindMatch(nextMatchRange);\n }\n return;\n }\n if (this._decorations.getCount() < MATCHES_LIMIT) {\n let prevMatchRange = this._decorations.matchBeforePosition(before);\n if (prevMatchRange && prevMatchRange.isEmpty() && prevMatchRange.getStartPosition().equals(before)) {\n before = this._prevSearchPosition(before);\n prevMatchRange = this._decorations.matchBeforePosition(before);\n }\n if (prevMatchRange) {\n this._setCurrentFindMatch(prevMatchRange);\n }\n return;\n }\n if (this._cannotFind()) {\n return;\n }\n const findScope = this._decorations.getFindScope();\n const searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\n // ...(----)...|...\n if (searchRange.getEndPosition().isBefore(before)) {\n before = searchRange.getEndPosition();\n }\n // ...|...(----)...\n if (before.isBefore(searchRange.getStartPosition())) {\n before = searchRange.getEndPosition();\n }\n const { lineNumber, column } = before;\n const model = this._editor.getModel();\n let position = new Position(lineNumber, column);\n let prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false);\n if (prevMatch && prevMatch.range.isEmpty() && prevMatch.range.getStartPosition().equals(position)) {\n // Looks like we're stuck at this position, unacceptable!\n position = this._prevSearchPosition(position);\n prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false);\n }\n if (!prevMatch) {\n // there is precisely one match and selection is on top of it\n return;\n }\n if (!isRecursed && !searchRange.containsRange(prevMatch.range)) {\n return this._moveToPrevMatch(prevMatch.range.getStartPosition(), true);\n }\n this._setCurrentFindMatch(prevMatch.range);\n }\n moveToPrevMatch() {\n this._moveToPrevMatch(this._editor.getSelection().getStartPosition());\n }\n _nextSearchPosition(after) {\n const isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\n || this._state.searchString.indexOf('$') >= 0);\n let { lineNumber, column } = after;\n const model = this._editor.getModel();\n if (isUsingLineStops || column === model.getLineMaxColumn(lineNumber)) {\n if (lineNumber === model.getLineCount()) {\n lineNumber = 1;\n }\n else {\n lineNumber++;\n }\n column = 1;\n }\n else {\n column++;\n }\n return new Position(lineNumber, column);\n }\n _moveToNextMatch(after) {\n if (!this._state.canNavigateForward()) {\n // we are beyond the last matched find result\n // instead of doing nothing, we should refocus the last item\n const prevMatchRange = this._decorations.matchBeforePosition(after);\n if (prevMatchRange) {\n this._setCurrentFindMatch(prevMatchRange);\n }\n return;\n }\n if (this._decorations.getCount() < MATCHES_LIMIT) {\n let nextMatchRange = this._decorations.matchAfterPosition(after);\n if (nextMatchRange && nextMatchRange.isEmpty() && nextMatchRange.getStartPosition().equals(after)) {\n // Looks like we're stuck at this position, unacceptable!\n after = this._nextSearchPosition(after);\n nextMatchRange = this._decorations.matchAfterPosition(after);\n }\n if (nextMatchRange) {\n this._setCurrentFindMatch(nextMatchRange);\n }\n return;\n }\n const nextMatch = this._getNextMatch(after, false, true);\n if (nextMatch) {\n this._setCurrentFindMatch(nextMatch.range);\n }\n }\n _getNextMatch(after, captureMatches, forceMove, isRecursed = false) {\n if (this._cannotFind()) {\n return null;\n }\n const findScope = this._decorations.getFindScope();\n const searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\n // ...(----)...|...\n if (searchRange.getEndPosition().isBefore(after)) {\n after = searchRange.getStartPosition();\n }\n // ...|...(----)...\n if (after.isBefore(searchRange.getStartPosition())) {\n after = searchRange.getStartPosition();\n }\n const { lineNumber, column } = after;\n const model = this._editor.getModel();\n let position = new Position(lineNumber, column);\n let nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, captureMatches);\n if (forceMove && nextMatch && nextMatch.range.isEmpty() && nextMatch.range.getStartPosition().equals(position)) {\n // Looks like we're stuck at this position, unacceptable!\n position = this._nextSearchPosition(position);\n nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, captureMatches);\n }\n if (!nextMatch) {\n // there is precisely one match and selection is on top of it\n return null;\n }\n if (!isRecursed && !searchRange.containsRange(nextMatch.range)) {\n return this._getNextMatch(nextMatch.range.getEndPosition(), captureMatches, forceMove, true);\n }\n return nextMatch;\n }\n moveToNextMatch() {\n this._moveToNextMatch(this._editor.getSelection().getEndPosition());\n }\n _getReplacePattern() {\n if (this._state.isRegex) {\n return parseReplaceString(this._state.replaceString);\n }\n return ReplacePattern.fromStaticValue(this._state.replaceString);\n }\n replace() {\n if (!this._hasMatches()) {\n return;\n }\n const replacePattern = this._getReplacePattern();\n const selection = this._editor.getSelection();\n const nextMatch = this._getNextMatch(selection.getStartPosition(), true, false);\n if (nextMatch) {\n if (selection.equalsRange(nextMatch.range)) {\n // selection sits on a find match => replace it!\n const replaceString = replacePattern.buildReplaceString(nextMatch.matches, this._state.preserveCase);\n const command = new ReplaceCommand(selection, replaceString);\n this._executeEditorCommand('replace', command);\n this._decorations.setStartPosition(new Position(selection.startLineNumber, selection.startColumn + replaceString.length));\n this.research(true);\n }\n else {\n this._decorations.setStartPosition(this._editor.getPosition());\n this._setCurrentFindMatch(nextMatch.range);\n }\n }\n }\n _findMatches(findScopes, captureMatches, limitResultCount) {\n const searchRanges = (findScopes || [null]).map((scope) => FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), scope));\n return this._editor.getModel().findMatches(this._state.searchString, searchRanges, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, captureMatches, limitResultCount);\n }\n replaceAll() {\n if (!this._hasMatches()) {\n return;\n }\n const findScopes = this._decorations.getFindScopes();\n if (findScopes === null && this._state.matchesCount >= MATCHES_LIMIT) {\n // Doing a replace on the entire file that is over ${MATCHES_LIMIT} matches\n this._largeReplaceAll();\n }\n else {\n this._regularReplaceAll(findScopes);\n }\n this.research(false);\n }\n _largeReplaceAll() {\n const searchParams = new SearchParams(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null);\n const searchData = searchParams.parseSearchRequest();\n if (!searchData) {\n return;\n }\n let searchRegex = searchData.regex;\n if (!searchRegex.multiline) {\n let mod = 'mu';\n if (searchRegex.ignoreCase) {\n mod += 'i';\n }\n if (searchRegex.global) {\n mod += 'g';\n }\n searchRegex = new RegExp(searchRegex.source, mod);\n }\n const model = this._editor.getModel();\n const modelText = model.getValue(1 /* EndOfLinePreference.LF */);\n const fullModelRange = model.getFullModelRange();\n const replacePattern = this._getReplacePattern();\n let resultText;\n const preserveCase = this._state.preserveCase;\n if (replacePattern.hasReplacementPatterns || preserveCase) {\n resultText = modelText.replace(searchRegex, function () {\n return replacePattern.buildReplaceString(arguments, preserveCase);\n });\n }\n else {\n resultText = modelText.replace(searchRegex, replacePattern.buildReplaceString(null, preserveCase));\n }\n const command = new ReplaceCommandThatPreservesSelection(fullModelRange, resultText, this._editor.getSelection());\n this._executeEditorCommand('replaceAll', command);\n }\n _regularReplaceAll(findScopes) {\n const replacePattern = this._getReplacePattern();\n // Get all the ranges (even more than the highlighted ones)\n const matches = this._findMatches(findScopes, replacePattern.hasReplacementPatterns || this._state.preserveCase, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n const replaceStrings = [];\n for (let i = 0, len = matches.length; i < len; i++) {\n replaceStrings[i] = replacePattern.buildReplaceString(matches[i].matches, this._state.preserveCase);\n }\n const command = new ReplaceAllCommand(this._editor.getSelection(), matches.map(m => m.range), replaceStrings);\n this._executeEditorCommand('replaceAll', command);\n }\n selectAllMatches() {\n if (!this._hasMatches()) {\n return;\n }\n const findScopes = this._decorations.getFindScopes();\n // Get all the ranges (even more than the highlighted ones)\n const matches = this._findMatches(findScopes, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n let selections = matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn));\n // If one of the ranges is the editor selection, then maintain it as primary\n const editorSelection = this._editor.getSelection();\n for (let i = 0, len = selections.length; i < len; i++) {\n const sel = selections[i];\n if (sel.equalsRange(editorSelection)) {\n selections = [editorSelection].concat(selections.slice(0, i)).concat(selections.slice(i + 1));\n break;\n }\n }\n this._editor.setSelections(selections);\n }\n _executeEditorCommand(source, command) {\n try {\n this._ignoreModelContentChanged = true;\n this._editor.pushUndoStop();\n this._editor.executeCommand(source, command);\n this._editor.pushUndoStop();\n }\n finally {\n this._ignoreModelContentChanged = false;\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport { CaseSensitiveToggle, RegexToggle, WholeWordsToggle } from '../../../../base/browser/ui/findinput/findInputToggles.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { FIND_IDS } from './findModel.js';\nimport { contrastBorder, editorWidgetBackground, editorWidgetForeground, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground, widgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nexport class FindOptionsWidget extends Widget {\n constructor(editor, state, keybindingService, themeService) {\n super();\n this._hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\n this._isVisible = false;\n this._editor = editor;\n this._state = state;\n this._keybindingService = keybindingService;\n this._domNode = document.createElement('div');\n this._domNode.className = 'findOptionsWidget';\n this._domNode.style.display = 'none';\n this._domNode.style.top = '10px';\n this._domNode.setAttribute('role', 'presentation');\n this._domNode.setAttribute('aria-hidden', 'true');\n const inputActiveOptionBorderColor = themeService.getColorTheme().getColor(inputActiveOptionBorder);\n const inputActiveOptionForegroundColor = themeService.getColorTheme().getColor(inputActiveOptionForeground);\n const inputActiveOptionBackgroundColor = themeService.getColorTheme().getColor(inputActiveOptionBackground);\n this.caseSensitive = this._register(new CaseSensitiveToggle({\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n isChecked: this._state.matchCase,\n inputActiveOptionBorder: inputActiveOptionBorderColor,\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\n }));\n this._domNode.appendChild(this.caseSensitive.domNode);\n this._register(this.caseSensitive.onChange(() => {\n this._state.change({\n matchCase: this.caseSensitive.checked\n }, false);\n }));\n this.wholeWords = this._register(new WholeWordsToggle({\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n isChecked: this._state.wholeWord,\n inputActiveOptionBorder: inputActiveOptionBorderColor,\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\n }));\n this._domNode.appendChild(this.wholeWords.domNode);\n this._register(this.wholeWords.onChange(() => {\n this._state.change({\n wholeWord: this.wholeWords.checked\n }, false);\n }));\n this.regex = this._register(new RegexToggle({\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n isChecked: this._state.isRegex,\n inputActiveOptionBorder: inputActiveOptionBorderColor,\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\n }));\n this._domNode.appendChild(this.regex.domNode);\n this._register(this.regex.onChange(() => {\n this._state.change({\n isRegex: this.regex.checked\n }, false);\n }));\n this._editor.addOverlayWidget(this);\n this._register(this._state.onFindReplaceStateChange((e) => {\n let somethingChanged = false;\n if (e.isRegex) {\n this.regex.checked = this._state.isRegex;\n somethingChanged = true;\n }\n if (e.wholeWord) {\n this.wholeWords.checked = this._state.wholeWord;\n somethingChanged = true;\n }\n if (e.matchCase) {\n this.caseSensitive.checked = this._state.matchCase;\n somethingChanged = true;\n }\n if (!this._state.isRevealed && somethingChanged) {\n this._revealTemporarily();\n }\n }));\n this._register(dom.addDisposableListener(this._domNode, dom.EventType.MOUSE_LEAVE, (e) => this._onMouseLeave()));\n this._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\n this._applyTheme(themeService.getColorTheme());\n this._register(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\n }\n _keybindingLabelFor(actionId) {\n const kb = this._keybindingService.lookupKeybinding(actionId);\n if (!kb) {\n return '';\n }\n return ` (${kb.getLabel()})`;\n }\n dispose() {\n this._editor.removeOverlayWidget(this);\n super.dispose();\n }\n // ----- IOverlayWidget API\n getId() {\n return FindOptionsWidget.ID;\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return {\n preference: 0 /* OverlayWidgetPositionPreference.TOP_RIGHT_CORNER */\n };\n }\n highlightFindOptions() {\n this._revealTemporarily();\n }\n _revealTemporarily() {\n this._show();\n this._hideSoon.schedule();\n }\n _onMouseLeave() {\n this._hideSoon.schedule();\n }\n _onMouseOver() {\n this._hideSoon.cancel();\n }\n _show() {\n if (this._isVisible) {\n return;\n }\n this._isVisible = true;\n this._domNode.style.display = 'block';\n }\n _hide() {\n if (!this._isVisible) {\n return;\n }\n this._isVisible = false;\n this._domNode.style.display = 'none';\n }\n _applyTheme(theme) {\n const inputStyles = {\n inputActiveOptionBorder: theme.getColor(inputActiveOptionBorder),\n inputActiveOptionForeground: theme.getColor(inputActiveOptionForeground),\n inputActiveOptionBackground: theme.getColor(inputActiveOptionBackground)\n };\n this.caseSensitive.style(inputStyles);\n this.wholeWords.style(inputStyles);\n this.regex.style(inputStyles);\n }\n}\nFindOptionsWidget.ID = 'editor.contrib.findOptionsWidget';\nregisterThemingParticipant((theme, collector) => {\n const widgetBackground = theme.getColor(editorWidgetBackground);\n if (widgetBackground) {\n collector.addRule(`.monaco-editor .findOptionsWidget { background-color: ${widgetBackground}; }`);\n }\n const widgetForeground = theme.getColor(editorWidgetForeground);\n if (widgetForeground) {\n collector.addRule(`.monaco-editor .findOptionsWidget { color: ${widgetForeground}; }`);\n }\n const widgetShadowColor = theme.getColor(widgetShadow);\n if (widgetShadowColor) {\n collector.addRule(`.monaco-editor .findOptionsWidget { box-shadow: 0 0 8px 2px ${widgetShadowColor}; }`);\n }\n const hcBorder = theme.getColor(contrastBorder);\n if (hcBorder) {\n collector.addRule(`.monaco-editor .findOptionsWidget { border: 2px solid ${hcBorder}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Range } from '../../../common/core/range.js';\nimport { MATCHES_LIMIT } from './findModel.js';\nfunction effectiveOptionValue(override, value) {\n if (override === 1 /* FindOptionOverride.True */) {\n return true;\n }\n if (override === 2 /* FindOptionOverride.False */) {\n return false;\n }\n return value;\n}\nexport class FindReplaceState extends Disposable {\n constructor() {\n super();\n this._onFindReplaceStateChange = this._register(new Emitter());\n this.onFindReplaceStateChange = this._onFindReplaceStateChange.event;\n this._searchString = '';\n this._replaceString = '';\n this._isRevealed = false;\n this._isReplaceRevealed = false;\n this._isRegex = false;\n this._isRegexOverride = 0 /* FindOptionOverride.NotSet */;\n this._wholeWord = false;\n this._wholeWordOverride = 0 /* FindOptionOverride.NotSet */;\n this._matchCase = false;\n this._matchCaseOverride = 0 /* FindOptionOverride.NotSet */;\n this._preserveCase = false;\n this._preserveCaseOverride = 0 /* FindOptionOverride.NotSet */;\n this._searchScope = null;\n this._matchesPosition = 0;\n this._matchesCount = 0;\n this._currentMatch = null;\n this._loop = true;\n this._isSearching = false;\n this._filters = null;\n }\n get searchString() { return this._searchString; }\n get replaceString() { return this._replaceString; }\n get isRevealed() { return this._isRevealed; }\n get isReplaceRevealed() { return this._isReplaceRevealed; }\n get isRegex() { return effectiveOptionValue(this._isRegexOverride, this._isRegex); }\n get wholeWord() { return effectiveOptionValue(this._wholeWordOverride, this._wholeWord); }\n get matchCase() { return effectiveOptionValue(this._matchCaseOverride, this._matchCase); }\n get preserveCase() { return effectiveOptionValue(this._preserveCaseOverride, this._preserveCase); }\n get actualIsRegex() { return this._isRegex; }\n get actualWholeWord() { return this._wholeWord; }\n get actualMatchCase() { return this._matchCase; }\n get actualPreserveCase() { return this._preserveCase; }\n get searchScope() { return this._searchScope; }\n get matchesPosition() { return this._matchesPosition; }\n get matchesCount() { return this._matchesCount; }\n get currentMatch() { return this._currentMatch; }\n changeMatchInfo(matchesPosition, matchesCount, currentMatch) {\n const changeEvent = {\n moveCursor: false,\n updateHistory: false,\n searchString: false,\n replaceString: false,\n isRevealed: false,\n isReplaceRevealed: false,\n isRegex: false,\n wholeWord: false,\n matchCase: false,\n preserveCase: false,\n searchScope: false,\n matchesPosition: false,\n matchesCount: false,\n currentMatch: false,\n loop: false,\n isSearching: false,\n filters: false\n };\n let somethingChanged = false;\n if (matchesCount === 0) {\n matchesPosition = 0;\n }\n if (matchesPosition > matchesCount) {\n matchesPosition = matchesCount;\n }\n if (this._matchesPosition !== matchesPosition) {\n this._matchesPosition = matchesPosition;\n changeEvent.matchesPosition = true;\n somethingChanged = true;\n }\n if (this._matchesCount !== matchesCount) {\n this._matchesCount = matchesCount;\n changeEvent.matchesCount = true;\n somethingChanged = true;\n }\n if (typeof currentMatch !== 'undefined') {\n if (!Range.equalsRange(this._currentMatch, currentMatch)) {\n this._currentMatch = currentMatch;\n changeEvent.currentMatch = true;\n somethingChanged = true;\n }\n }\n if (somethingChanged) {\n this._onFindReplaceStateChange.fire(changeEvent);\n }\n }\n change(newState, moveCursor, updateHistory = true) {\n var _a;\n const changeEvent = {\n moveCursor: moveCursor,\n updateHistory: updateHistory,\n searchString: false,\n replaceString: false,\n isRevealed: false,\n isReplaceRevealed: false,\n isRegex: false,\n wholeWord: false,\n matchCase: false,\n preserveCase: false,\n searchScope: false,\n matchesPosition: false,\n matchesCount: false,\n currentMatch: false,\n loop: false,\n isSearching: false,\n filters: false\n };\n let somethingChanged = false;\n const oldEffectiveIsRegex = this.isRegex;\n const oldEffectiveWholeWords = this.wholeWord;\n const oldEffectiveMatchCase = this.matchCase;\n const oldEffectivePreserveCase = this.preserveCase;\n if (typeof newState.searchString !== 'undefined') {\n if (this._searchString !== newState.searchString) {\n this._searchString = newState.searchString;\n changeEvent.searchString = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.replaceString !== 'undefined') {\n if (this._replaceString !== newState.replaceString) {\n this._replaceString = newState.replaceString;\n changeEvent.replaceString = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isRevealed !== 'undefined') {\n if (this._isRevealed !== newState.isRevealed) {\n this._isRevealed = newState.isRevealed;\n changeEvent.isRevealed = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isReplaceRevealed !== 'undefined') {\n if (this._isReplaceRevealed !== newState.isReplaceRevealed) {\n this._isReplaceRevealed = newState.isReplaceRevealed;\n changeEvent.isReplaceRevealed = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isRegex !== 'undefined') {\n this._isRegex = newState.isRegex;\n }\n if (typeof newState.wholeWord !== 'undefined') {\n this._wholeWord = newState.wholeWord;\n }\n if (typeof newState.matchCase !== 'undefined') {\n this._matchCase = newState.matchCase;\n }\n if (typeof newState.preserveCase !== 'undefined') {\n this._preserveCase = newState.preserveCase;\n }\n if (typeof newState.searchScope !== 'undefined') {\n if (!((_a = newState.searchScope) === null || _a === void 0 ? void 0 : _a.every((newSearchScope) => {\n var _a;\n return (_a = this._searchScope) === null || _a === void 0 ? void 0 : _a.some(existingSearchScope => {\n return !Range.equalsRange(existingSearchScope, newSearchScope);\n });\n }))) {\n this._searchScope = newState.searchScope;\n changeEvent.searchScope = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.loop !== 'undefined') {\n if (this._loop !== newState.loop) {\n this._loop = newState.loop;\n changeEvent.loop = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.isSearching !== 'undefined') {\n if (this._isSearching !== newState.isSearching) {\n this._isSearching = newState.isSearching;\n changeEvent.isSearching = true;\n somethingChanged = true;\n }\n }\n if (typeof newState.filters !== 'undefined') {\n if (this._filters) {\n this._filters.update(newState.filters);\n }\n else {\n this._filters = newState.filters;\n }\n changeEvent.filters = true;\n somethingChanged = true;\n }\n // Overrides get set when they explicitly come in and get reset anytime something else changes\n this._isRegexOverride = (typeof newState.isRegexOverride !== 'undefined' ? newState.isRegexOverride : 0 /* FindOptionOverride.NotSet */);\n this._wholeWordOverride = (typeof newState.wholeWordOverride !== 'undefined' ? newState.wholeWordOverride : 0 /* FindOptionOverride.NotSet */);\n this._matchCaseOverride = (typeof newState.matchCaseOverride !== 'undefined' ? newState.matchCaseOverride : 0 /* FindOptionOverride.NotSet */);\n this._preserveCaseOverride = (typeof newState.preserveCaseOverride !== 'undefined' ? newState.preserveCaseOverride : 0 /* FindOptionOverride.NotSet */);\n if (oldEffectiveIsRegex !== this.isRegex) {\n somethingChanged = true;\n changeEvent.isRegex = true;\n }\n if (oldEffectiveWholeWords !== this.wholeWord) {\n somethingChanged = true;\n changeEvent.wholeWord = true;\n }\n if (oldEffectiveMatchCase !== this.matchCase) {\n somethingChanged = true;\n changeEvent.matchCase = true;\n }\n if (oldEffectivePreserveCase !== this.preserveCase) {\n somethingChanged = true;\n changeEvent.preserveCase = true;\n }\n if (somethingChanged) {\n this._onFindReplaceStateChange.fire(changeEvent);\n }\n }\n canNavigateBack() {\n return this.canNavigateInLoop() || (this.matchesPosition !== 1);\n }\n canNavigateForward() {\n return this.canNavigateInLoop() || (this.matchesPosition < this.matchesCount);\n }\n canNavigateInLoop() {\n return this._loop || (this.matchesCount >= MATCHES_LIMIT);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport function showHistoryKeybindingHint(keybindingService) {\n var _a, _b;\n return ((_a = keybindingService.lookupKeybinding('history.showPrevious')) === null || _a === void 0 ? void 0 : _a.getElectronAccelerator()) === 'Up' && ((_b = keybindingService.lookupKeybinding('history.showNext')) === null || _b === void 0 ? void 0 : _b.getElectronAccelerator()) === 'Down';\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { alert as alertFn } from '../../../../base/browser/ui/aria/aria.js';\nimport { Toggle } from '../../../../base/browser/ui/toggle/toggle.js';\nimport { Sash } from '../../../../base/browser/ui/sash/sash.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { Delayer } from '../../../../base/common/async.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { toDisposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './findWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_REPLACE_INPUT_FOCUSED, FIND_IDS, MATCHES_LIMIT } from './findModel.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextScopedFindInput, ContextScopedReplaceInput } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';\nimport { showHistoryKeybindingHint } from '../../../../platform/history/browser/historyWidgetKeybindingHint.js';\nimport { contrastBorder, editorFindMatch, editorFindMatchBorder, editorFindMatchHighlight, editorFindMatchHighlightBorder, editorFindRangeHighlight, editorFindRangeHighlightBorder, editorWidgetBackground, editorWidgetBorder, editorWidgetForeground, editorWidgetResizeBorder, errorForeground, focusBorder, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, toolbarHoverBackground, widgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon, widgetClose } from '../../../../platform/theme/common/iconRegistry.js';\nimport { registerThemingParticipant, ThemeIcon } from '../../../../platform/theme/common/themeService.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nconst findSelectionIcon = registerIcon('find-selection', Codicon.selection, nls.localize('findSelectionIcon', 'Icon for \\'Find in Selection\\' in the editor find widget.'));\nconst findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight, nls.localize('findCollapsedIcon', 'Icon to indicate that the editor find widget is collapsed.'));\nconst findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown, nls.localize('findExpandedIcon', 'Icon to indicate that the editor find widget is expanded.'));\nexport const findReplaceIcon = registerIcon('find-replace', Codicon.replace, nls.localize('findReplaceIcon', 'Icon for \\'Replace\\' in the editor find widget.'));\nexport const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll, nls.localize('findReplaceAllIcon', 'Icon for \\'Replace All\\' in the editor find widget.'));\nexport const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp, nls.localize('findPreviousMatchIcon', 'Icon for \\'Find Previous\\' in the editor find widget.'));\nexport const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown, nls.localize('findNextMatchIcon', 'Icon for \\'Find Next\\' in the editor find widget.'));\nconst NLS_FIND_INPUT_LABEL = nls.localize('label.find', \"Find\");\nconst NLS_FIND_INPUT_PLACEHOLDER = nls.localize('placeholder.find', \"Find\");\nconst NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize('label.previousMatchButton', \"Previous Match\");\nconst NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', \"Next Match\");\nconst NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize('label.toggleSelectionFind', \"Find in Selection\");\nconst NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', \"Close\");\nconst NLS_REPLACE_INPUT_LABEL = nls.localize('label.replace', \"Replace\");\nconst NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize('placeholder.replace', \"Replace\");\nconst NLS_REPLACE_BTN_LABEL = nls.localize('label.replaceButton', \"Replace\");\nconst NLS_REPLACE_ALL_BTN_LABEL = nls.localize('label.replaceAllButton', \"Replace All\");\nconst NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize('label.toggleReplaceButton', \"Toggle Replace\");\nconst NLS_MATCHES_COUNT_LIMIT_TITLE = nls.localize('title.matchesCountLimit', \"Only the first {0} results are highlighted, but all find operations work on the entire text.\", MATCHES_LIMIT);\nexport const NLS_MATCHES_LOCATION = nls.localize('label.matchesLocation', \"{0} of {1}\");\nexport const NLS_NO_RESULTS = nls.localize('label.noResults', \"No results\");\nconst FIND_WIDGET_INITIAL_WIDTH = 419;\nconst PART_WIDTH = 275;\nconst FIND_INPUT_AREA_WIDTH = PART_WIDTH - 54;\nlet MAX_MATCHES_COUNT_WIDTH = 69;\n// let FIND_ALL_CONTROLS_WIDTH = 17/** Find Input margin-left */ + (MAX_MATCHES_COUNT_WIDTH + 3 + 1) /** Match Results */ + 23 /** Button */ * 4 + 2/** sash */;\nconst FIND_INPUT_AREA_HEIGHT = 33; // The height of Find Widget when Replace Input is not visible.\nconst ctrlEnterReplaceAllWarningPromptedKey = 'ctrlEnterReplaceAll.windows.donotask';\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* KeyMod.WinCtrl */ : 2048 /* KeyMod.CtrlCmd */);\nexport class FindWidgetViewZone {\n constructor(afterLineNumber) {\n this.afterLineNumber = afterLineNumber;\n this.heightInPx = FIND_INPUT_AREA_HEIGHT;\n this.suppressMouseDown = false;\n this.domNode = document.createElement('div');\n this.domNode.className = 'dock-find-viewzone';\n }\n}\nfunction stopPropagationForMultiLineUpwards(event, value, textarea) {\n const isMultiline = !!value.match(/\\n/);\n if (textarea && isMultiline && textarea.selectionStart > 0) {\n event.stopPropagation();\n return;\n }\n}\nfunction stopPropagationForMultiLineDownwards(event, value, textarea) {\n const isMultiline = !!value.match(/\\n/);\n if (textarea && isMultiline && textarea.selectionEnd < textarea.value.length) {\n event.stopPropagation();\n return;\n }\n}\nexport class FindWidget extends Widget {\n constructor(codeEditor, controller, state, contextViewProvider, keybindingService, contextKeyService, themeService, storageService, notificationService) {\n super();\n this._cachedHeight = null;\n this._revealTimeouts = [];\n this._codeEditor = codeEditor;\n this._controller = controller;\n this._state = state;\n this._contextViewProvider = contextViewProvider;\n this._keybindingService = keybindingService;\n this._contextKeyService = contextKeyService;\n this._storageService = storageService;\n this._notificationService = notificationService;\n this._ctrlEnterReplaceAllWarningPrompted = !!storageService.getBoolean(ctrlEnterReplaceAllWarningPromptedKey, 0 /* StorageScope.PROFILE */);\n this._isVisible = false;\n this._isReplaceVisible = false;\n this._ignoreChangeEvent = false;\n this._updateHistoryDelayer = new Delayer(500);\n this._register(toDisposable(() => this._updateHistoryDelayer.cancel()));\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n this._buildDomNode();\n this._updateButtons();\n this._tryUpdateWidgetWidth();\n this._findInput.inputBox.layout();\n this._register(this._codeEditor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(83 /* EditorOption.readOnly */)) {\n if (this._codeEditor.getOption(83 /* EditorOption.readOnly */)) {\n // Hide replace part if editor becomes read only\n this._state.change({ isReplaceRevealed: false }, false);\n }\n this._updateButtons();\n }\n if (e.hasChanged(133 /* EditorOption.layoutInfo */)) {\n this._tryUpdateWidgetWidth();\n }\n if (e.hasChanged(2 /* EditorOption.accessibilitySupport */)) {\n this.updateAccessibilitySupport();\n }\n if (e.hasChanged(37 /* EditorOption.find */)) {\n const addExtraSpaceOnTop = this._codeEditor.getOption(37 /* EditorOption.find */).addExtraSpaceOnTop;\n if (addExtraSpaceOnTop && !this._viewZone) {\n this._viewZone = new FindWidgetViewZone(0);\n this._showViewZone();\n }\n if (!addExtraSpaceOnTop && this._viewZone) {\n this._removeViewZone();\n }\n }\n }));\n this.updateAccessibilitySupport();\n this._register(this._codeEditor.onDidChangeCursorSelection(() => {\n if (this._isVisible) {\n this._updateToggleSelectionFindButton();\n }\n }));\n this._register(this._codeEditor.onDidFocusEditorWidget(() => __awaiter(this, void 0, void 0, function* () {\n if (this._isVisible) {\n const globalBufferTerm = yield this._controller.getGlobalBufferTerm();\n if (globalBufferTerm && globalBufferTerm !== this._state.searchString) {\n this._state.change({ searchString: globalBufferTerm }, false);\n this._findInput.select();\n }\n }\n })));\n this._findInputFocused = CONTEXT_FIND_INPUT_FOCUSED.bindTo(contextKeyService);\n this._findFocusTracker = this._register(dom.trackFocus(this._findInput.inputBox.inputElement));\n this._register(this._findFocusTracker.onDidFocus(() => {\n this._findInputFocused.set(true);\n this._updateSearchScope();\n }));\n this._register(this._findFocusTracker.onDidBlur(() => {\n this._findInputFocused.set(false);\n }));\n this._replaceInputFocused = CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(contextKeyService);\n this._replaceFocusTracker = this._register(dom.trackFocus(this._replaceInput.inputBox.inputElement));\n this._register(this._replaceFocusTracker.onDidFocus(() => {\n this._replaceInputFocused.set(true);\n this._updateSearchScope();\n }));\n this._register(this._replaceFocusTracker.onDidBlur(() => {\n this._replaceInputFocused.set(false);\n }));\n this._codeEditor.addOverlayWidget(this);\n if (this._codeEditor.getOption(37 /* EditorOption.find */).addExtraSpaceOnTop) {\n this._viewZone = new FindWidgetViewZone(0); // Put it before the first line then users can scroll beyond the first line.\n }\n this._applyTheme(themeService.getColorTheme());\n this._register(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\n this._register(this._codeEditor.onDidChangeModel(() => {\n if (!this._isVisible) {\n return;\n }\n this._viewZoneId = undefined;\n }));\n this._register(this._codeEditor.onDidScrollChange((e) => {\n if (e.scrollTopChanged) {\n this._layoutViewZone();\n return;\n }\n // for other scroll changes, layout the viewzone in next tick to avoid ruining current rendering.\n setTimeout(() => {\n this._layoutViewZone();\n }, 0);\n }));\n }\n // ----- IOverlayWidget API\n getId() {\n return FindWidget.ID;\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n if (this._isVisible) {\n return {\n preference: 0 /* OverlayWidgetPositionPreference.TOP_RIGHT_CORNER */\n };\n }\n return null;\n }\n // ----- React to state changes\n _onStateChanged(e) {\n if (e.searchString) {\n try {\n this._ignoreChangeEvent = true;\n this._findInput.setValue(this._state.searchString);\n }\n finally {\n this._ignoreChangeEvent = false;\n }\n this._updateButtons();\n }\n if (e.replaceString) {\n this._replaceInput.inputBox.value = this._state.replaceString;\n }\n if (e.isRevealed) {\n if (this._state.isRevealed) {\n this._reveal();\n }\n else {\n this._hide(true);\n }\n }\n if (e.isReplaceRevealed) {\n if (this._state.isReplaceRevealed) {\n if (!this._codeEditor.getOption(83 /* EditorOption.readOnly */) && !this._isReplaceVisible) {\n this._isReplaceVisible = true;\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n this._updateButtons();\n this._replaceInput.inputBox.layout();\n }\n }\n else {\n if (this._isReplaceVisible) {\n this._isReplaceVisible = false;\n this._updateButtons();\n }\n }\n }\n if ((e.isRevealed || e.isReplaceRevealed) && (this._state.isRevealed || this._state.isReplaceRevealed)) {\n if (this._tryUpdateHeight()) {\n this._showViewZone();\n }\n }\n if (e.isRegex) {\n this._findInput.setRegex(this._state.isRegex);\n }\n if (e.wholeWord) {\n this._findInput.setWholeWords(this._state.wholeWord);\n }\n if (e.matchCase) {\n this._findInput.setCaseSensitive(this._state.matchCase);\n }\n if (e.preserveCase) {\n this._replaceInput.setPreserveCase(this._state.preserveCase);\n }\n if (e.searchScope) {\n if (this._state.searchScope) {\n this._toggleSelectionFind.checked = true;\n }\n else {\n this._toggleSelectionFind.checked = false;\n }\n this._updateToggleSelectionFindButton();\n }\n if (e.searchString || e.matchesCount || e.matchesPosition) {\n const showRedOutline = (this._state.searchString.length > 0 && this._state.matchesCount === 0);\n this._domNode.classList.toggle('no-results', showRedOutline);\n this._updateMatchesCount();\n this._updateButtons();\n }\n if (e.searchString || e.currentMatch) {\n this._layoutViewZone();\n }\n if (e.updateHistory) {\n this._delayedUpdateHistory();\n }\n if (e.loop) {\n this._updateButtons();\n }\n }\n _delayedUpdateHistory() {\n this._updateHistoryDelayer.trigger(this._updateHistory.bind(this)).then(undefined, onUnexpectedError);\n }\n _updateHistory() {\n if (this._state.searchString) {\n this._findInput.inputBox.addToHistory();\n }\n if (this._state.replaceString) {\n this._replaceInput.inputBox.addToHistory();\n }\n }\n _updateMatchesCount() {\n this._matchesCount.style.minWidth = MAX_MATCHES_COUNT_WIDTH + 'px';\n if (this._state.matchesCount >= MATCHES_LIMIT) {\n this._matchesCount.title = NLS_MATCHES_COUNT_LIMIT_TITLE;\n }\n else {\n this._matchesCount.title = '';\n }\n // remove previous content\n if (this._matchesCount.firstChild) {\n this._matchesCount.removeChild(this._matchesCount.firstChild);\n }\n let label;\n if (this._state.matchesCount > 0) {\n let matchesCount = String(this._state.matchesCount);\n if (this._state.matchesCount >= MATCHES_LIMIT) {\n matchesCount += '+';\n }\n let matchesPosition = String(this._state.matchesPosition);\n if (matchesPosition === '0') {\n matchesPosition = '?';\n }\n label = strings.format(NLS_MATCHES_LOCATION, matchesPosition, matchesCount);\n }\n else {\n label = NLS_NO_RESULTS;\n }\n this._matchesCount.appendChild(document.createTextNode(label));\n alertFn(this._getAriaLabel(label, this._state.currentMatch, this._state.searchString));\n MAX_MATCHES_COUNT_WIDTH = Math.max(MAX_MATCHES_COUNT_WIDTH, this._matchesCount.clientWidth);\n }\n // ----- actions\n _getAriaLabel(label, currentMatch, searchString) {\n if (label === NLS_NO_RESULTS) {\n return searchString === ''\n ? nls.localize('ariaSearchNoResultEmpty', \"{0} found\", label)\n : nls.localize('ariaSearchNoResult', \"{0} found for '{1}'\", label, searchString);\n }\n if (currentMatch) {\n const ariaLabel = nls.localize('ariaSearchNoResultWithLineNum', \"{0} found for '{1}', at {2}\", label, searchString, currentMatch.startLineNumber + ':' + currentMatch.startColumn);\n const model = this._codeEditor.getModel();\n if (model && (currentMatch.startLineNumber <= model.getLineCount()) && (currentMatch.startLineNumber >= 1)) {\n const lineContent = model.getLineContent(currentMatch.startLineNumber);\n return `${lineContent}, ${ariaLabel}`;\n }\n return ariaLabel;\n }\n return nls.localize('ariaSearchNoResultWithLineNumNoCurrentMatch', \"{0} found for '{1}'\", label, searchString);\n }\n /**\n * If 'selection find' is ON we should not disable the button (its function is to cancel 'selection find').\n * If 'selection find' is OFF we enable the button only if there is a selection.\n */\n _updateToggleSelectionFindButton() {\n const selection = this._codeEditor.getSelection();\n const isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false;\n const isChecked = this._toggleSelectionFind.checked;\n if (this._isVisible && (isChecked || isSelection)) {\n this._toggleSelectionFind.enable();\n }\n else {\n this._toggleSelectionFind.disable();\n }\n }\n _updateButtons() {\n this._findInput.setEnabled(this._isVisible);\n this._replaceInput.setEnabled(this._isVisible && this._isReplaceVisible);\n this._updateToggleSelectionFindButton();\n this._closeBtn.setEnabled(this._isVisible);\n const findInputIsNonEmpty = (this._state.searchString.length > 0);\n const matchesCount = this._state.matchesCount ? true : false;\n this._prevBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateBack());\n this._nextBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateForward());\n this._replaceBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\n this._replaceAllBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\n this._domNode.classList.toggle('replaceToggled', this._isReplaceVisible);\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\n const canReplace = !this._codeEditor.getOption(83 /* EditorOption.readOnly */);\n this._toggleReplaceBtn.setEnabled(this._isVisible && canReplace);\n }\n _reveal() {\n this._revealTimeouts.forEach(e => {\n clearTimeout(e);\n });\n this._revealTimeouts = [];\n if (!this._isVisible) {\n this._isVisible = true;\n const selection = this._codeEditor.getSelection();\n switch (this._codeEditor.getOption(37 /* EditorOption.find */).autoFindInSelection) {\n case 'always':\n this._toggleSelectionFind.checked = true;\n break;\n case 'never':\n this._toggleSelectionFind.checked = false;\n break;\n case 'multiline': {\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n this._toggleSelectionFind.checked = isSelectionMultipleLine;\n break;\n }\n default:\n break;\n }\n this._tryUpdateWidgetWidth();\n this._updateButtons();\n this._revealTimeouts.push(setTimeout(() => {\n this._domNode.classList.add('visible');\n this._domNode.setAttribute('aria-hidden', 'false');\n }, 0));\n // validate query again as it's being dismissed when we hide the find widget.\n this._revealTimeouts.push(setTimeout(() => {\n this._findInput.validate();\n }, 200));\n this._codeEditor.layoutOverlayWidget(this);\n let adjustEditorScrollTop = true;\n if (this._codeEditor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection && selection) {\n const domNode = this._codeEditor.getDomNode();\n if (domNode) {\n const editorCoords = dom.getDomNodePagePosition(domNode);\n const startCoords = this._codeEditor.getScrolledVisiblePosition(selection.getStartPosition());\n const startLeft = editorCoords.left + (startCoords ? startCoords.left : 0);\n const startTop = startCoords ? startCoords.top : 0;\n if (this._viewZone && startTop < this._viewZone.heightInPx) {\n if (selection.endLineNumber > selection.startLineNumber) {\n adjustEditorScrollTop = false;\n }\n const leftOfFindWidget = dom.getTopLeftOffset(this._domNode).left;\n if (startLeft > leftOfFindWidget) {\n adjustEditorScrollTop = false;\n }\n const endCoords = this._codeEditor.getScrolledVisiblePosition(selection.getEndPosition());\n const endLeft = editorCoords.left + (endCoords ? endCoords.left : 0);\n if (endLeft > leftOfFindWidget) {\n adjustEditorScrollTop = false;\n }\n }\n }\n }\n this._showViewZone(adjustEditorScrollTop);\n }\n }\n _hide(focusTheEditor) {\n this._revealTimeouts.forEach(e => {\n clearTimeout(e);\n });\n this._revealTimeouts = [];\n if (this._isVisible) {\n this._isVisible = false;\n this._updateButtons();\n this._domNode.classList.remove('visible');\n this._domNode.setAttribute('aria-hidden', 'true');\n this._findInput.clearMessage();\n if (focusTheEditor) {\n this._codeEditor.focus();\n }\n this._codeEditor.layoutOverlayWidget(this);\n this._removeViewZone();\n }\n }\n _layoutViewZone(targetScrollTop) {\n const addExtraSpaceOnTop = this._codeEditor.getOption(37 /* EditorOption.find */).addExtraSpaceOnTop;\n if (!addExtraSpaceOnTop) {\n this._removeViewZone();\n return;\n }\n if (!this._isVisible) {\n return;\n }\n const viewZone = this._viewZone;\n if (this._viewZoneId !== undefined || !viewZone) {\n return;\n }\n this._codeEditor.changeViewZones((accessor) => {\n viewZone.heightInPx = this._getHeight();\n this._viewZoneId = accessor.addZone(viewZone);\n // scroll top adjust to make sure the editor doesn't scroll when adding viewzone at the beginning.\n this._codeEditor.setScrollTop(targetScrollTop || this._codeEditor.getScrollTop() + viewZone.heightInPx);\n });\n }\n _showViewZone(adjustScroll = true) {\n if (!this._isVisible) {\n return;\n }\n const addExtraSpaceOnTop = this._codeEditor.getOption(37 /* EditorOption.find */).addExtraSpaceOnTop;\n if (!addExtraSpaceOnTop) {\n return;\n }\n if (this._viewZone === undefined) {\n this._viewZone = new FindWidgetViewZone(0);\n }\n const viewZone = this._viewZone;\n this._codeEditor.changeViewZones((accessor) => {\n if (this._viewZoneId !== undefined) {\n // the view zone already exists, we need to update the height\n const newHeight = this._getHeight();\n if (newHeight === viewZone.heightInPx) {\n return;\n }\n const scrollAdjustment = newHeight - viewZone.heightInPx;\n viewZone.heightInPx = newHeight;\n accessor.layoutZone(this._viewZoneId);\n if (adjustScroll) {\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\n }\n return;\n }\n else {\n let scrollAdjustment = this._getHeight();\n // if the editor has top padding, factor that into the zone height\n scrollAdjustment -= this._codeEditor.getOption(77 /* EditorOption.padding */).top;\n if (scrollAdjustment <= 0) {\n return;\n }\n viewZone.heightInPx = scrollAdjustment;\n this._viewZoneId = accessor.addZone(viewZone);\n if (adjustScroll) {\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\n }\n }\n });\n }\n _removeViewZone() {\n this._codeEditor.changeViewZones((accessor) => {\n if (this._viewZoneId !== undefined) {\n accessor.removeZone(this._viewZoneId);\n this._viewZoneId = undefined;\n if (this._viewZone) {\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() - this._viewZone.heightInPx);\n this._viewZone = undefined;\n }\n }\n });\n }\n _applyTheme(theme) {\n const inputStyles = {\n inputActiveOptionBorder: theme.getColor(inputActiveOptionBorder),\n inputActiveOptionBackground: theme.getColor(inputActiveOptionBackground),\n inputActiveOptionForeground: theme.getColor(inputActiveOptionForeground),\n inputBackground: theme.getColor(inputBackground),\n inputForeground: theme.getColor(inputForeground),\n inputBorder: theme.getColor(inputBorder),\n inputValidationInfoBackground: theme.getColor(inputValidationInfoBackground),\n inputValidationInfoForeground: theme.getColor(inputValidationInfoForeground),\n inputValidationInfoBorder: theme.getColor(inputValidationInfoBorder),\n inputValidationWarningBackground: theme.getColor(inputValidationWarningBackground),\n inputValidationWarningForeground: theme.getColor(inputValidationWarningForeground),\n inputValidationWarningBorder: theme.getColor(inputValidationWarningBorder),\n inputValidationErrorBackground: theme.getColor(inputValidationErrorBackground),\n inputValidationErrorForeground: theme.getColor(inputValidationErrorForeground),\n inputValidationErrorBorder: theme.getColor(inputValidationErrorBorder),\n };\n this._findInput.style(inputStyles);\n this._replaceInput.style(inputStyles);\n this._toggleSelectionFind.style(inputStyles);\n }\n _tryUpdateWidgetWidth() {\n if (!this._isVisible) {\n return;\n }\n if (!dom.isInDOM(this._domNode)) {\n // the widget is not in the DOM\n return;\n }\n const layoutInfo = this._codeEditor.getLayoutInfo();\n const editorContentWidth = layoutInfo.contentWidth;\n if (editorContentWidth <= 0) {\n // for example, diff view original editor\n this._domNode.classList.add('hiddenEditor');\n return;\n }\n else if (this._domNode.classList.contains('hiddenEditor')) {\n this._domNode.classList.remove('hiddenEditor');\n }\n const editorWidth = layoutInfo.width;\n const minimapWidth = layoutInfo.minimap.minimapWidth;\n let collapsedFindWidget = false;\n let reducedFindWidget = false;\n let narrowFindWidget = false;\n if (this._resized) {\n const widgetWidth = dom.getTotalWidth(this._domNode);\n if (widgetWidth > FIND_WIDGET_INITIAL_WIDTH) {\n // as the widget is resized by users, we may need to change the max width of the widget as the editor width changes.\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n return;\n }\n }\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth >= editorWidth) {\n reducedFindWidget = true;\n }\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth) {\n narrowFindWidget = true;\n }\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth + 50) {\n collapsedFindWidget = true;\n }\n this._domNode.classList.toggle('collapsed-find-widget', collapsedFindWidget);\n this._domNode.classList.toggle('narrow-find-widget', narrowFindWidget);\n this._domNode.classList.toggle('reduced-find-widget', reducedFindWidget);\n if (!narrowFindWidget && !collapsedFindWidget) {\n // the minimal left offset of findwidget is 15px.\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\n }\n if (this._resized) {\n this._findInput.inputBox.layout();\n const findInputWidth = this._findInput.inputBox.element.clientWidth;\n if (findInputWidth > 0) {\n this._replaceInput.width = findInputWidth;\n }\n }\n else if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n }\n }\n _getHeight() {\n let totalheight = 0;\n // find input margin top\n totalheight += 4;\n // find input height\n totalheight += this._findInput.inputBox.height + 2 /** input box border */;\n if (this._isReplaceVisible) {\n // replace input margin\n totalheight += 4;\n totalheight += this._replaceInput.inputBox.height + 2 /** input box border */;\n }\n // margin bottom\n totalheight += 4;\n return totalheight;\n }\n _tryUpdateHeight() {\n const totalHeight = this._getHeight();\n if (this._cachedHeight !== null && this._cachedHeight === totalHeight) {\n return false;\n }\n this._cachedHeight = totalHeight;\n this._domNode.style.height = `${totalHeight}px`;\n return true;\n }\n // ----- Public\n focusFindInput() {\n this._findInput.select();\n // Edge browser requires focus() in addition to select()\n this._findInput.focus();\n }\n focusReplaceInput() {\n this._replaceInput.select();\n // Edge browser requires focus() in addition to select()\n this._replaceInput.focus();\n }\n highlightFindOptions() {\n this._findInput.highlightFindOptions();\n }\n _updateSearchScope() {\n if (!this._codeEditor.hasModel()) {\n return;\n }\n if (this._toggleSelectionFind.checked) {\n const selections = this._codeEditor.getSelections();\n selections.map(selection => {\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n }\n const currentMatch = this._state.currentMatch;\n if (selection.startLineNumber !== selection.endLineNumber) {\n if (!Range.equalsRange(selection, currentMatch)) {\n return selection;\n }\n }\n return null;\n }).filter(element => !!element);\n if (selections.length) {\n this._state.change({ searchScope: selections }, true);\n }\n }\n }\n _onFindInputMouseDown(e) {\n // on linux, middle key does pasting.\n if (e.middleButton) {\n e.stopPropagation();\n }\n }\n _onFindInputKeyDown(e) {\n if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {\n if (this._keybindingService.dispatchEvent(e, e.target)) {\n e.preventDefault();\n return;\n }\n else {\n this._findInput.inputBox.insertAtCursor('\\n');\n e.preventDefault();\n return;\n }\n }\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n this._replaceInput.focus();\n }\n else {\n this._findInput.focusOnCaseSensitive();\n }\n e.preventDefault();\n return;\n }\n if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {\n this._codeEditor.focus();\n e.preventDefault();\n return;\n }\n if (e.equals(16 /* KeyCode.UpArrow */)) {\n return stopPropagationForMultiLineUpwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\n }\n if (e.equals(18 /* KeyCode.DownArrow */)) {\n return stopPropagationForMultiLineDownwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\n }\n }\n _onReplaceInputKeyDown(e) {\n if (e.equals(ctrlKeyMod | 3 /* KeyCode.Enter */)) {\n if (this._keybindingService.dispatchEvent(e, e.target)) {\n e.preventDefault();\n return;\n }\n else {\n if (platform.isWindows && platform.isNative && !this._ctrlEnterReplaceAllWarningPrompted) {\n // this is the first time when users press Ctrl + Enter to replace all\n this._notificationService.info(nls.localize('ctrlEnter.keybindingChanged', 'Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.'));\n this._ctrlEnterReplaceAllWarningPrompted = true;\n this._storageService.store(ctrlEnterReplaceAllWarningPromptedKey, true, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n }\n this._replaceInput.inputBox.insertAtCursor('\\n');\n e.preventDefault();\n return;\n }\n }\n if (e.equals(2 /* KeyCode.Tab */)) {\n this._findInput.focusOnCaseSensitive();\n e.preventDefault();\n return;\n }\n if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n this._findInput.focus();\n e.preventDefault();\n return;\n }\n if (e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)) {\n this._codeEditor.focus();\n e.preventDefault();\n return;\n }\n if (e.equals(16 /* KeyCode.UpArrow */)) {\n return stopPropagationForMultiLineUpwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\n }\n if (e.equals(18 /* KeyCode.DownArrow */)) {\n return stopPropagationForMultiLineDownwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\n }\n }\n // ----- sash\n getVerticalSashLeft(_sash) {\n return 0;\n }\n // ----- initialization\n _keybindingLabelFor(actionId) {\n const kb = this._keybindingService.lookupKeybinding(actionId);\n if (!kb) {\n return '';\n }\n return ` (${kb.getLabel()})`;\n }\n _buildDomNode() {\n const flexibleHeight = true;\n const flexibleWidth = true;\n // Find input\n this._findInput = this._register(new ContextScopedFindInput(null, this._contextViewProvider, {\n width: FIND_INPUT_AREA_WIDTH,\n label: NLS_FIND_INPUT_LABEL,\n placeholder: NLS_FIND_INPUT_PLACEHOLDER,\n appendCaseSensitiveLabel: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\n appendWholeWordsLabel: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\n appendRegexLabel: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\n validation: (value) => {\n if (value.length === 0 || !this._findInput.getRegex()) {\n return null;\n }\n try {\n // use `g` and `u` which are also used by the TextModel search\n new RegExp(value, 'gu');\n return null;\n }\n catch (e) {\n return { content: e.message };\n }\n },\n flexibleHeight,\n flexibleWidth,\n flexibleMaxHeight: 118,\n showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService)\n }, this._contextKeyService, true));\n this._findInput.setRegex(!!this._state.isRegex);\n this._findInput.setCaseSensitive(!!this._state.matchCase);\n this._findInput.setWholeWords(!!this._state.wholeWord);\n this._register(this._findInput.onKeyDown((e) => this._onFindInputKeyDown(e)));\n this._register(this._findInput.inputBox.onDidChange(() => {\n if (this._ignoreChangeEvent) {\n return;\n }\n this._state.change({ searchString: this._findInput.getValue() }, true);\n }));\n this._register(this._findInput.onDidOptionChange(() => {\n this._state.change({\n isRegex: this._findInput.getRegex(),\n wholeWord: this._findInput.getWholeWords(),\n matchCase: this._findInput.getCaseSensitive()\n }, true);\n }));\n this._register(this._findInput.onCaseSensitiveKeyDown((e) => {\n if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n this._replaceInput.focus();\n e.preventDefault();\n }\n }\n }));\n this._register(this._findInput.onRegexKeyDown((e) => {\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n this._replaceInput.focusOnPreserve();\n e.preventDefault();\n }\n }\n }));\n this._register(this._findInput.inputBox.onDidHeightChange((e) => {\n if (this._tryUpdateHeight()) {\n this._showViewZone();\n }\n }));\n if (platform.isLinux) {\n this._register(this._findInput.onMouseDown((e) => this._onFindInputMouseDown(e)));\n }\n this._matchesCount = document.createElement('div');\n this._matchesCount.className = 'matchesCount';\n this._updateMatchesCount();\n // Previous button\n this._prevBtn = this._register(new SimpleButton({\n label: NLS_PREVIOUS_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.PreviousMatchFindAction),\n icon: findPreviousMatchIcon,\n onTrigger: () => {\n this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction).run().then(undefined, onUnexpectedError);\n }\n }));\n // Next button\n this._nextBtn = this._register(new SimpleButton({\n label: NLS_NEXT_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.NextMatchFindAction),\n icon: findNextMatchIcon,\n onTrigger: () => {\n this._codeEditor.getAction(FIND_IDS.NextMatchFindAction).run().then(undefined, onUnexpectedError);\n }\n }));\n const findPart = document.createElement('div');\n findPart.className = 'find-part';\n findPart.appendChild(this._findInput.domNode);\n const actionsContainer = document.createElement('div');\n actionsContainer.className = 'find-actions';\n findPart.appendChild(actionsContainer);\n actionsContainer.appendChild(this._matchesCount);\n actionsContainer.appendChild(this._prevBtn.domNode);\n actionsContainer.appendChild(this._nextBtn.domNode);\n // Toggle selection button\n this._toggleSelectionFind = this._register(new Toggle({\n icon: findSelectionIcon,\n title: NLS_TOGGLE_SELECTION_FIND_TITLE + this._keybindingLabelFor(FIND_IDS.ToggleSearchScopeCommand),\n isChecked: false\n }));\n this._register(this._toggleSelectionFind.onChange(() => {\n if (this._toggleSelectionFind.checked) {\n if (this._codeEditor.hasModel()) {\n const selections = this._codeEditor.getSelections();\n selections.map(selection => {\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n }\n if (!selection.isEmpty()) {\n return selection;\n }\n return null;\n }).filter(element => !!element);\n if (selections.length) {\n this._state.change({ searchScope: selections }, true);\n }\n }\n }\n else {\n this._state.change({ searchScope: null }, true);\n }\n }));\n actionsContainer.appendChild(this._toggleSelectionFind.domNode);\n // Close button\n this._closeBtn = this._register(new SimpleButton({\n label: NLS_CLOSE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.CloseFindWidgetCommand),\n icon: widgetClose,\n onTrigger: () => {\n this._state.change({ isRevealed: false, searchScope: null }, false);\n },\n onKeyDown: (e) => {\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._isReplaceVisible) {\n if (this._replaceBtn.isEnabled()) {\n this._replaceBtn.focus();\n }\n else {\n this._codeEditor.focus();\n }\n e.preventDefault();\n }\n }\n }\n }));\n actionsContainer.appendChild(this._closeBtn.domNode);\n // Replace input\n this._replaceInput = this._register(new ContextScopedReplaceInput(null, undefined, {\n label: NLS_REPLACE_INPUT_LABEL,\n placeholder: NLS_REPLACE_INPUT_PLACEHOLDER,\n appendPreserveCaseLabel: this._keybindingLabelFor(FIND_IDS.TogglePreserveCaseCommand),\n history: [],\n flexibleHeight,\n flexibleWidth,\n flexibleMaxHeight: 118,\n showHistoryHint: () => showHistoryKeybindingHint(this._keybindingService)\n }, this._contextKeyService, true));\n this._replaceInput.setPreserveCase(!!this._state.preserveCase);\n this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e)));\n this._register(this._replaceInput.inputBox.onDidChange(() => {\n this._state.change({ replaceString: this._replaceInput.inputBox.value }, false);\n }));\n this._register(this._replaceInput.inputBox.onDidHeightChange((e) => {\n if (this._isReplaceVisible && this._tryUpdateHeight()) {\n this._showViewZone();\n }\n }));\n this._register(this._replaceInput.onDidOptionChange(() => {\n this._state.change({\n preserveCase: this._replaceInput.getPreserveCase()\n }, true);\n }));\n this._register(this._replaceInput.onPreserveCaseKeyDown((e) => {\n if (e.equals(2 /* KeyCode.Tab */)) {\n if (this._prevBtn.isEnabled()) {\n this._prevBtn.focus();\n }\n else if (this._nextBtn.isEnabled()) {\n this._nextBtn.focus();\n }\n else if (this._toggleSelectionFind.enabled) {\n this._toggleSelectionFind.focus();\n }\n else if (this._closeBtn.isEnabled()) {\n this._closeBtn.focus();\n }\n e.preventDefault();\n }\n }));\n // Replace one button\n this._replaceBtn = this._register(new SimpleButton({\n label: NLS_REPLACE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceOneAction),\n icon: findReplaceIcon,\n onTrigger: () => {\n this._controller.replace();\n },\n onKeyDown: (e) => {\n if (e.equals(1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */)) {\n this._closeBtn.focus();\n e.preventDefault();\n }\n }\n }));\n // Replace all button\n this._replaceAllBtn = this._register(new SimpleButton({\n label: NLS_REPLACE_ALL_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceAllAction),\n icon: findReplaceAllIcon,\n onTrigger: () => {\n this._controller.replaceAll();\n }\n }));\n const replacePart = document.createElement('div');\n replacePart.className = 'replace-part';\n replacePart.appendChild(this._replaceInput.domNode);\n const replaceActionsContainer = document.createElement('div');\n replaceActionsContainer.className = 'replace-actions';\n replacePart.appendChild(replaceActionsContainer);\n replaceActionsContainer.appendChild(this._replaceBtn.domNode);\n replaceActionsContainer.appendChild(this._replaceAllBtn.domNode);\n // Toggle replace button\n this._toggleReplaceBtn = this._register(new SimpleButton({\n label: NLS_TOGGLE_REPLACE_MODE_BTN_LABEL,\n className: 'codicon toggle left',\n onTrigger: () => {\n this._state.change({ isReplaceRevealed: !this._isReplaceVisible }, false);\n if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n this._replaceInput.inputBox.layout();\n }\n this._showViewZone();\n }\n }));\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\n // Widget\n this._domNode = document.createElement('div');\n this._domNode.className = 'editor-widget find-widget';\n this._domNode.setAttribute('aria-hidden', 'true');\n // We need to set this explicitly, otherwise on IE11, the width inheritence of flex doesn't work.\n this._domNode.style.width = `${FIND_WIDGET_INITIAL_WIDTH}px`;\n this._domNode.appendChild(this._toggleReplaceBtn.domNode);\n this._domNode.appendChild(findPart);\n this._domNode.appendChild(replacePart);\n this._resizeSash = new Sash(this._domNode, this, { orientation: 0 /* Orientation.VERTICAL */, size: 2 });\n this._resized = false;\n let originalWidth = FIND_WIDGET_INITIAL_WIDTH;\n this._register(this._resizeSash.onDidStart(() => {\n originalWidth = dom.getTotalWidth(this._domNode);\n }));\n this._register(this._resizeSash.onDidChange((evt) => {\n this._resized = true;\n const width = originalWidth + evt.startX - evt.currentX;\n if (width < FIND_WIDGET_INITIAL_WIDTH) {\n // narrow down the find widget should be handled by CSS.\n return;\n }\n const maxWidth = parseFloat(dom.getComputedStyle(this._domNode).maxWidth) || 0;\n if (width > maxWidth) {\n return;\n }\n this._domNode.style.width = `${width}px`;\n if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n }\n this._findInput.inputBox.layout();\n this._tryUpdateHeight();\n }));\n this._register(this._resizeSash.onDidReset(() => {\n // users double click on the sash\n const currentWidth = dom.getTotalWidth(this._domNode);\n if (currentWidth < FIND_WIDGET_INITIAL_WIDTH) {\n // The editor is narrow and the width of the find widget is controlled fully by CSS.\n return;\n }\n let width = FIND_WIDGET_INITIAL_WIDTH;\n if (!this._resized || currentWidth === FIND_WIDGET_INITIAL_WIDTH) {\n // 1. never resized before, double click should maximizes it\n // 2. users resized it already but its width is the same as default\n const layoutInfo = this._codeEditor.getLayoutInfo();\n width = layoutInfo.width - 28 - layoutInfo.minimap.minimapWidth - 15;\n this._resized = true;\n }\n else {\n /**\n * no op, the find widget should be shrinked to its default size.\n */\n }\n this._domNode.style.width = `${width}px`;\n if (this._isReplaceVisible) {\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\n }\n this._findInput.inputBox.layout();\n }));\n }\n updateAccessibilitySupport() {\n const value = this._codeEditor.getOption(2 /* EditorOption.accessibilitySupport */);\n this._findInput.setFocusInputOnOptionClick(value !== 2 /* AccessibilitySupport.Enabled */);\n }\n}\nFindWidget.ID = 'editor.contrib.findWidget';\nexport class SimpleButton extends Widget {\n constructor(opts) {\n super();\n this._opts = opts;\n let className = 'button';\n if (this._opts.className) {\n className = className + ' ' + this._opts.className;\n }\n if (this._opts.icon) {\n className = className + ' ' + ThemeIcon.asClassName(this._opts.icon);\n }\n this._domNode = document.createElement('div');\n this._domNode.title = this._opts.label;\n this._domNode.tabIndex = 0;\n this._domNode.className = className;\n this._domNode.setAttribute('role', 'button');\n this._domNode.setAttribute('aria-label', this._opts.label);\n this.onclick(this._domNode, (e) => {\n this._opts.onTrigger();\n e.preventDefault();\n });\n this.onkeydown(this._domNode, (e) => {\n var _a, _b;\n if (e.equals(10 /* KeyCode.Space */) || e.equals(3 /* KeyCode.Enter */)) {\n this._opts.onTrigger();\n e.preventDefault();\n return;\n }\n (_b = (_a = this._opts).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n });\n }\n get domNode() {\n return this._domNode;\n }\n isEnabled() {\n return (this._domNode.tabIndex >= 0);\n }\n focus() {\n this._domNode.focus();\n }\n setEnabled(enabled) {\n this._domNode.classList.toggle('disabled', !enabled);\n this._domNode.setAttribute('aria-disabled', String(!enabled));\n this._domNode.tabIndex = enabled ? 0 : -1;\n }\n setExpanded(expanded) {\n this._domNode.setAttribute('aria-expanded', String(!!expanded));\n if (expanded) {\n this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findCollapsedIcon));\n this._domNode.classList.add(...ThemeIcon.asClassNameArray(findExpandedIcon));\n }\n else {\n this._domNode.classList.remove(...ThemeIcon.asClassNameArray(findExpandedIcon));\n this._domNode.classList.add(...ThemeIcon.asClassNameArray(findCollapsedIcon));\n }\n }\n}\n// theming\nregisterThemingParticipant((theme, collector) => {\n const addBackgroundColorRule = (selector, color) => {\n if (color) {\n collector.addRule(`.monaco-editor ${selector} { background-color: ${color}; }`);\n }\n };\n addBackgroundColorRule('.findMatch', theme.getColor(editorFindMatchHighlight));\n addBackgroundColorRule('.currentFindMatch', theme.getColor(editorFindMatch));\n addBackgroundColorRule('.findScope', theme.getColor(editorFindRangeHighlight));\n const widgetBackground = theme.getColor(editorWidgetBackground);\n addBackgroundColorRule('.find-widget', widgetBackground);\n const widgetShadowColor = theme.getColor(widgetShadow);\n if (widgetShadowColor) {\n collector.addRule(`.monaco-editor .find-widget { box-shadow: 0 0 8px 2px ${widgetShadowColor}; }`);\n }\n const findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\n if (findMatchHighlightBorder) {\n collector.addRule(`.monaco-editor .findMatch { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\n }\n const findMatchBorder = theme.getColor(editorFindMatchBorder);\n if (findMatchBorder) {\n collector.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${findMatchBorder}; padding: 1px; box-sizing: border-box; }`);\n }\n const findRangeHighlightBorder = theme.getColor(editorFindRangeHighlightBorder);\n if (findRangeHighlightBorder) {\n collector.addRule(`.monaco-editor .findScope { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${findRangeHighlightBorder}; }`);\n }\n const hcBorder = theme.getColor(contrastBorder);\n if (hcBorder) {\n collector.addRule(`.monaco-editor .find-widget { border: 1px solid ${hcBorder}; }`);\n }\n const foreground = theme.getColor(editorWidgetForeground);\n if (foreground) {\n collector.addRule(`.monaco-editor .find-widget { color: ${foreground}; }`);\n }\n const error = theme.getColor(errorForeground);\n if (error) {\n collector.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${error}; }`);\n }\n const resizeBorderBackground = theme.getColor(editorWidgetResizeBorder);\n if (resizeBorderBackground) {\n collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${resizeBorderBackground}; }`);\n }\n else {\n const border = theme.getColor(editorWidgetBorder);\n if (border) {\n collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${border}; }`);\n }\n }\n // Action bars\n const toolbarHoverBackgroundColor = theme.getColor(toolbarHoverBackground);\n if (toolbarHoverBackgroundColor) {\n collector.addRule(`\n\t\t.monaco-editor .find-widget .button:not(.disabled):hover,\n\t\t.monaco-editor .find-widget .codicon-find-selection:hover {\n\t\t\tbackground-color: ${toolbarHoverBackgroundColor} !important;\n\t\t}\n\t`);\n }\n // This rule is used to override the outline color for synthetic-focus find input.\n const focusOutline = theme.getColor(focusBorder);\n if (focusOutline) {\n collector.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${focusOutline}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Delayer } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { EditorAction, EditorCommand, MultiEditorAction, registerEditorAction, registerEditorCommand, registerEditorContribution, registerMultiEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_FIND_WIDGET_VISIBLE, CONTEXT_REPLACE_INPUT_FOCUSED, FindModelBoundToEditorModel, FIND_IDS, ToggleCaseSensitiveKeybinding, TogglePreserveCaseKeybinding, ToggleRegexKeybinding, ToggleSearchScopeKeybinding, ToggleWholeWordKeybinding } from './findModel.js';\nimport { FindOptionsWidget } from './findOptionsWidget.js';\nimport { FindReplaceState } from './findState.js';\nimport { FindWidget } from './findWidget.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextViewService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nconst SEARCH_STRING_MAX_LENGTH = 524288;\nexport function getSelectionSearchString(editor, seedSearchStringFromSelection = 'single', seedSearchStringFromNonEmptySelection = false) {\n if (!editor.hasModel()) {\n return null;\n }\n const selection = editor.getSelection();\n // if selection spans multiple lines, default search string to empty\n if ((seedSearchStringFromSelection === 'single' && selection.startLineNumber === selection.endLineNumber)\n || seedSearchStringFromSelection === 'multiple') {\n if (selection.isEmpty()) {\n const wordAtPosition = editor.getConfiguredWordAtPosition(selection.getStartPosition());\n if (wordAtPosition && (false === seedSearchStringFromNonEmptySelection)) {\n return wordAtPosition.word;\n }\n }\n else {\n if (editor.getModel().getValueLengthInRange(selection) < SEARCH_STRING_MAX_LENGTH) {\n return editor.getModel().getValueInRange(selection);\n }\n }\n }\n return null;\n}\nlet CommonFindController = class CommonFindController extends Disposable {\n constructor(editor, contextKeyService, storageService, clipboardService) {\n super();\n this._editor = editor;\n this._findWidgetVisible = CONTEXT_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);\n this._contextKeyService = contextKeyService;\n this._storageService = storageService;\n this._clipboardService = clipboardService;\n this._updateHistoryDelayer = new Delayer(500);\n this._state = this._register(new FindReplaceState());\n this.loadQueryState();\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\n this._model = null;\n this._register(this._editor.onDidChangeModel(() => {\n const shouldRestartFind = (this._editor.getModel() && this._state.isRevealed);\n this.disposeModel();\n this._state.change({\n searchScope: null,\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* StorageScope.WORKSPACE */, false),\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* StorageScope.WORKSPACE */, false),\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* StorageScope.WORKSPACE */, false),\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* StorageScope.WORKSPACE */, false)\n }, false);\n if (shouldRestartFind) {\n this._start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: 'none',\n seedSearchStringFromNonEmptySelection: false,\n seedSearchStringFromGlobalClipboard: false,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: false,\n updateSearchScope: false,\n loop: this._editor.getOption(37 /* EditorOption.find */).loop\n });\n }\n }));\n }\n get editor() {\n return this._editor;\n }\n static get(editor) {\n return editor.getContribution(CommonFindController.ID);\n }\n dispose() {\n this.disposeModel();\n super.dispose();\n }\n disposeModel() {\n if (this._model) {\n this._model.dispose();\n this._model = null;\n }\n }\n _onStateChanged(e) {\n this.saveQueryState(e);\n if (e.isRevealed) {\n if (this._state.isRevealed) {\n this._findWidgetVisible.set(true);\n }\n else {\n this._findWidgetVisible.reset();\n this.disposeModel();\n }\n }\n if (e.searchString) {\n this.setGlobalBufferTerm(this._state.searchString);\n }\n }\n saveQueryState(e) {\n if (e.isRegex) {\n this._storageService.store('editor.isRegex', this._state.actualIsRegex, 1 /* StorageScope.WORKSPACE */, 0 /* StorageTarget.USER */);\n }\n if (e.wholeWord) {\n this._storageService.store('editor.wholeWord', this._state.actualWholeWord, 1 /* StorageScope.WORKSPACE */, 0 /* StorageTarget.USER */);\n }\n if (e.matchCase) {\n this._storageService.store('editor.matchCase', this._state.actualMatchCase, 1 /* StorageScope.WORKSPACE */, 0 /* StorageTarget.USER */);\n }\n if (e.preserveCase) {\n this._storageService.store('editor.preserveCase', this._state.actualPreserveCase, 1 /* StorageScope.WORKSPACE */, 0 /* StorageTarget.USER */);\n }\n }\n loadQueryState() {\n this._state.change({\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* StorageScope.WORKSPACE */, this._state.matchCase),\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* StorageScope.WORKSPACE */, this._state.wholeWord),\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* StorageScope.WORKSPACE */, this._state.isRegex),\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* StorageScope.WORKSPACE */, this._state.preserveCase)\n }, false);\n }\n isFindInputFocused() {\n return !!CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService);\n }\n getState() {\n return this._state;\n }\n closeFindWidget() {\n this._state.change({\n isRevealed: false,\n searchScope: null\n }, false);\n this._editor.focus();\n }\n toggleCaseSensitive() {\n this._state.change({ matchCase: !this._state.matchCase }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n toggleWholeWords() {\n this._state.change({ wholeWord: !this._state.wholeWord }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n toggleRegex() {\n this._state.change({ isRegex: !this._state.isRegex }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n togglePreserveCase() {\n this._state.change({ preserveCase: !this._state.preserveCase }, false);\n if (!this._state.isRevealed) {\n this.highlightFindOptions();\n }\n }\n toggleSearchScope() {\n if (this._state.searchScope) {\n this._state.change({ searchScope: null }, true);\n }\n else {\n if (this._editor.hasModel()) {\n const selections = this._editor.getSelections();\n selections.map(selection => {\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._editor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\n }\n if (!selection.isEmpty()) {\n return selection;\n }\n return null;\n }).filter(element => !!element);\n if (selections.length) {\n this._state.change({ searchScope: selections }, true);\n }\n }\n }\n }\n setSearchString(searchString) {\n if (this._state.isRegex) {\n searchString = strings.escapeRegExpCharacters(searchString);\n }\n this._state.change({ searchString: searchString }, false);\n }\n highlightFindOptions(ignoreWhenVisible = false) {\n // overwritten in subclass\n }\n _start(opts, newState) {\n return __awaiter(this, void 0, void 0, function* () {\n this.disposeModel();\n if (!this._editor.hasModel()) {\n // cannot do anything with an editor that doesn't have a model...\n return;\n }\n const stateChanges = Object.assign(Object.assign({}, newState), { isRevealed: true });\n if (opts.seedSearchStringFromSelection === 'single') {\n const selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection, opts.seedSearchStringFromNonEmptySelection);\n if (selectionSearchString) {\n if (this._state.isRegex) {\n stateChanges.searchString = strings.escapeRegExpCharacters(selectionSearchString);\n }\n else {\n stateChanges.searchString = selectionSearchString;\n }\n }\n }\n else if (opts.seedSearchStringFromSelection === 'multiple' && !opts.updateSearchScope) {\n const selectionSearchString = getSelectionSearchString(this._editor, opts.seedSearchStringFromSelection);\n if (selectionSearchString) {\n stateChanges.searchString = selectionSearchString;\n }\n }\n if (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) {\n const selectionSearchString = yield this.getGlobalBufferTerm();\n if (!this._editor.hasModel()) {\n // the editor has lost its model in the meantime\n return;\n }\n if (selectionSearchString) {\n stateChanges.searchString = selectionSearchString;\n }\n }\n // Overwrite isReplaceRevealed\n if (opts.forceRevealReplace || stateChanges.isReplaceRevealed) {\n stateChanges.isReplaceRevealed = true;\n }\n else if (!this._findWidgetVisible.get()) {\n stateChanges.isReplaceRevealed = false;\n }\n if (opts.updateSearchScope) {\n const currentSelections = this._editor.getSelections();\n if (currentSelections.some(selection => !selection.isEmpty())) {\n stateChanges.searchScope = currentSelections;\n }\n }\n stateChanges.loop = opts.loop;\n this._state.change(stateChanges, false);\n if (!this._model) {\n this._model = new FindModelBoundToEditorModel(this._editor, this._state);\n }\n });\n }\n start(opts, newState) {\n return this._start(opts, newState);\n }\n moveToNextMatch() {\n if (this._model) {\n this._model.moveToNextMatch();\n return true;\n }\n return false;\n }\n moveToPrevMatch() {\n if (this._model) {\n this._model.moveToPrevMatch();\n return true;\n }\n return false;\n }\n replace() {\n if (this._model) {\n this._model.replace();\n return true;\n }\n return false;\n }\n replaceAll() {\n if (this._model) {\n this._model.replaceAll();\n return true;\n }\n return false;\n }\n selectAllMatches() {\n if (this._model) {\n this._model.selectAllMatches();\n this._editor.focus();\n return true;\n }\n return false;\n }\n getGlobalBufferTerm() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._editor.getOption(37 /* EditorOption.find */).globalFindClipboard\n && this._editor.hasModel()\n && !this._editor.getModel().isTooLargeForSyncing()) {\n return this._clipboardService.readFindText();\n }\n return '';\n });\n }\n setGlobalBufferTerm(text) {\n if (this._editor.getOption(37 /* EditorOption.find */).globalFindClipboard\n && this._editor.hasModel()\n && !this._editor.getModel().isTooLargeForSyncing()) {\n // intentionally not awaited\n this._clipboardService.writeFindText(text);\n }\n }\n};\nCommonFindController.ID = 'editor.contrib.findController';\nCommonFindController = __decorate([\n __param(1, IContextKeyService),\n __param(2, IStorageService),\n __param(3, IClipboardService)\n], CommonFindController);\nexport { CommonFindController };\nlet FindController = class FindController extends CommonFindController {\n constructor(editor, _contextViewService, _contextKeyService, _keybindingService, _themeService, _notificationService, _storageService, clipboardService) {\n super(editor, _contextKeyService, _storageService, clipboardService);\n this._contextViewService = _contextViewService;\n this._keybindingService = _keybindingService;\n this._themeService = _themeService;\n this._notificationService = _notificationService;\n this._widget = null;\n this._findOptionsWidget = null;\n }\n _start(opts, newState) {\n const _super = Object.create(null, {\n _start: { get: () => super._start }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._widget) {\n this._createFindWidget();\n }\n const selection = this._editor.getSelection();\n let updateSearchScope = false;\n switch (this._editor.getOption(37 /* EditorOption.find */).autoFindInSelection) {\n case 'always':\n updateSearchScope = true;\n break;\n case 'never':\n updateSearchScope = false;\n break;\n case 'multiline': {\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\n updateSearchScope = isSelectionMultipleLine;\n break;\n }\n default:\n break;\n }\n opts.updateSearchScope = opts.updateSearchScope || updateSearchScope;\n yield _super._start.call(this, opts, newState);\n if (this._widget) {\n if (opts.shouldFocus === 2 /* FindStartFocusAction.FocusReplaceInput */) {\n this._widget.focusReplaceInput();\n }\n else if (opts.shouldFocus === 1 /* FindStartFocusAction.FocusFindInput */) {\n this._widget.focusFindInput();\n }\n }\n });\n }\n highlightFindOptions(ignoreWhenVisible = false) {\n if (!this._widget) {\n this._createFindWidget();\n }\n if (this._state.isRevealed && !ignoreWhenVisible) {\n this._widget.highlightFindOptions();\n }\n else {\n this._findOptionsWidget.highlightFindOptions();\n }\n }\n _createFindWidget() {\n this._widget = this._register(new FindWidget(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._themeService, this._storageService, this._notificationService));\n this._findOptionsWidget = this._register(new FindOptionsWidget(this._editor, this._state, this._keybindingService, this._themeService));\n }\n};\nFindController = __decorate([\n __param(1, IContextViewService),\n __param(2, IContextKeyService),\n __param(3, IKeybindingService),\n __param(4, IThemeService),\n __param(5, INotificationService),\n __param(6, IStorageService),\n __param(7, IClipboardService)\n], FindController);\nexport { FindController };\nexport const StartFindAction = registerMultiEditorAction(new MultiEditorAction({\n id: FIND_IDS.StartFindAction,\n label: nls.localize('startFindAction', \"Find\"),\n alias: 'Find',\n precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n kbOpts: {\n kbExpr: null,\n primary: 2048 /* KeyMod.CtrlCmd */ | 36 /* KeyCode.KeyF */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '3_find',\n title: nls.localize({ key: 'miFind', comment: ['&& denotes a mnemonic'] }, \"&&Find\"),\n order: 1\n }\n}));\nStartFindAction.addImplementation(0, (accessor, editor, args) => {\n const controller = CommonFindController.get(editor);\n if (!controller) {\n return false;\n }\n return controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: editor.getOption(37 /* EditorOption.find */).globalFindClipboard,\n shouldFocus: 1 /* FindStartFocusAction.FocusFindInput */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(37 /* EditorOption.find */).loop\n });\n});\nconst findArgDescription = {\n description: 'Open a new In-Editor Find Widget.',\n args: [{\n name: 'Open a new In-Editor Find Widget args',\n schema: {\n properties: {\n searchString: { type: 'string' },\n replaceString: { type: 'string' },\n regex: { type: 'boolean' },\n regexOverride: {\n type: 'number',\n description: nls.localize('actions.find.isRegexOverride', 'Overrides \"Use Regular Expression\" flag.\\nThe flag will not be saved for the future.\\n0: Do Nothing\\n1: True\\n2: False')\n },\n wholeWord: { type: 'boolean' },\n wholeWordOverride: {\n type: 'number',\n description: nls.localize('actions.find.wholeWordOverride', 'Overrides \"Match Whole Word\" flag.\\nThe flag will not be saved for the future.\\n0: Do Nothing\\n1: True\\n2: False')\n },\n matchCase: { type: 'boolean' },\n matchCaseOverride: {\n type: 'number',\n description: nls.localize('actions.find.matchCaseOverride', 'Overrides \"Math Case\" flag.\\nThe flag will not be saved for the future.\\n0: Do Nothing\\n1: True\\n2: False')\n },\n preserveCase: { type: 'boolean' },\n preserveCaseOverride: {\n type: 'number',\n description: nls.localize('actions.find.preserveCaseOverride', 'Overrides \"Preserve Case\" flag.\\nThe flag will not be saved for the future.\\n0: Do Nothing\\n1: True\\n2: False')\n },\n findInSelection: { type: 'boolean' },\n }\n }\n }]\n};\nexport class StartFindWithArgsAction extends EditorAction {\n constructor() {\n super({\n id: FIND_IDS.StartFindWithArgs,\n label: nls.localize('startFindWithArgsAction', \"Find With Arguments\"),\n alias: 'Find With Arguments',\n precondition: undefined,\n kbOpts: {\n kbExpr: null,\n primary: 0,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n description: findArgDescription\n });\n }\n run(accessor, editor, args) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = CommonFindController.get(editor);\n if (controller) {\n const newState = args ? {\n searchString: args.searchString,\n replaceString: args.replaceString,\n isReplaceRevealed: args.replaceString !== undefined,\n isRegex: args.isRegex,\n // isRegexOverride: args.regexOverride,\n wholeWord: args.matchWholeWord,\n // wholeWordOverride: args.wholeWordOverride,\n matchCase: args.isCaseSensitive,\n // matchCaseOverride: args.matchCaseOverride,\n preserveCase: args.preserveCase,\n // preserveCaseOverride: args.preserveCaseOverride,\n } : {};\n yield controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: true,\n shouldFocus: 1 /* FindStartFocusAction.FocusFindInput */,\n shouldAnimate: true,\n updateSearchScope: (args === null || args === void 0 ? void 0 : args.findInSelection) || false,\n loop: editor.getOption(37 /* EditorOption.find */).loop\n }, newState);\n controller.setGlobalBufferTerm(controller.getState().searchString);\n }\n });\n }\n}\nexport class StartFindWithSelectionAction extends EditorAction {\n constructor() {\n super({\n id: FIND_IDS.StartFindWithSelection,\n label: nls.localize('startFindWithSelectionAction', \"Find With Selection\"),\n alias: 'Find With Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: null,\n primary: 0,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 35 /* KeyCode.KeyE */,\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = CommonFindController.get(editor);\n if (controller) {\n yield controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: 'multiple',\n seedSearchStringFromNonEmptySelection: false,\n seedSearchStringFromGlobalClipboard: false,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(37 /* EditorOption.find */).loop\n });\n controller.setGlobalBufferTerm(controller.getState().searchString);\n }\n });\n }\n}\nexport class MatchFindAction extends EditorAction {\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = CommonFindController.get(editor);\n if (controller && !this._run(controller)) {\n yield controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: true,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(37 /* EditorOption.find */).loop\n });\n this._run(controller);\n }\n });\n }\n}\nexport class NextMatchFindAction extends MatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.NextMatchFindAction,\n label: nls.localize('findNextMatchAction', \"Find Next\"),\n alias: 'Find Next',\n precondition: undefined,\n kbOpts: [{\n kbExpr: EditorContextKeys.focus,\n primary: 61 /* KeyCode.F3 */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 37 /* KeyCode.KeyG */, secondary: [61 /* KeyCode.F3 */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }, {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n primary: 3 /* KeyCode.Enter */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }]\n });\n }\n _run(controller) {\n const result = controller.moveToNextMatch();\n if (result) {\n controller.editor.pushUndoStop();\n return true;\n }\n return false;\n }\n}\nexport class PreviousMatchFindAction extends MatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.PreviousMatchFindAction,\n label: nls.localize('findPreviousMatchAction', \"Find Previous\"),\n alias: 'Find Previous',\n precondition: undefined,\n kbOpts: [{\n kbExpr: EditorContextKeys.focus,\n primary: 1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 37 /* KeyCode.KeyG */, secondary: [1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }, {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\n primary: 1024 /* KeyMod.Shift */ | 3 /* KeyCode.Enter */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n ]\n });\n }\n _run(controller) {\n return controller.moveToPrevMatch();\n }\n}\nexport class SelectionMatchFindAction extends EditorAction {\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = CommonFindController.get(editor);\n if (!controller) {\n return;\n }\n const seedSearchStringFromNonEmptySelection = editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection === 'selection';\n let selectionSearchString = null;\n if (editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection !== 'never') {\n selectionSearchString = getSelectionSearchString(editor, 'single', seedSearchStringFromNonEmptySelection);\n }\n if (selectionSearchString) {\n controller.setSearchString(selectionSearchString);\n }\n if (!this._run(controller)) {\n yield controller.start({\n forceRevealReplace: false,\n seedSearchStringFromSelection: editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection !== 'never' ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: seedSearchStringFromNonEmptySelection,\n seedSearchStringFromGlobalClipboard: false,\n shouldFocus: 0 /* FindStartFocusAction.NoFocusChange */,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(37 /* EditorOption.find */).loop\n });\n this._run(controller);\n }\n });\n }\n}\nexport class NextSelectionMatchFindAction extends SelectionMatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.NextSelectionMatchFindAction,\n label: nls.localize('nextSelectionMatchFindAction', \"Find Next Selection\"),\n alias: 'Find Next Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 61 /* KeyCode.F3 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _run(controller) {\n return controller.moveToNextMatch();\n }\n}\nexport class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {\n constructor() {\n super({\n id: FIND_IDS.PreviousSelectionMatchFindAction,\n label: nls.localize('previousSelectionMatchFindAction', \"Find Previous Selection\"),\n alias: 'Find Previous Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 61 /* KeyCode.F3 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _run(controller) {\n return controller.moveToPrevMatch();\n }\n}\nexport const StartFindReplaceAction = registerMultiEditorAction(new MultiEditorAction({\n id: FIND_IDS.StartFindReplaceAction,\n label: nls.localize('startReplace', \"Replace\"),\n alias: 'Replace',\n precondition: ContextKeyExpr.or(EditorContextKeys.focus, ContextKeyExpr.has('editorIsOpen')),\n kbOpts: {\n kbExpr: null,\n primary: 2048 /* KeyMod.CtrlCmd */ | 38 /* KeyCode.KeyH */,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 36 /* KeyCode.KeyF */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarEditMenu,\n group: '3_find',\n title: nls.localize({ key: 'miReplace', comment: ['&& denotes a mnemonic'] }, \"&&Replace\"),\n order: 2\n }\n}));\nStartFindReplaceAction.addImplementation(0, (accessor, editor, args) => {\n if (!editor.hasModel() || editor.getOption(83 /* EditorOption.readOnly */)) {\n return false;\n }\n const controller = CommonFindController.get(editor);\n if (!controller) {\n return false;\n }\n const currentSelection = editor.getSelection();\n const findInputFocused = controller.isFindInputFocused();\n // we only seed search string from selection when the current selection is single line and not empty,\n // + the find input is not focused\n const seedSearchStringFromSelection = !currentSelection.isEmpty()\n && currentSelection.startLineNumber === currentSelection.endLineNumber\n && (editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection !== 'never')\n && !findInputFocused;\n /*\n * if the existing search string in find widget is empty and we don't seed search string from selection, it means the Find Input is still empty, so we should focus the Find Input instead of Replace Input.\n\n * findInputFocused true -> seedSearchStringFromSelection false, FocusReplaceInput\n * findInputFocused false, seedSearchStringFromSelection true FocusReplaceInput\n * findInputFocused false seedSearchStringFromSelection false FocusFindInput\n */\n const shouldFocus = (findInputFocused || seedSearchStringFromSelection) ?\n 2 /* FindStartFocusAction.FocusReplaceInput */ : 1 /* FindStartFocusAction.FocusFindInput */;\n return controller.start({\n forceRevealReplace: true,\n seedSearchStringFromSelection: seedSearchStringFromSelection ? 'single' : 'none',\n seedSearchStringFromNonEmptySelection: editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection === 'selection',\n seedSearchStringFromGlobalClipboard: editor.getOption(37 /* EditorOption.find */).seedSearchStringFromSelection !== 'never',\n shouldFocus: shouldFocus,\n shouldAnimate: true,\n updateSearchScope: false,\n loop: editor.getOption(37 /* EditorOption.find */).loop\n });\n});\nregisterEditorContribution(CommonFindController.ID, FindController);\nregisterEditorAction(StartFindWithArgsAction);\nregisterEditorAction(StartFindWithSelectionAction);\nregisterEditorAction(NextMatchFindAction);\nregisterEditorAction(PreviousMatchFindAction);\nregisterEditorAction(NextSelectionMatchFindAction);\nregisterEditorAction(PreviousSelectionMatchFindAction);\nconst FindCommand = EditorCommand.bindToContribution(CommonFindController.get);\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.CloseFindWidgetCommand,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.closeFindWidget(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, ContextKeyExpr.not('isComposing')),\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleCaseSensitiveCommand,\n precondition: undefined,\n handler: x => x.toggleCaseSensitive(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleCaseSensitiveKeybinding.primary,\n mac: ToggleCaseSensitiveKeybinding.mac,\n win: ToggleCaseSensitiveKeybinding.win,\n linux: ToggleCaseSensitiveKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleWholeWordCommand,\n precondition: undefined,\n handler: x => x.toggleWholeWords(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleWholeWordKeybinding.primary,\n mac: ToggleWholeWordKeybinding.mac,\n win: ToggleWholeWordKeybinding.win,\n linux: ToggleWholeWordKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleRegexCommand,\n precondition: undefined,\n handler: x => x.toggleRegex(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleRegexKeybinding.primary,\n mac: ToggleRegexKeybinding.mac,\n win: ToggleRegexKeybinding.win,\n linux: ToggleRegexKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ToggleSearchScopeCommand,\n precondition: undefined,\n handler: x => x.toggleSearchScope(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: ToggleSearchScopeKeybinding.primary,\n mac: ToggleSearchScopeKeybinding.mac,\n win: ToggleSearchScopeKeybinding.win,\n linux: ToggleSearchScopeKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.TogglePreserveCaseCommand,\n precondition: undefined,\n handler: x => x.togglePreserveCase(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: TogglePreserveCaseKeybinding.primary,\n mac: TogglePreserveCaseKeybinding.mac,\n win: TogglePreserveCaseKeybinding.win,\n linux: TogglePreserveCaseKeybinding.linux\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceOneAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replace(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 22 /* KeyCode.Digit1 */\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceOneAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replace(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n primary: 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceAllAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replaceAll(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.ReplaceAllAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.replaceAll(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\n primary: undefined,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n }\n }\n}));\nregisterEditorCommand(new FindCommand({\n id: FIND_IDS.SelectAllMatchesAction,\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\n handler: x => x.selectAllMatches(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 5,\n kbExpr: EditorContextKeys.focus,\n primary: 512 /* KeyMod.Alt */ | 3 /* KeyCode.Enter */\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport const MAX_FOLDING_REGIONS = 0xFFFF;\nexport const MAX_LINE_NUMBER = 0xFFFFFF;\nconst MASK_INDENT = 0xFF000000;\nclass BitField {\n constructor(size) {\n const numWords = Math.ceil(size / 32);\n this._states = new Uint32Array(numWords);\n }\n get(index) {\n const arrayIndex = (index / 32) | 0;\n const bit = index % 32;\n return (this._states[arrayIndex] & (1 << bit)) !== 0;\n }\n set(index, newState) {\n const arrayIndex = (index / 32) | 0;\n const bit = index % 32;\n const value = this._states[arrayIndex];\n if (newState) {\n this._states[arrayIndex] = value | (1 << bit);\n }\n else {\n this._states[arrayIndex] = value & ~(1 << bit);\n }\n }\n}\nexport class FoldingRegions {\n constructor(startIndexes, endIndexes, types) {\n this.sourceAbbr = {\n [0 /* FoldSource.provider */]: ' ',\n [1 /* FoldSource.userDefined */]: 'u',\n [2 /* FoldSource.recovered */]: 'r',\n };\n if (startIndexes.length !== endIndexes.length || startIndexes.length > MAX_FOLDING_REGIONS) {\n throw new Error('invalid startIndexes or endIndexes size');\n }\n this._startIndexes = startIndexes;\n this._endIndexes = endIndexes;\n this._collapseStates = new BitField(startIndexes.length);\n this._userDefinedStates = new BitField(startIndexes.length);\n this._recoveredStates = new BitField(startIndexes.length);\n this._types = types;\n this._parentsComputed = false;\n }\n ensureParentIndices() {\n if (!this._parentsComputed) {\n this._parentsComputed = true;\n const parentIndexes = [];\n const isInsideLast = (startLineNumber, endLineNumber) => {\n const index = parentIndexes[parentIndexes.length - 1];\n return this.getStartLineNumber(index) <= startLineNumber && this.getEndLineNumber(index) >= endLineNumber;\n };\n for (let i = 0, len = this._startIndexes.length; i < len; i++) {\n const startLineNumber = this._startIndexes[i];\n const endLineNumber = this._endIndexes[i];\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\n throw new Error('startLineNumber or endLineNumber must not exceed ' + MAX_LINE_NUMBER);\n }\n while (parentIndexes.length > 0 && !isInsideLast(startLineNumber, endLineNumber)) {\n parentIndexes.pop();\n }\n const parentIndex = parentIndexes.length > 0 ? parentIndexes[parentIndexes.length - 1] : -1;\n parentIndexes.push(i);\n this._startIndexes[i] = startLineNumber + ((parentIndex & 0xFF) << 24);\n this._endIndexes[i] = endLineNumber + ((parentIndex & 0xFF00) << 16);\n }\n }\n }\n get length() {\n return this._startIndexes.length;\n }\n getStartLineNumber(index) {\n return this._startIndexes[index] & MAX_LINE_NUMBER;\n }\n getEndLineNumber(index) {\n return this._endIndexes[index] & MAX_LINE_NUMBER;\n }\n getType(index) {\n return this._types ? this._types[index] : undefined;\n }\n hasTypes() {\n return !!this._types;\n }\n isCollapsed(index) {\n return this._collapseStates.get(index);\n }\n setCollapsed(index, newState) {\n this._collapseStates.set(index, newState);\n }\n isUserDefined(index) {\n return this._userDefinedStates.get(index);\n }\n setUserDefined(index, newState) {\n return this._userDefinedStates.set(index, newState);\n }\n isRecovered(index) {\n return this._recoveredStates.get(index);\n }\n setRecovered(index, newState) {\n return this._recoveredStates.set(index, newState);\n }\n getSource(index) {\n if (this.isUserDefined(index)) {\n return 1 /* FoldSource.userDefined */;\n }\n else if (this.isRecovered(index)) {\n return 2 /* FoldSource.recovered */;\n }\n return 0 /* FoldSource.provider */;\n }\n setSource(index, source) {\n if (source === 1 /* FoldSource.userDefined */) {\n this.setUserDefined(index, true);\n this.setRecovered(index, false);\n }\n else if (source === 2 /* FoldSource.recovered */) {\n this.setUserDefined(index, false);\n this.setRecovered(index, true);\n }\n else {\n this.setUserDefined(index, false);\n this.setRecovered(index, false);\n }\n }\n setCollapsedAllOfType(type, newState) {\n let hasChanged = false;\n if (this._types) {\n for (let i = 0; i < this._types.length; i++) {\n if (this._types[i] === type) {\n this.setCollapsed(i, newState);\n hasChanged = true;\n }\n }\n }\n return hasChanged;\n }\n toRegion(index) {\n return new FoldingRegion(this, index);\n }\n getParentIndex(index) {\n this.ensureParentIndices();\n const parent = ((this._startIndexes[index] & MASK_INDENT) >>> 24) + ((this._endIndexes[index] & MASK_INDENT) >>> 16);\n if (parent === MAX_FOLDING_REGIONS) {\n return -1;\n }\n return parent;\n }\n contains(index, line) {\n return this.getStartLineNumber(index) <= line && this.getEndLineNumber(index) >= line;\n }\n findIndex(line) {\n let low = 0, high = this._startIndexes.length;\n if (high === 0) {\n return -1; // no children\n }\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (line < this.getStartLineNumber(mid)) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n return low - 1;\n }\n findRange(line) {\n let index = this.findIndex(line);\n if (index >= 0) {\n const endLineNumber = this.getEndLineNumber(index);\n if (endLineNumber >= line) {\n return index;\n }\n index = this.getParentIndex(index);\n while (index !== -1) {\n if (this.contains(index, line)) {\n return index;\n }\n index = this.getParentIndex(index);\n }\n }\n return -1;\n }\n toString() {\n const res = [];\n for (let i = 0; i < this.length; i++) {\n res[i] = `[${this.sourceAbbr[this.getSource(i)]}${this.isCollapsed(i) ? '+' : '-'}] ${this.getStartLineNumber(i)}/${this.getEndLineNumber(i)}`;\n }\n return res.join(', ');\n }\n toFoldRange(index) {\n return {\n startLineNumber: this._startIndexes[index] & MAX_LINE_NUMBER,\n endLineNumber: this._endIndexes[index] & MAX_LINE_NUMBER,\n type: this._types ? this._types[index] : undefined,\n isCollapsed: this.isCollapsed(index),\n source: this.getSource(index)\n };\n }\n static fromFoldRanges(ranges) {\n const rangesLength = ranges.length;\n const startIndexes = new Uint32Array(rangesLength);\n const endIndexes = new Uint32Array(rangesLength);\n let types = [];\n let gotTypes = false;\n for (let i = 0; i < rangesLength; i++) {\n const range = ranges[i];\n startIndexes[i] = range.startLineNumber;\n endIndexes[i] = range.endLineNumber;\n types.push(range.type);\n if (range.type) {\n gotTypes = true;\n }\n }\n if (!gotTypes) {\n types = undefined;\n }\n const regions = new FoldingRegions(startIndexes, endIndexes, types);\n for (let i = 0; i < rangesLength; i++) {\n if (ranges[i].isCollapsed) {\n regions.setCollapsed(i, true);\n }\n regions.setSource(i, ranges[i].source);\n }\n return regions;\n }\n /**\n * Two inputs, each a FoldingRegions or a FoldRange[], are merged.\n * Each input must be pre-sorted on startLineNumber.\n * The first list is assumed to always include all regions currently defined by range providers.\n * The second list only contains the previously collapsed and all manual ranges.\n * If the line position matches, the range of the new range is taken, and the range is no longer manual\n * When an entry in one list overlaps an entry in the other, the second list's entry \"wins\" and\n * overlapping entries in the first list are discarded.\n * Invalid entries are discarded. An entry is invalid if:\n * \t\tthe start and end line numbers aren't a valid range of line numbers,\n * \t\tit is out of sequence or has the same start line as a preceding entry,\n * \t\tit overlaps a preceding entry and is not fully contained by that entry.\n */\n static sanitizeAndMerge(rangesA, rangesB, maxLineNumber) {\n maxLineNumber = maxLineNumber !== null && maxLineNumber !== void 0 ? maxLineNumber : Number.MAX_VALUE;\n const getIndexedFunction = (r, limit) => {\n return Array.isArray(r)\n ? ((i) => { return (i < limit) ? r[i] : undefined; })\n : ((i) => { return (i < limit) ? r.toFoldRange(i) : undefined; });\n };\n const getA = getIndexedFunction(rangesA, rangesA.length);\n const getB = getIndexedFunction(rangesB, rangesB.length);\n let indexA = 0;\n let indexB = 0;\n let nextA = getA(0);\n let nextB = getB(0);\n const stackedRanges = [];\n let topStackedRange;\n let prevLineNumber = 0;\n const resultRanges = [];\n while (nextA || nextB) {\n let useRange = undefined;\n if (nextB && (!nextA || nextA.startLineNumber >= nextB.startLineNumber)) {\n if (nextA && nextA.startLineNumber === nextB.startLineNumber) {\n if (nextB.source === 1 /* FoldSource.userDefined */) {\n // a user defined range (possibly unfolded)\n useRange = nextB;\n }\n else {\n // a previously folded range or a (possibly unfolded) recovered range\n useRange = nextA;\n useRange.isCollapsed = nextB.isCollapsed && nextA.endLineNumber === nextB.endLineNumber;\n useRange.source = 0 /* FoldSource.provider */;\n }\n nextA = getA(++indexA); // not necessary, just for speed\n }\n else {\n useRange = nextB;\n if (nextB.isCollapsed && nextB.source === 0 /* FoldSource.provider */) {\n // a previously collapsed range\n useRange.source = 2 /* FoldSource.recovered */;\n }\n }\n nextB = getB(++indexB);\n }\n else {\n // nextA is next. The user folded B set takes precedence and we sometimes need to look\n // ahead in it to check for an upcoming conflict.\n let scanIndex = indexB;\n let prescanB = nextB;\n while (true) {\n if (!prescanB || prescanB.startLineNumber > nextA.endLineNumber) {\n useRange = nextA;\n break; // no conflict, use this nextA\n }\n if (prescanB.source === 1 /* FoldSource.userDefined */ && prescanB.endLineNumber > nextA.endLineNumber) {\n // we found a user folded range, it wins\n break; // without setting nextResult, so this nextA gets skipped\n }\n prescanB = getB(++scanIndex);\n }\n nextA = getA(++indexA);\n }\n if (useRange) {\n while (topStackedRange\n && topStackedRange.endLineNumber < useRange.startLineNumber) {\n topStackedRange = stackedRanges.pop();\n }\n if (useRange.endLineNumber > useRange.startLineNumber\n && useRange.startLineNumber > prevLineNumber\n && useRange.endLineNumber <= maxLineNumber\n && (!topStackedRange\n || topStackedRange.endLineNumber >= useRange.endLineNumber)) {\n resultRanges.push(useRange);\n prevLineNumber = useRange.startLineNumber;\n if (topStackedRange) {\n stackedRanges.push(topStackedRange);\n }\n topStackedRange = useRange;\n }\n }\n }\n return resultRanges;\n }\n}\nexport class FoldingRegion {\n constructor(ranges, index) {\n this.ranges = ranges;\n this.index = index;\n }\n get startLineNumber() {\n return this.ranges.getStartLineNumber(this.index);\n }\n get endLineNumber() {\n return this.ranges.getEndLineNumber(this.index);\n }\n get regionIndex() {\n return this.index;\n }\n get parentIndex() {\n return this.ranges.getParentIndex(this.index);\n }\n get isCollapsed() {\n return this.ranges.isCollapsed(this.index);\n }\n containedBy(range) {\n return range.startLineNumber <= this.startLineNumber && range.endLineNumber >= this.endLineNumber;\n }\n containsLine(lineNumber) {\n return this.startLineNumber <= lineNumber && lineNumber <= this.endLineNumber;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../base/common/event.js';\nimport { FoldingRegions } from './foldingRanges.js';\nimport { hash } from '../../../../base/common/hash.js';\nexport class FoldingModel {\n constructor(textModel, decorationProvider) {\n this._updateEventEmitter = new Emitter();\n this.onDidChange = this._updateEventEmitter.event;\n this._textModel = textModel;\n this._decorationProvider = decorationProvider;\n this._regions = new FoldingRegions(new Uint32Array(0), new Uint32Array(0));\n this._editorDecorationIds = [];\n }\n get regions() { return this._regions; }\n get textModel() { return this._textModel; }\n toggleCollapseState(toggledRegions) {\n if (!toggledRegions.length) {\n return;\n }\n toggledRegions = toggledRegions.sort((r1, r2) => r1.regionIndex - r2.regionIndex);\n const processed = {};\n this._decorationProvider.changeDecorations(accessor => {\n let k = 0; // index from [0 ... this.regions.length]\n let dirtyRegionEndLine = -1; // end of the range where decorations need to be updated\n let lastHiddenLine = -1; // the end of the last hidden lines\n const updateDecorationsUntil = (index) => {\n while (k < index) {\n const endLineNumber = this._regions.getEndLineNumber(k);\n const isCollapsed = this._regions.isCollapsed(k);\n if (endLineNumber <= dirtyRegionEndLine) {\n const isManual = this.regions.getSource(k) !== 0 /* FoldSource.provider */;\n accessor.changeDecorationOptions(this._editorDecorationIds[k], this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine, isManual));\n }\n if (isCollapsed && endLineNumber > lastHiddenLine) {\n lastHiddenLine = endLineNumber;\n }\n k++;\n }\n };\n for (const region of toggledRegions) {\n const index = region.regionIndex;\n const editorDecorationId = this._editorDecorationIds[index];\n if (editorDecorationId && !processed[editorDecorationId]) {\n processed[editorDecorationId] = true;\n updateDecorationsUntil(index); // update all decorations up to current index using the old dirtyRegionEndLine\n const newCollapseState = !this._regions.isCollapsed(index);\n this._regions.setCollapsed(index, newCollapseState);\n dirtyRegionEndLine = Math.max(dirtyRegionEndLine, this._regions.getEndLineNumber(index));\n }\n }\n updateDecorationsUntil(this._regions.length);\n });\n this._updateEventEmitter.fire({ model: this, collapseStateChanged: toggledRegions });\n }\n removeManualRanges(ranges) {\n const newFoldingRanges = new Array();\n const intersects = (foldRange) => {\n for (const range of ranges) {\n if (!(range.startLineNumber > foldRange.endLineNumber || foldRange.startLineNumber > range.endLineNumber)) {\n return true;\n }\n }\n return false;\n };\n for (let i = 0; i < this._regions.length; i++) {\n const foldRange = this._regions.toFoldRange(i);\n if (foldRange.source === 0 /* FoldSource.provider */ || !intersects(foldRange)) {\n newFoldingRanges.push(foldRange);\n }\n }\n this.updatePost(FoldingRegions.fromFoldRanges(newFoldingRanges));\n }\n update(newRegions, blockedLineNumers = []) {\n const foldedOrManualRanges = this._currentFoldedOrManualRanges(blockedLineNumers);\n const newRanges = FoldingRegions.sanitizeAndMerge(newRegions, foldedOrManualRanges, this._textModel.getLineCount());\n this.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n }\n updatePost(newRegions) {\n const newEditorDecorations = [];\n let lastHiddenLine = -1;\n for (let index = 0, limit = newRegions.length; index < limit; index++) {\n const startLineNumber = newRegions.getStartLineNumber(index);\n const endLineNumber = newRegions.getEndLineNumber(index);\n const isCollapsed = newRegions.isCollapsed(index);\n const isManual = newRegions.getSource(index) !== 0 /* FoldSource.provider */;\n const decorationRange = {\n startLineNumber: startLineNumber,\n startColumn: this._textModel.getLineMaxColumn(startLineNumber),\n endLineNumber: endLineNumber,\n endColumn: this._textModel.getLineMaxColumn(endLineNumber) + 1\n };\n newEditorDecorations.push({ range: decorationRange, options: this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine, isManual) });\n if (isCollapsed && endLineNumber > lastHiddenLine) {\n lastHiddenLine = endLineNumber;\n }\n }\n this._decorationProvider.changeDecorations(accessor => this._editorDecorationIds = accessor.deltaDecorations(this._editorDecorationIds, newEditorDecorations));\n this._regions = newRegions;\n this._updateEventEmitter.fire({ model: this });\n }\n _currentFoldedOrManualRanges(blockedLineNumers = []) {\n const isBlocked = (startLineNumber, endLineNumber) => {\n for (const blockedLineNumber of blockedLineNumers) {\n if (startLineNumber < blockedLineNumber && blockedLineNumber <= endLineNumber) { // first line is visible\n return true;\n }\n }\n return false;\n };\n const foldedRanges = [];\n for (let i = 0, limit = this._regions.length; i < limit; i++) {\n let isCollapsed = this.regions.isCollapsed(i);\n const source = this.regions.getSource(i);\n if (isCollapsed || source !== 0 /* FoldSource.provider */) {\n const foldRange = this._regions.toFoldRange(i);\n const decRange = this._textModel.getDecorationRange(this._editorDecorationIds[i]);\n if (decRange) {\n if (isCollapsed && (isBlocked(decRange.startLineNumber, decRange.endLineNumber) || decRange.endLineNumber - decRange.startLineNumber !== foldRange.endLineNumber - foldRange.startLineNumber)) {\n isCollapsed = false; // uncollapse is the range is blocked or there has been lines removed or added\n }\n foldedRanges.push({\n startLineNumber: decRange.startLineNumber,\n endLineNumber: decRange.endLineNumber,\n type: foldRange.type,\n isCollapsed,\n source\n });\n }\n }\n }\n return foldedRanges;\n }\n /**\n * Collapse state memento, for persistence only\n */\n getMemento() {\n const foldedOrManualRanges = this._currentFoldedOrManualRanges();\n const result = [];\n for (let i = 0, limit = foldedOrManualRanges.length; i < limit; i++) {\n const range = foldedOrManualRanges[i];\n const checksum = this._getLinesChecksum(range.startLineNumber + 1, range.endLineNumber);\n result.push({\n startLineNumber: range.startLineNumber,\n endLineNumber: range.endLineNumber,\n isCollapsed: range.isCollapsed,\n source: range.source,\n checksum: checksum\n });\n }\n return (result.length > 0) ? result : undefined;\n }\n /**\n * Apply persisted state, for persistence only\n */\n applyMemento(state) {\n var _a, _b;\n if (!Array.isArray(state)) {\n return;\n }\n const rangesToRestore = [];\n const maxLineNumber = this._textModel.getLineCount();\n for (const range of state) {\n if (range.startLineNumber >= range.endLineNumber || range.startLineNumber < 1 || range.endLineNumber > maxLineNumber) {\n continue;\n }\n const checksum = this._getLinesChecksum(range.startLineNumber + 1, range.endLineNumber);\n if (!range.checksum || checksum === range.checksum) {\n rangesToRestore.push({\n startLineNumber: range.startLineNumber,\n endLineNumber: range.endLineNumber,\n type: undefined,\n isCollapsed: (_a = range.isCollapsed) !== null && _a !== void 0 ? _a : true,\n source: (_b = range.source) !== null && _b !== void 0 ? _b : 0 /* FoldSource.provider */\n });\n }\n }\n const newRanges = FoldingRegions.sanitizeAndMerge(this._regions, rangesToRestore, maxLineNumber);\n this.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n }\n _getLinesChecksum(lineNumber1, lineNumber2) {\n const h = hash(this._textModel.getLineContent(lineNumber1)\n + this._textModel.getLineContent(lineNumber2));\n return h % 1000000; // 6 digits is plenty\n }\n dispose() {\n this._decorationProvider.removeDecorations(this._editorDecorationIds);\n }\n getAllRegionsAtLine(lineNumber, filter) {\n const result = [];\n if (this._regions) {\n let index = this._regions.findRange(lineNumber);\n let level = 1;\n while (index >= 0) {\n const current = this._regions.toRegion(index);\n if (!filter || filter(current, level)) {\n result.push(current);\n }\n level++;\n index = current.parentIndex;\n }\n }\n return result;\n }\n getRegionAtLine(lineNumber) {\n if (this._regions) {\n const index = this._regions.findRange(lineNumber);\n if (index >= 0) {\n return this._regions.toRegion(index);\n }\n }\n return null;\n }\n getRegionsInside(region, filter) {\n const result = [];\n const index = region ? region.regionIndex + 1 : 0;\n const endLineNumber = region ? region.endLineNumber : Number.MAX_VALUE;\n if (filter && filter.length === 2) {\n const levelStack = [];\n for (let i = index, len = this._regions.length; i < len; i++) {\n const current = this._regions.toRegion(i);\n if (this._regions.getStartLineNumber(i) < endLineNumber) {\n while (levelStack.length > 0 && !current.containedBy(levelStack[levelStack.length - 1])) {\n levelStack.pop();\n }\n levelStack.push(current);\n if (filter(current, levelStack.length)) {\n result.push(current);\n }\n }\n else {\n break;\n }\n }\n }\n else {\n for (let i = index, len = this._regions.length; i < len; i++) {\n const current = this._regions.toRegion(i);\n if (this._regions.getStartLineNumber(i) < endLineNumber) {\n if (!filter || filter(current)) {\n result.push(current);\n }\n }\n else {\n break;\n }\n }\n }\n return result;\n }\n}\n/**\n * Collapse or expand the regions at the given locations\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\n */\nexport function toggleCollapseState(foldingModel, levels, lineNumbers) {\n const toToggle = [];\n for (const lineNumber of lineNumbers) {\n const region = foldingModel.getRegionAtLine(lineNumber);\n if (region) {\n const doCollapse = !region.isCollapsed;\n toToggle.push(region);\n if (levels > 1) {\n const regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\n toToggle.push(...regionsInside);\n }\n }\n }\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Collapse or expand the regions at the given locations including all children.\n * @param doCollapse Whether to collapse or expand\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\n */\nexport function setCollapseStateLevelsDown(foldingModel, doCollapse, levels = Number.MAX_VALUE, lineNumbers) {\n const toToggle = [];\n if (lineNumbers && lineNumbers.length > 0) {\n for (const lineNumber of lineNumbers) {\n const region = foldingModel.getRegionAtLine(lineNumber);\n if (region) {\n if (region.isCollapsed !== doCollapse) {\n toToggle.push(region);\n }\n if (levels > 1) {\n const regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\n toToggle.push(...regionsInside);\n }\n }\n }\n }\n else {\n const regionsInside = foldingModel.getRegionsInside(null, (r, level) => r.isCollapsed !== doCollapse && level < levels);\n toToggle.push(...regionsInside);\n }\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Collapse or expand the regions at the given locations including all parents.\n * @param doCollapse Whether to collapse or expand\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\n * @param lineNumbers the location of the regions to collapse or expand.\n */\nexport function setCollapseStateLevelsUp(foldingModel, doCollapse, levels, lineNumbers) {\n const toToggle = [];\n for (const lineNumber of lineNumbers) {\n const regions = foldingModel.getAllRegionsAtLine(lineNumber, (region, level) => region.isCollapsed !== doCollapse && level <= levels);\n toToggle.push(...regions);\n }\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Collapse or expand a region at the given locations. If the inner most region is already collapsed/expanded, uses the first parent instead.\n * @param doCollapse Whether to collapse or expand\n * @param lineNumbers the location of the regions to collapse or expand.\n */\nexport function setCollapseStateUp(foldingModel, doCollapse, lineNumbers) {\n const toToggle = [];\n for (const lineNumber of lineNumbers) {\n const regions = foldingModel.getAllRegionsAtLine(lineNumber, (region) => region.isCollapsed !== doCollapse);\n if (regions.length > 0) {\n toToggle.push(regions[0]);\n }\n }\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds or unfolds all regions that have a given level, except if they contain one of the blocked lines.\n * @param foldLevel level. Level == 1 is the top level\n * @param doCollapse Whether to collapse or expand\n*/\nexport function setCollapseStateAtLevel(foldingModel, foldLevel, doCollapse, blockedLineNumbers) {\n const filter = (region, level) => level === foldLevel && region.isCollapsed !== doCollapse && !blockedLineNumbers.some(line => region.containsLine(line));\n const toToggle = foldingModel.getRegionsInside(null, filter);\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds or unfolds all regions, except if they contain or are contained by a region of one of the blocked lines.\n * @param doCollapse Whether to collapse or expand\n * @param blockedLineNumbers the location of regions to not collapse or expand\n */\nexport function setCollapseStateForRest(foldingModel, doCollapse, blockedLineNumbers) {\n const filteredRegions = [];\n for (const lineNumber of blockedLineNumbers) {\n const regions = foldingModel.getAllRegionsAtLine(lineNumber, undefined);\n if (regions.length > 0) {\n filteredRegions.push(regions[0]);\n }\n }\n const filter = (region) => filteredRegions.every((filteredRegion) => !filteredRegion.containedBy(region) && !region.containedBy(filteredRegion)) && region.isCollapsed !== doCollapse;\n const toToggle = foldingModel.getRegionsInside(null, filter);\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds all regions for which the lines start with a given regex\n * @param foldingModel the folding model\n */\nexport function setCollapseStateForMatchingLines(foldingModel, regExp, doCollapse) {\n const editorModel = foldingModel.textModel;\n const regions = foldingModel.regions;\n const toToggle = [];\n for (let i = regions.length - 1; i >= 0; i--) {\n if (doCollapse !== regions.isCollapsed(i)) {\n const startLineNumber = regions.getStartLineNumber(i);\n if (regExp.test(editorModel.getLineContent(startLineNumber))) {\n toToggle.push(regions.toRegion(i));\n }\n }\n }\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Folds all regions of the given type\n * @param foldingModel the folding model\n */\nexport function setCollapseStateForType(foldingModel, type, doCollapse) {\n const regions = foldingModel.regions;\n const toToggle = [];\n for (let i = regions.length - 1; i >= 0; i--) {\n if (doCollapse !== regions.isCollapsed(i) && type === regions.getType(i)) {\n toToggle.push(regions.toRegion(i));\n }\n }\n foldingModel.toggleCollapseState(toToggle);\n}\n/**\n * Get line to go to for parent fold of current line\n * @param lineNumber the current line number\n * @param foldingModel the folding model\n *\n * @return Parent fold start line\n */\nexport function getParentFoldLine(lineNumber, foldingModel) {\n let startLineNumber = null;\n const foldingRegion = foldingModel.getRegionAtLine(lineNumber);\n if (foldingRegion !== null) {\n startLineNumber = foldingRegion.startLineNumber;\n // If current line is not the start of the current fold, go to top line of current fold. If not, go to parent fold\n if (lineNumber === startLineNumber) {\n const parentFoldingIdx = foldingRegion.parentIndex;\n if (parentFoldingIdx !== -1) {\n startLineNumber = foldingModel.regions.getStartLineNumber(parentFoldingIdx);\n }\n else {\n startLineNumber = null;\n }\n }\n }\n return startLineNumber;\n}\n/**\n * Get line to go to for previous fold at the same level of current line\n * @param lineNumber the current line number\n * @param foldingModel the folding model\n *\n * @return Previous fold start line\n */\nexport function getPreviousFoldLine(lineNumber, foldingModel) {\n let foldingRegion = foldingModel.getRegionAtLine(lineNumber);\n // If on the folding range start line, go to previous sibling.\n if (foldingRegion !== null && foldingRegion.startLineNumber === lineNumber) {\n // If current line is not the start of the current fold, go to top line of current fold. If not, go to previous fold.\n if (lineNumber !== foldingRegion.startLineNumber) {\n return foldingRegion.startLineNumber;\n }\n else {\n // Find min line number to stay within parent.\n const expectedParentIndex = foldingRegion.parentIndex;\n let minLineNumber = 0;\n if (expectedParentIndex !== -1) {\n minLineNumber = foldingModel.regions.getStartLineNumber(foldingRegion.parentIndex);\n }\n // Find fold at same level.\n while (foldingRegion !== null) {\n if (foldingRegion.regionIndex > 0) {\n foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex - 1);\n // Keep at same level.\n if (foldingRegion.startLineNumber <= minLineNumber) {\n return null;\n }\n else if (foldingRegion.parentIndex === expectedParentIndex) {\n return foldingRegion.startLineNumber;\n }\n }\n else {\n return null;\n }\n }\n }\n }\n else {\n // Go to last fold that's before the current line.\n if (foldingModel.regions.length > 0) {\n foldingRegion = foldingModel.regions.toRegion(foldingModel.regions.length - 1);\n while (foldingRegion !== null) {\n // Found fold before current line.\n if (foldingRegion.startLineNumber < lineNumber) {\n return foldingRegion.startLineNumber;\n }\n if (foldingRegion.regionIndex > 0) {\n foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex - 1);\n }\n else {\n foldingRegion = null;\n }\n }\n }\n }\n return null;\n}\n/**\n * Get line to go to next fold at the same level of current line\n * @param lineNumber the current line number\n * @param foldingModel the folding model\n *\n * @return Next fold start line\n */\nexport function getNextFoldLine(lineNumber, foldingModel) {\n let foldingRegion = foldingModel.getRegionAtLine(lineNumber);\n // If on the folding range start line, go to next sibling.\n if (foldingRegion !== null && foldingRegion.startLineNumber === lineNumber) {\n // Find max line number to stay within parent.\n const expectedParentIndex = foldingRegion.parentIndex;\n let maxLineNumber = 0;\n if (expectedParentIndex !== -1) {\n maxLineNumber = foldingModel.regions.getEndLineNumber(foldingRegion.parentIndex);\n }\n else if (foldingModel.regions.length === 0) {\n return null;\n }\n else {\n maxLineNumber = foldingModel.regions.getEndLineNumber(foldingModel.regions.length - 1);\n }\n // Find fold at same level.\n while (foldingRegion !== null) {\n if (foldingRegion.regionIndex < foldingModel.regions.length) {\n foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex + 1);\n // Keep at same level.\n if (foldingRegion.startLineNumber >= maxLineNumber) {\n return null;\n }\n else if (foldingRegion.parentIndex === expectedParentIndex) {\n return foldingRegion.startLineNumber;\n }\n }\n else {\n return null;\n }\n }\n }\n else {\n // Go to first fold that's after the current line.\n if (foldingModel.regions.length > 0) {\n foldingRegion = foldingModel.regions.toRegion(0);\n while (foldingRegion !== null) {\n // Found fold after current line.\n if (foldingRegion.startLineNumber > lineNumber) {\n return foldingRegion.startLineNumber;\n }\n if (foldingRegion.regionIndex < foldingModel.regions.length) {\n foldingRegion = foldingModel.regions.toRegion(foldingRegion.regionIndex + 1);\n }\n else {\n foldingRegion = null;\n }\n }\n }\n }\n return null;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { findFirstInSorted } from '../../../../base/common/arrays.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Range } from '../../../common/core/range.js';\nimport { countEOL } from '../../../common/core/eolCounter.js';\nexport class HiddenRangeModel {\n constructor(model) {\n this._updateEventEmitter = new Emitter();\n this._hasLineChanges = false;\n this._foldingModel = model;\n this._foldingModelListener = model.onDidChange(_ => this.updateHiddenRanges());\n this._hiddenRanges = [];\n if (model.regions.length) {\n this.updateHiddenRanges();\n }\n }\n get onDidChange() { return this._updateEventEmitter.event; }\n get hiddenRanges() { return this._hiddenRanges; }\n notifyChangeModelContent(e) {\n if (this._hiddenRanges.length && !this._hasLineChanges) {\n this._hasLineChanges = e.changes.some(change => {\n return change.range.endLineNumber !== change.range.startLineNumber || countEOL(change.text)[0] !== 0;\n });\n }\n }\n updateHiddenRanges() {\n let updateHiddenAreas = false;\n const newHiddenAreas = [];\n let i = 0; // index into hidden\n let k = 0;\n let lastCollapsedStart = Number.MAX_VALUE;\n let lastCollapsedEnd = -1;\n const ranges = this._foldingModel.regions;\n for (; i < ranges.length; i++) {\n if (!ranges.isCollapsed(i)) {\n continue;\n }\n const startLineNumber = ranges.getStartLineNumber(i) + 1; // the first line is not hidden\n const endLineNumber = ranges.getEndLineNumber(i);\n if (lastCollapsedStart <= startLineNumber && endLineNumber <= lastCollapsedEnd) {\n // ignore ranges contained in collapsed regions\n continue;\n }\n if (!updateHiddenAreas && k < this._hiddenRanges.length && this._hiddenRanges[k].startLineNumber === startLineNumber && this._hiddenRanges[k].endLineNumber === endLineNumber) {\n // reuse the old ranges\n newHiddenAreas.push(this._hiddenRanges[k]);\n k++;\n }\n else {\n updateHiddenAreas = true;\n newHiddenAreas.push(new Range(startLineNumber, 1, endLineNumber, 1));\n }\n lastCollapsedStart = startLineNumber;\n lastCollapsedEnd = endLineNumber;\n }\n if (this._hasLineChanges || updateHiddenAreas || k < this._hiddenRanges.length) {\n this.applyHiddenRanges(newHiddenAreas);\n }\n }\n applyHiddenRanges(newHiddenAreas) {\n this._hiddenRanges = newHiddenAreas;\n this._hasLineChanges = false;\n this._updateEventEmitter.fire(newHiddenAreas);\n }\n hasRanges() {\n return this._hiddenRanges.length > 0;\n }\n isHidden(line) {\n return findRange(this._hiddenRanges, line) !== null;\n }\n adjustSelections(selections) {\n let hasChanges = false;\n const editorModel = this._foldingModel.textModel;\n let lastRange = null;\n const adjustLine = (line) => {\n if (!lastRange || !isInside(line, lastRange)) {\n lastRange = findRange(this._hiddenRanges, line);\n }\n if (lastRange) {\n return lastRange.startLineNumber - 1;\n }\n return null;\n };\n for (let i = 0, len = selections.length; i < len; i++) {\n let selection = selections[i];\n const adjustedStartLine = adjustLine(selection.startLineNumber);\n if (adjustedStartLine) {\n selection = selection.setStartPosition(adjustedStartLine, editorModel.getLineMaxColumn(adjustedStartLine));\n hasChanges = true;\n }\n const adjustedEndLine = adjustLine(selection.endLineNumber);\n if (adjustedEndLine) {\n selection = selection.setEndPosition(adjustedEndLine, editorModel.getLineMaxColumn(adjustedEndLine));\n hasChanges = true;\n }\n selections[i] = selection;\n }\n return hasChanges;\n }\n dispose() {\n if (this.hiddenRanges.length > 0) {\n this._hiddenRanges = [];\n this._updateEventEmitter.fire(this._hiddenRanges);\n }\n if (this._foldingModelListener) {\n this._foldingModelListener.dispose();\n this._foldingModelListener = null;\n }\n }\n}\nfunction isInside(line, range) {\n return line >= range.startLineNumber && line <= range.endLineNumber;\n}\nfunction findRange(ranges, line) {\n const i = findFirstInSorted(ranges, r => line < r.startLineNumber) - 1;\n if (i >= 0 && ranges[i].endLineNumber >= line) {\n return ranges[i];\n }\n return null;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { computeIndentLevel } from '../../../common/model/utils.js';\nimport { FoldingRegions, MAX_LINE_NUMBER } from './foldingRanges.js';\nconst MAX_FOLDING_REGIONS_FOR_INDENT_DEFAULT = 5000;\nexport const ID_INDENT_PROVIDER = 'indent';\nexport class IndentRangeProvider {\n constructor(editorModel, languageConfigurationService, maxFoldingRegions) {\n this.editorModel = editorModel;\n this.languageConfigurationService = languageConfigurationService;\n this.maxFoldingRegions = maxFoldingRegions;\n this.id = ID_INDENT_PROVIDER;\n }\n dispose() { }\n compute(cancelationToken, notifyTooManyRegions) {\n const foldingRules = this.languageConfigurationService.getLanguageConfiguration(this.editorModel.getLanguageId()).foldingRules;\n const offSide = foldingRules && !!foldingRules.offSide;\n const markers = foldingRules && foldingRules.markers;\n return Promise.resolve(computeRanges(this.editorModel, offSide, markers, this.maxFoldingRegions, notifyTooManyRegions));\n }\n}\n// public only for testing\nexport class RangesCollector {\n constructor(foldingRangesLimit, _notifyTooManyRegions) {\n this._notifyTooManyRegions = _notifyTooManyRegions;\n this._startIndexes = [];\n this._endIndexes = [];\n this._indentOccurrences = [];\n this._length = 0;\n this._foldingRangesLimit = foldingRangesLimit;\n }\n insertFirst(startLineNumber, endLineNumber, indent) {\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\n return;\n }\n const index = this._length;\n this._startIndexes[index] = startLineNumber;\n this._endIndexes[index] = endLineNumber;\n this._length++;\n if (indent < 1000) {\n this._indentOccurrences[indent] = (this._indentOccurrences[indent] || 0) + 1;\n }\n }\n toIndentRanges(model) {\n var _a;\n if (this._length <= this._foldingRangesLimit) {\n // reverse and create arrays of the exact length\n const startIndexes = new Uint32Array(this._length);\n const endIndexes = new Uint32Array(this._length);\n for (let i = this._length - 1, k = 0; i >= 0; i--, k++) {\n startIndexes[k] = this._startIndexes[i];\n endIndexes[k] = this._endIndexes[i];\n }\n return new FoldingRegions(startIndexes, endIndexes);\n }\n else {\n (_a = this._notifyTooManyRegions) === null || _a === void 0 ? void 0 : _a.call(this, this._foldingRangesLimit);\n let entries = 0;\n let maxIndent = this._indentOccurrences.length;\n for (let i = 0; i < this._indentOccurrences.length; i++) {\n const n = this._indentOccurrences[i];\n if (n) {\n if (n + entries > this._foldingRangesLimit) {\n maxIndent = i;\n break;\n }\n entries += n;\n }\n }\n const tabSize = model.getOptions().tabSize;\n // reverse and create arrays of the exact length\n const startIndexes = new Uint32Array(this._foldingRangesLimit);\n const endIndexes = new Uint32Array(this._foldingRangesLimit);\n for (let i = this._length - 1, k = 0; i >= 0; i--) {\n const startIndex = this._startIndexes[i];\n const lineContent = model.getLineContent(startIndex);\n const indent = computeIndentLevel(lineContent, tabSize);\n if (indent < maxIndent || (indent === maxIndent && entries++ < this._foldingRangesLimit)) {\n startIndexes[k] = startIndex;\n endIndexes[k] = this._endIndexes[i];\n k++;\n }\n }\n return new FoldingRegions(startIndexes, endIndexes);\n }\n }\n}\nexport function computeRanges(model, offSide, markers, foldingRangesLimit, notifyTooManyRegions) {\n const tabSize = model.getOptions().tabSize;\n foldingRangesLimit = foldingRangesLimit !== null && foldingRangesLimit !== void 0 ? foldingRangesLimit : MAX_FOLDING_REGIONS_FOR_INDENT_DEFAULT;\n const result = new RangesCollector(foldingRangesLimit, notifyTooManyRegions);\n let pattern = undefined;\n if (markers) {\n pattern = new RegExp(`(${markers.start.source})|(?:${markers.end.source})`);\n }\n const previousRegions = [];\n const line = model.getLineCount() + 1;\n previousRegions.push({ indent: -1, endAbove: line, line }); // sentinel, to make sure there's at least one entry\n for (let line = model.getLineCount(); line > 0; line--) {\n const lineContent = model.getLineContent(line);\n const indent = computeIndentLevel(lineContent, tabSize);\n let previous = previousRegions[previousRegions.length - 1];\n if (indent === -1) {\n if (offSide) {\n // for offSide languages, empty lines are associated to the previous block\n // note: the next block is already written to the results, so this only\n // impacts the end position of the block before\n previous.endAbove = line;\n }\n continue; // only whitespace\n }\n let m;\n if (pattern && (m = lineContent.match(pattern))) {\n // folding pattern match\n if (m[1]) { // start pattern match\n // discard all regions until the folding pattern\n let i = previousRegions.length - 1;\n while (i > 0 && previousRegions[i].indent !== -2) {\n i--;\n }\n if (i > 0) {\n previousRegions.length = i + 1;\n previous = previousRegions[i];\n // new folding range from pattern, includes the end line\n result.insertFirst(line, previous.line, indent);\n previous.line = line;\n previous.indent = indent;\n previous.endAbove = line;\n continue;\n }\n else {\n // no end marker found, treat line as a regular line\n }\n }\n else { // end pattern match\n previousRegions.push({ indent: -2, endAbove: line, line });\n continue;\n }\n }\n if (previous.indent > indent) {\n // discard all regions with larger indent\n do {\n previousRegions.pop();\n previous = previousRegions[previousRegions.length - 1];\n } while (previous.indent > indent);\n // new folding range\n const endLineNumber = previous.endAbove - 1;\n if (endLineNumber - line >= 1) { // needs at east size 1\n result.insertFirst(line, endLineNumber, indent);\n }\n }\n if (previous.indent === indent) {\n previous.endAbove = line;\n }\n else { // previous.indent < indent\n // new region with a bigger indent\n previousRegions.push({ indent, endAbove: line, line });\n }\n }\n return result.toIndentRanges(model);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { localize } from '../../../../nls.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { ThemeIcon } from '../../../../platform/theme/common/themeService.js';\nexport const foldingExpandedIcon = registerIcon('folding-expanded', Codicon.chevronDown, localize('foldingExpandedIcon', 'Icon for expanded ranges in the editor glyph margin.'));\nexport const foldingCollapsedIcon = registerIcon('folding-collapsed', Codicon.chevronRight, localize('foldingCollapsedIcon', 'Icon for collapsed ranges in the editor glyph margin.'));\nexport const foldingManualCollapsedIcon = registerIcon('folding-manual-collapsed', foldingCollapsedIcon, localize('foldingManualCollapedIcon', 'Icon for manually collapsed ranges in the editor glyph margin.'));\nexport const foldingManualExpandedIcon = registerIcon('folding-manual-expanded', foldingExpandedIcon, localize('foldingManualExpandedIcon', 'Icon for manually expanded ranges in the editor glyph margin.'));\nexport class FoldingDecorationProvider {\n constructor(editor) {\n this.editor = editor;\n this.showFoldingControls = 'mouseover';\n this.showFoldingHighlights = true;\n }\n getDecorationOption(isCollapsed, isHidden, isManual) {\n if (isHidden // is inside another collapsed region\n || this.showFoldingControls === 'never') {\n return FoldingDecorationProvider.HIDDEN_RANGE_DECORATION;\n }\n if (isCollapsed) {\n return isManual ?\n (this.showFoldingHighlights ? FoldingDecorationProvider.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION : FoldingDecorationProvider.MANUALLY_COLLAPSED_VISUAL_DECORATION)\n : (this.showFoldingHighlights ? FoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION : FoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION);\n }\n else if (this.showFoldingControls === 'mouseover') {\n return isManual ? FoldingDecorationProvider.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION : FoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION;\n }\n else {\n return isManual ? FoldingDecorationProvider.MANUALLY_EXPANDED_VISUAL_DECORATION : FoldingDecorationProvider.EXPANDED_VISUAL_DECORATION;\n }\n }\n changeDecorations(callback) {\n return this.editor.changeDecorations(callback);\n }\n removeDecorations(decorationIds) {\n this.editor.removeDecorations(decorationIds);\n }\n}\nFoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-collapsed-visual-decoration',\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n afterContentClassName: 'inline-folded',\n isWholeLine: true,\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingCollapsedIcon)\n});\nFoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-collapsed-highlighted-visual-decoration',\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n afterContentClassName: 'inline-folded',\n className: 'folded-background',\n isWholeLine: true,\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingCollapsedIcon)\n});\nFoldingDecorationProvider.MANUALLY_COLLAPSED_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-manually-collapsed-visual-decoration',\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n afterContentClassName: 'inline-folded',\n isWholeLine: true,\n firstLineDecorationClassName: 'alwaysShowFoldIcons ' + ThemeIcon.asClassName(foldingExpandedIcon)\n});\nFoldingDecorationProvider.MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-manually-collapsed-highlighted-visual-decoration',\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n afterContentClassName: 'inline-folded',\n className: 'folded-background',\n isWholeLine: true,\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingManualCollapsedIcon)\n});\nFoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-expanded-auto-hide-visual-decoration',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n isWholeLine: true,\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingExpandedIcon)\n});\nFoldingDecorationProvider.EXPANDED_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-expanded-visual-decoration',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n isWholeLine: true,\n firstLineDecorationClassName: 'alwaysShowFoldIcons ' + ThemeIcon.asClassName(foldingExpandedIcon)\n});\nFoldingDecorationProvider.MANUALLY_EXPANDED_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-manually-expanded-visual-decoration',\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n isWholeLine: true,\n firstLineDecorationClassName: 'alwaysShowFoldIcons ' + ThemeIcon.asClassName(foldingManualExpandedIcon)\n});\nFoldingDecorationProvider.MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION = ModelDecorationOptions.register({\n description: 'folding-manually-expanded-visual-decoration',\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n isWholeLine: true,\n firstLineDecorationClassName: ThemeIcon.asClassName(foldingManualExpandedIcon)\n});\nFoldingDecorationProvider.HIDDEN_RANGE_DECORATION = ModelDecorationOptions.register({\n description: 'folding-hidden-range-decoration',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { FoldingRegions, MAX_LINE_NUMBER } from './foldingRanges.js';\nconst foldingContext = {};\nexport const ID_SYNTAX_PROVIDER = 'syntax';\nexport class SyntaxRangeProvider {\n constructor(editorModel, providers, handleFoldingRangesChange, limit) {\n this.editorModel = editorModel;\n this.providers = providers;\n this.limit = limit;\n this.id = ID_SYNTAX_PROVIDER;\n for (const provider of providers) {\n if (typeof provider.onDidChange === 'function') {\n if (!this.disposables) {\n this.disposables = new DisposableStore();\n }\n this.disposables.add(provider.onDidChange(handleFoldingRangesChange));\n }\n }\n }\n compute(cancellationToken, notifyTooManyRegions) {\n return collectSyntaxRanges(this.providers, this.editorModel, cancellationToken).then(ranges => {\n if (ranges) {\n const res = sanitizeRanges(ranges, this.limit, notifyTooManyRegions);\n return res;\n }\n return null;\n });\n }\n dispose() {\n var _a;\n (_a = this.disposables) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n}\nfunction collectSyntaxRanges(providers, model, cancellationToken) {\n let rangeData = null;\n const promises = providers.map((provider, i) => {\n return Promise.resolve(provider.provideFoldingRanges(model, foldingContext, cancellationToken)).then(ranges => {\n if (cancellationToken.isCancellationRequested) {\n return;\n }\n if (Array.isArray(ranges)) {\n if (!Array.isArray(rangeData)) {\n rangeData = [];\n }\n const nLines = model.getLineCount();\n for (const r of ranges) {\n if (r.start > 0 && r.end > r.start && r.end <= nLines) {\n rangeData.push({ start: r.start, end: r.end, rank: i, kind: r.kind });\n }\n }\n }\n }, onUnexpectedExternalError);\n });\n return Promise.all(promises).then(_ => {\n return rangeData;\n });\n}\nexport class RangesCollector {\n constructor(foldingRangesLimit, _notifyTooManyRegions) {\n this._notifyTooManyRegions = _notifyTooManyRegions;\n this._startIndexes = [];\n this._endIndexes = [];\n this._nestingLevels = [];\n this._nestingLevelCounts = [];\n this._types = [];\n this._length = 0;\n this._foldingRangesLimit = foldingRangesLimit;\n }\n add(startLineNumber, endLineNumber, type, nestingLevel) {\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\n return;\n }\n const index = this._length;\n this._startIndexes[index] = startLineNumber;\n this._endIndexes[index] = endLineNumber;\n this._nestingLevels[index] = nestingLevel;\n this._types[index] = type;\n this._length++;\n if (nestingLevel < 30) {\n this._nestingLevelCounts[nestingLevel] = (this._nestingLevelCounts[nestingLevel] || 0) + 1;\n }\n }\n toIndentRanges() {\n var _a;\n if (this._length <= this._foldingRangesLimit) {\n const startIndexes = new Uint32Array(this._length);\n const endIndexes = new Uint32Array(this._length);\n for (let i = 0; i < this._length; i++) {\n startIndexes[i] = this._startIndexes[i];\n endIndexes[i] = this._endIndexes[i];\n }\n return new FoldingRegions(startIndexes, endIndexes, this._types);\n }\n else {\n (_a = this._notifyTooManyRegions) === null || _a === void 0 ? void 0 : _a.call(this, this._foldingRangesLimit);\n let entries = 0;\n let maxLevel = this._nestingLevelCounts.length;\n for (let i = 0; i < this._nestingLevelCounts.length; i++) {\n const n = this._nestingLevelCounts[i];\n if (n) {\n if (n + entries > this._foldingRangesLimit) {\n maxLevel = i;\n break;\n }\n entries += n;\n }\n }\n const startIndexes = new Uint32Array(this._foldingRangesLimit);\n const endIndexes = new Uint32Array(this._foldingRangesLimit);\n const types = [];\n for (let i = 0, k = 0; i < this._length; i++) {\n const level = this._nestingLevels[i];\n if (level < maxLevel || (level === maxLevel && entries++ < this._foldingRangesLimit)) {\n startIndexes[k] = this._startIndexes[i];\n endIndexes[k] = this._endIndexes[i];\n types[k] = this._types[i];\n k++;\n }\n }\n return new FoldingRegions(startIndexes, endIndexes, types);\n }\n }\n}\nexport function sanitizeRanges(rangeData, limit, notifyTooManyRegions) {\n const sorted = rangeData.sort((d1, d2) => {\n let diff = d1.start - d2.start;\n if (diff === 0) {\n diff = d1.rank - d2.rank;\n }\n return diff;\n });\n const collector = new RangesCollector(limit, notifyTooManyRegions);\n let top = undefined;\n const previous = [];\n for (const entry of sorted) {\n if (!top) {\n top = entry;\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\n }\n else {\n if (entry.start > top.start) {\n if (entry.end <= top.end) {\n previous.push(top);\n top = entry;\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\n }\n else {\n if (entry.start > top.end) {\n do {\n top = previous.pop();\n } while (top && entry.start > top.end);\n if (top) {\n previous.push(top);\n }\n top = entry;\n }\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\n }\n }\n }\n }\n return collector.toIndentRanges();\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createCancelablePromise, Delayer, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport * as types from '../../../../base/common/types.js';\nimport './folding.css';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerInstantiatedEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { FoldingRangeKind } from '../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { FoldingModel, getNextFoldLine, getParentFoldLine as getParentFoldLine, getPreviousFoldLine, setCollapseStateAtLevel, setCollapseStateForMatchingLines, setCollapseStateForRest, setCollapseStateForType, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateUp, toggleCollapseState } from './foldingModel.js';\nimport { HiddenRangeModel } from './hiddenRangeModel.js';\nimport { IndentRangeProvider } from './indentRangeProvider.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { editorSelectionBackground, iconForeground, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant, ThemeIcon } from '../../../../platform/theme/common/themeService.js';\nimport { foldingCollapsedIcon, FoldingDecorationProvider, foldingExpandedIcon, foldingManualCollapsedIcon, foldingManualExpandedIcon } from './foldingDecorations.js';\nimport { FoldingRegions } from './foldingRanges.js';\nimport { SyntaxRangeProvider } from './syntaxRangeProvider.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport Severity from '../../../../base/common/severity.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nconst CONTEXT_FOLDING_ENABLED = new RawContextKey('foldingEnabled', false);\nlet FoldingController = class FoldingController extends Disposable {\n constructor(editor, contextKeyService, languageConfigurationService, notificationService, languageFeatureDebounceService, languageFeaturesService) {\n super();\n this.contextKeyService = contextKeyService;\n this.languageConfigurationService = languageConfigurationService;\n this.languageFeaturesService = languageFeaturesService;\n this._tooManyRegionsNotified = false;\n this.localToDispose = this._register(new DisposableStore());\n this.editor = editor;\n const options = this.editor.getOptions();\n this._isEnabled = options.get(39 /* EditorOption.folding */);\n this._useFoldingProviders = options.get(40 /* EditorOption.foldingStrategy */) !== 'indentation';\n this._unfoldOnClickAfterEndOfLine = options.get(44 /* EditorOption.unfoldOnClickAfterEndOfLine */);\n this._restoringViewState = false;\n this._currentModelHasFoldedImports = false;\n this._foldingImportsByDefault = options.get(42 /* EditorOption.foldingImportsByDefault */);\n this._maxFoldingRegions = options.get(43 /* EditorOption.foldingMaximumRegions */);\n this.updateDebounceInfo = languageFeatureDebounceService.for(languageFeaturesService.foldingRangeProvider, 'Folding', { min: 200 });\n this.foldingModel = null;\n this.hiddenRangeModel = null;\n this.rangeProvider = null;\n this.foldingRegionPromise = null;\n this.foldingModelPromise = null;\n this.updateScheduler = null;\n this.cursorChangedScheduler = null;\n this.mouseDownInfo = null;\n this.foldingDecorationProvider = new FoldingDecorationProvider(editor);\n this.foldingDecorationProvider.showFoldingControls = options.get(101 /* EditorOption.showFoldingControls */);\n this.foldingDecorationProvider.showFoldingHighlights = options.get(41 /* EditorOption.foldingHighlight */);\n this.foldingEnabled = CONTEXT_FOLDING_ENABLED.bindTo(this.contextKeyService);\n this.foldingEnabled.set(this._isEnabled);\n this._notifyTooManyRegions = (maxFoldingRegions) => {\n // Message will display once per time vscode runs. Once per file would be tricky.\n if (!this._tooManyRegionsNotified) {\n notificationService.notify({\n severity: Severity.Warning,\n sticky: true,\n message: nls.localize('maximum fold ranges', \"The number of foldable regions is limited to a maximum of {0}. Increase configuration option ['Folding Maximum Regions'](command:workbench.action.openSettings?[\\\"editor.foldingMaximumRegions\\\"]) to enable more.\", maxFoldingRegions)\n });\n this._tooManyRegionsNotified = true;\n }\n };\n this._register(this.editor.onDidChangeModel(() => this.onModelChanged()));\n this._register(this.editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(39 /* EditorOption.folding */)) {\n this._isEnabled = this.editor.getOptions().get(39 /* EditorOption.folding */);\n this.foldingEnabled.set(this._isEnabled);\n this.onModelChanged();\n }\n if (e.hasChanged(43 /* EditorOption.foldingMaximumRegions */)) {\n this._maxFoldingRegions = this.editor.getOptions().get(43 /* EditorOption.foldingMaximumRegions */);\n this._tooManyRegionsNotified = false;\n this.onModelChanged();\n }\n if (e.hasChanged(101 /* EditorOption.showFoldingControls */) || e.hasChanged(41 /* EditorOption.foldingHighlight */)) {\n const options = this.editor.getOptions();\n this.foldingDecorationProvider.showFoldingControls = options.get(101 /* EditorOption.showFoldingControls */);\n this.foldingDecorationProvider.showFoldingHighlights = options.get(41 /* EditorOption.foldingHighlight */);\n this.triggerFoldingModelChanged();\n }\n if (e.hasChanged(40 /* EditorOption.foldingStrategy */)) {\n this._useFoldingProviders = this.editor.getOptions().get(40 /* EditorOption.foldingStrategy */) !== 'indentation';\n this.onFoldingStrategyChanged();\n }\n if (e.hasChanged(44 /* EditorOption.unfoldOnClickAfterEndOfLine */)) {\n this._unfoldOnClickAfterEndOfLine = this.editor.getOptions().get(44 /* EditorOption.unfoldOnClickAfterEndOfLine */);\n }\n if (e.hasChanged(42 /* EditorOption.foldingImportsByDefault */)) {\n this._foldingImportsByDefault = this.editor.getOptions().get(42 /* EditorOption.foldingImportsByDefault */);\n }\n }));\n this.onModelChanged();\n }\n static get(editor) {\n return editor.getContribution(FoldingController.ID);\n }\n /**\n * Store view state.\n */\n saveViewState() {\n const model = this.editor.getModel();\n if (!model || !this._isEnabled || model.isTooLargeForTokenization()) {\n return {};\n }\n if (this.foldingModel) { // disposed ?\n const collapsedRegions = this.foldingModel.getMemento();\n const provider = this.rangeProvider ? this.rangeProvider.id : undefined;\n return { collapsedRegions, lineCount: model.getLineCount(), provider, foldedImports: this._currentModelHasFoldedImports };\n }\n return undefined;\n }\n /**\n * Restore view state.\n */\n restoreViewState(state) {\n const model = this.editor.getModel();\n if (!model || !this._isEnabled || model.isTooLargeForTokenization() || !this.hiddenRangeModel) {\n return;\n }\n if (!state || state.lineCount !== model.getLineCount()) {\n return;\n }\n this._currentModelHasFoldedImports = !!state.foldedImports;\n if (state.collapsedRegions && state.collapsedRegions.length > 0 && this.foldingModel) {\n this._restoringViewState = true;\n try {\n this.foldingModel.applyMemento(state.collapsedRegions);\n }\n finally {\n this._restoringViewState = false;\n }\n }\n }\n onModelChanged() {\n this.localToDispose.clear();\n const model = this.editor.getModel();\n if (!this._isEnabled || !model || model.isTooLargeForTokenization()) {\n // huge files get no view model, so they cannot support hidden areas\n return;\n }\n this._currentModelHasFoldedImports = false;\n this.foldingModel = new FoldingModel(model, this.foldingDecorationProvider);\n this.localToDispose.add(this.foldingModel);\n this.hiddenRangeModel = new HiddenRangeModel(this.foldingModel);\n this.localToDispose.add(this.hiddenRangeModel);\n this.localToDispose.add(this.hiddenRangeModel.onDidChange(hr => this.onHiddenRangesChanges(hr)));\n this.updateScheduler = new Delayer(this.updateDebounceInfo.get(model));\n this.cursorChangedScheduler = new RunOnceScheduler(() => this.revealCursor(), 200);\n this.localToDispose.add(this.cursorChangedScheduler);\n this.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(() => this.onFoldingStrategyChanged()));\n this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(() => this.onFoldingStrategyChanged())); // covers model language changes as well\n this.localToDispose.add(this.editor.onDidChangeModelContent(e => this.onDidChangeModelContent(e)));\n this.localToDispose.add(this.editor.onDidChangeCursorPosition(() => this.onCursorPositionChanged()));\n this.localToDispose.add(this.editor.onMouseDown(e => this.onEditorMouseDown(e)));\n this.localToDispose.add(this.editor.onMouseUp(e => this.onEditorMouseUp(e)));\n this.localToDispose.add({\n dispose: () => {\n if (this.foldingRegionPromise) {\n this.foldingRegionPromise.cancel();\n this.foldingRegionPromise = null;\n }\n if (this.updateScheduler) {\n this.updateScheduler.cancel();\n }\n this.updateScheduler = null;\n this.foldingModel = null;\n this.foldingModelPromise = null;\n this.hiddenRangeModel = null;\n this.cursorChangedScheduler = null;\n if (this.rangeProvider) {\n this.rangeProvider.dispose();\n }\n this.rangeProvider = null;\n }\n });\n this.triggerFoldingModelChanged();\n }\n onFoldingStrategyChanged() {\n if (this.rangeProvider) {\n this.rangeProvider.dispose();\n }\n this.rangeProvider = null;\n this.triggerFoldingModelChanged();\n }\n getRangeProvider(editorModel) {\n if (this.rangeProvider) {\n return this.rangeProvider;\n }\n this.rangeProvider = new IndentRangeProvider(editorModel, this.languageConfigurationService, this._maxFoldingRegions); // fallback\n if (this._useFoldingProviders && this.foldingModel) {\n const foldingProviders = this.languageFeaturesService.foldingRangeProvider.ordered(this.foldingModel.textModel);\n if (foldingProviders.length > 0) {\n this.rangeProvider = new SyntaxRangeProvider(editorModel, foldingProviders, () => this.triggerFoldingModelChanged(), this._maxFoldingRegions);\n }\n }\n return this.rangeProvider;\n }\n getFoldingModel() {\n return this.foldingModelPromise;\n }\n onDidChangeModelContent(e) {\n var _a;\n (_a = this.hiddenRangeModel) === null || _a === void 0 ? void 0 : _a.notifyChangeModelContent(e);\n this.triggerFoldingModelChanged();\n }\n triggerFoldingModelChanged() {\n if (this.updateScheduler) {\n if (this.foldingRegionPromise) {\n this.foldingRegionPromise.cancel();\n this.foldingRegionPromise = null;\n }\n this.foldingModelPromise = this.updateScheduler.trigger(() => {\n const foldingModel = this.foldingModel;\n if (!foldingModel) { // null if editor has been disposed, or folding turned off\n return null;\n }\n const sw = new StopWatch(true);\n const provider = this.getRangeProvider(foldingModel.textModel);\n const foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => provider.compute(token, this._notifyTooManyRegions));\n return foldingRegionPromise.then(foldingRanges => {\n if (foldingRanges && foldingRegionPromise === this.foldingRegionPromise) { // new request or cancelled in the meantime?\n let scrollState;\n if (this._foldingImportsByDefault && !this._currentModelHasFoldedImports) {\n const hasChanges = foldingRanges.setCollapsedAllOfType(FoldingRangeKind.Imports.value, true);\n if (hasChanges) {\n scrollState = StableEditorScrollState.capture(this.editor);\n this._currentModelHasFoldedImports = hasChanges;\n }\n }\n // some cursors might have moved into hidden regions, make sure they are in expanded regions\n const selections = this.editor.getSelections();\n const selectionLineNumbers = selections ? selections.map(s => s.startLineNumber) : [];\n foldingModel.update(foldingRanges, selectionLineNumbers);\n scrollState === null || scrollState === void 0 ? void 0 : scrollState.restore(this.editor);\n // update debounce info\n const newValue = this.updateDebounceInfo.update(foldingModel.textModel, sw.elapsed());\n if (this.updateScheduler) {\n this.updateScheduler.defaultDelay = newValue;\n }\n }\n return foldingModel;\n });\n }).then(undefined, (err) => {\n onUnexpectedError(err);\n return null;\n });\n }\n }\n onHiddenRangesChanges(hiddenRanges) {\n if (this.hiddenRangeModel && hiddenRanges.length && !this._restoringViewState) {\n const selections = this.editor.getSelections();\n if (selections) {\n if (this.hiddenRangeModel.adjustSelections(selections)) {\n this.editor.setSelections(selections);\n }\n }\n }\n this.editor.setHiddenAreas(hiddenRanges);\n }\n onCursorPositionChanged() {\n if (this.hiddenRangeModel && this.hiddenRangeModel.hasRanges()) {\n this.cursorChangedScheduler.schedule();\n }\n }\n revealCursor() {\n const foldingModel = this.getFoldingModel();\n if (!foldingModel) {\n return;\n }\n foldingModel.then(foldingModel => {\n if (foldingModel) {\n const selections = this.editor.getSelections();\n if (selections && selections.length > 0) {\n const toToggle = [];\n for (const selection of selections) {\n const lineNumber = selection.selectionStartLineNumber;\n if (this.hiddenRangeModel && this.hiddenRangeModel.isHidden(lineNumber)) {\n toToggle.push(...foldingModel.getAllRegionsAtLine(lineNumber, r => r.isCollapsed && lineNumber > r.startLineNumber));\n }\n }\n if (toToggle.length) {\n foldingModel.toggleCollapseState(toToggle);\n this.reveal(selections[0].getPosition());\n }\n }\n }\n }).then(undefined, onUnexpectedError);\n }\n onEditorMouseDown(e) {\n this.mouseDownInfo = null;\n if (!this.hiddenRangeModel || !e.target || !e.target.range) {\n return;\n }\n if (!e.event.leftButton && !e.event.middleButton) {\n return;\n }\n const range = e.target.range;\n let iconClicked = false;\n switch (e.target.type) {\n case 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */: {\n const data = e.target.detail;\n const offsetLeftInGutter = e.target.element.offsetLeft;\n const gutterOffsetX = data.offsetX - offsetLeftInGutter;\n // const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;\n // TODO@joao TODO@alex TODO@martin this is such that we don't collide with dirty diff\n if (gutterOffsetX < 5) { // the whitespace between the border and the real folding icon border is 5px\n return;\n }\n iconClicked = true;\n break;\n }\n case 7 /* MouseTargetType.CONTENT_EMPTY */: {\n if (this._unfoldOnClickAfterEndOfLine && this.hiddenRangeModel.hasRanges()) {\n const data = e.target.detail;\n if (!data.isAfterLines) {\n break;\n }\n }\n return;\n }\n case 6 /* MouseTargetType.CONTENT_TEXT */: {\n if (this.hiddenRangeModel.hasRanges()) {\n const model = this.editor.getModel();\n if (model && range.startColumn === model.getLineMaxColumn(range.startLineNumber)) {\n break;\n }\n }\n return;\n }\n default:\n return;\n }\n this.mouseDownInfo = { lineNumber: range.startLineNumber, iconClicked };\n }\n onEditorMouseUp(e) {\n const foldingModel = this.foldingModel;\n if (!foldingModel || !this.mouseDownInfo || !e.target) {\n return;\n }\n const lineNumber = this.mouseDownInfo.lineNumber;\n const iconClicked = this.mouseDownInfo.iconClicked;\n const range = e.target.range;\n if (!range || range.startLineNumber !== lineNumber) {\n return;\n }\n if (iconClicked) {\n if (e.target.type !== 4 /* MouseTargetType.GUTTER_LINE_DECORATIONS */) {\n return;\n }\n }\n else {\n const model = this.editor.getModel();\n if (!model || range.startColumn !== model.getLineMaxColumn(lineNumber)) {\n return;\n }\n }\n const region = foldingModel.getRegionAtLine(lineNumber);\n if (region && region.startLineNumber === lineNumber) {\n const isCollapsed = region.isCollapsed;\n if (iconClicked || isCollapsed) {\n const surrounding = e.event.altKey;\n let toToggle = [];\n if (surrounding) {\n const filter = (otherRegion) => !otherRegion.containedBy(region) && !region.containedBy(otherRegion);\n const toMaybeToggle = foldingModel.getRegionsInside(null, filter);\n for (const r of toMaybeToggle) {\n if (r.isCollapsed) {\n toToggle.push(r);\n }\n }\n // if any surrounding regions are folded, unfold those. Otherwise, fold all surrounding\n if (toToggle.length === 0) {\n toToggle = toMaybeToggle;\n }\n }\n else {\n const recursive = e.event.middleButton || e.event.shiftKey;\n if (recursive) {\n for (const r of foldingModel.getRegionsInside(region)) {\n if (r.isCollapsed === isCollapsed) {\n toToggle.push(r);\n }\n }\n }\n // when recursive, first only collapse all children. If all are already folded or there are no children, also fold parent.\n if (isCollapsed || !recursive || toToggle.length === 0) {\n toToggle.push(region);\n }\n }\n foldingModel.toggleCollapseState(toToggle);\n this.reveal({ lineNumber, column: 1 });\n }\n }\n }\n reveal(position) {\n this.editor.revealPositionInCenterIfOutsideViewport(position, 0 /* ScrollType.Smooth */);\n }\n};\nFoldingController.ID = 'editor.contrib.folding';\nFoldingController = __decorate([\n __param(1, IContextKeyService),\n __param(2, ILanguageConfigurationService),\n __param(3, INotificationService),\n __param(4, ILanguageFeatureDebounceService),\n __param(5, ILanguageFeaturesService)\n], FoldingController);\nexport { FoldingController };\nclass FoldingAction extends EditorAction {\n runEditorCommand(accessor, editor, args) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n const foldingController = FoldingController.get(editor);\n if (!foldingController) {\n return;\n }\n const foldingModelPromise = foldingController.getFoldingModel();\n if (foldingModelPromise) {\n this.reportTelemetry(accessor, editor);\n return foldingModelPromise.then(foldingModel => {\n if (foldingModel) {\n this.invoke(foldingController, foldingModel, editor, args, languageConfigurationService);\n const selection = editor.getSelection();\n if (selection) {\n foldingController.reveal(selection.getStartPosition());\n }\n }\n });\n }\n }\n getSelectedLines(editor) {\n const selections = editor.getSelections();\n return selections ? selections.map(s => s.startLineNumber) : [];\n }\n getLineNumbers(args, editor) {\n if (args && args.selectionLines) {\n return args.selectionLines.map(l => l + 1); // to 0-bases line numbers\n }\n return this.getSelectedLines(editor);\n }\n run(_accessor, _editor) {\n }\n}\nfunction foldingArgumentsConstraint(args) {\n if (!types.isUndefined(args)) {\n if (!types.isObject(args)) {\n return false;\n }\n const foldingArgs = args;\n if (!types.isUndefined(foldingArgs.levels) && !types.isNumber(foldingArgs.levels)) {\n return false;\n }\n if (!types.isUndefined(foldingArgs.direction) && !types.isString(foldingArgs.direction)) {\n return false;\n }\n if (!types.isUndefined(foldingArgs.selectionLines) && (!types.isArray(foldingArgs.selectionLines) || !foldingArgs.selectionLines.every(types.isNumber))) {\n return false;\n }\n }\n return true;\n}\nclass UnfoldAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.unfold',\n label: nls.localize('unfoldAction.label', \"Unfold\"),\n alias: 'Unfold',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 89 /* KeyCode.BracketRight */,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 89 /* KeyCode.BracketRight */\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n description: {\n description: 'Unfold the content in the editor',\n args: [\n {\n name: 'Unfold editor argument',\n description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t`,\n constraint: foldingArgumentsConstraint,\n schema: {\n 'type': 'object',\n 'properties': {\n 'levels': {\n 'type': 'number',\n 'default': 1\n },\n 'direction': {\n 'type': 'string',\n 'enum': ['up', 'down'],\n 'default': 'down'\n },\n 'selectionLines': {\n 'type': 'array',\n 'items': {\n 'type': 'number'\n }\n }\n }\n }\n }\n ]\n }\n });\n }\n invoke(_foldingController, foldingModel, editor, args) {\n const levels = args && args.levels || 1;\n const lineNumbers = this.getLineNumbers(args, editor);\n if (args && args.direction === 'up') {\n setCollapseStateLevelsUp(foldingModel, false, levels, lineNumbers);\n }\n else {\n setCollapseStateLevelsDown(foldingModel, false, levels, lineNumbers);\n }\n }\n}\nclass UnFoldRecursivelyAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.unfoldRecursively',\n label: nls.localize('unFoldRecursivelyAction.label', \"Unfold Recursively\"),\n alias: 'Unfold Recursively',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.BracketRight */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor, _args) {\n setCollapseStateLevelsDown(foldingModel, false, Number.MAX_VALUE, this.getSelectedLines(editor));\n }\n}\nclass FoldAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.fold',\n label: nls.localize('foldAction.label', \"Fold\"),\n alias: 'Fold',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 87 /* KeyCode.BracketLeft */,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 87 /* KeyCode.BracketLeft */\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n description: {\n description: 'Fold the content in the editor',\n args: [\n {\n name: 'Fold editor argument',\n description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t`,\n constraint: foldingArgumentsConstraint,\n schema: {\n 'type': 'object',\n 'properties': {\n 'levels': {\n 'type': 'number',\n },\n 'direction': {\n 'type': 'string',\n 'enum': ['up', 'down'],\n },\n 'selectionLines': {\n 'type': 'array',\n 'items': {\n 'type': 'number'\n }\n }\n }\n }\n }\n ]\n }\n });\n }\n invoke(_foldingController, foldingModel, editor, args) {\n const lineNumbers = this.getLineNumbers(args, editor);\n const levels = args && args.levels;\n const direction = args && args.direction;\n if (typeof levels !== 'number' && typeof direction !== 'string') {\n // fold the region at the location or if already collapsed, the first uncollapsed parent instead.\n setCollapseStateUp(foldingModel, true, lineNumbers);\n }\n else {\n if (direction === 'up') {\n setCollapseStateLevelsUp(foldingModel, true, levels || 1, lineNumbers);\n }\n else {\n setCollapseStateLevelsDown(foldingModel, true, levels || 1, lineNumbers);\n }\n }\n }\n}\nclass ToggleFoldAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.toggleFold',\n label: nls.localize('toggleFoldAction.label', \"Toggle Fold\"),\n alias: 'Toggle Fold',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 42 /* KeyCode.KeyL */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n const selectedLines = this.getSelectedLines(editor);\n toggleCollapseState(foldingModel, 1, selectedLines);\n }\n}\nclass FoldRecursivelyAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.foldRecursively',\n label: nls.localize('foldRecursivelyAction.label', \"Fold Recursively\"),\n alias: 'Fold Recursively',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 87 /* KeyCode.BracketLeft */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n const selectedLines = this.getSelectedLines(editor);\n setCollapseStateLevelsDown(foldingModel, true, Number.MAX_VALUE, selectedLines);\n }\n}\nclass FoldAllBlockCommentsAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.foldAllBlockComments',\n label: nls.localize('foldAllBlockComments.label', \"Fold All Block Comments\"),\n alias: 'Fold All Block Comments',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 85 /* KeyCode.Slash */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor, args, languageConfigurationService) {\n if (foldingModel.regions.hasTypes()) {\n setCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true);\n }\n else {\n const editorModel = editor.getModel();\n if (!editorModel) {\n return;\n }\n const comments = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).comments;\n if (comments && comments.blockCommentStartToken) {\n const regExp = new RegExp('^\\\\s*' + escapeRegExpCharacters(comments.blockCommentStartToken));\n setCollapseStateForMatchingLines(foldingModel, regExp, true);\n }\n }\n }\n}\nclass FoldAllRegionsAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.foldAllMarkerRegions',\n label: nls.localize('foldAllMarkerRegions.label', \"Fold All Regions\"),\n alias: 'Fold All Regions',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 29 /* KeyCode.Digit8 */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor, args, languageConfigurationService) {\n if (foldingModel.regions.hasTypes()) {\n setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true);\n }\n else {\n const editorModel = editor.getModel();\n if (!editorModel) {\n return;\n }\n const foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n const regExp = new RegExp(foldingRules.markers.start);\n setCollapseStateForMatchingLines(foldingModel, regExp, true);\n }\n }\n }\n}\nclass UnfoldAllRegionsAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.unfoldAllMarkerRegions',\n label: nls.localize('unfoldAllMarkerRegions.label', \"Unfold All Regions\"),\n alias: 'Unfold All Regions',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 30 /* KeyCode.Digit9 */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor, args, languageConfigurationService) {\n if (foldingModel.regions.hasTypes()) {\n setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false);\n }\n else {\n const editorModel = editor.getModel();\n if (!editorModel) {\n return;\n }\n const foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n const regExp = new RegExp(foldingRules.markers.start);\n setCollapseStateForMatchingLines(foldingModel, regExp, false);\n }\n }\n }\n}\nclass FoldAllRegionsExceptAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.foldAllExcept',\n label: nls.localize('foldAllExcept.label', \"Fold All Regions Except Selected\"),\n alias: 'Fold All Regions Except Selected',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 83 /* KeyCode.Minus */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n const selectedLines = this.getSelectedLines(editor);\n setCollapseStateForRest(foldingModel, true, selectedLines);\n }\n}\nclass UnfoldAllRegionsExceptAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.unfoldAllExcept',\n label: nls.localize('unfoldAllExcept.label', \"Unfold All Regions Except Selected\"),\n alias: 'Unfold All Regions Except Selected',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 81 /* KeyCode.Equal */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n const selectedLines = this.getSelectedLines(editor);\n setCollapseStateForRest(foldingModel, false, selectedLines);\n }\n}\nclass FoldAllAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.foldAll',\n label: nls.localize('foldAllAction.label', \"Fold All\"),\n alias: 'Fold All',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 21 /* KeyCode.Digit0 */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, _editor) {\n setCollapseStateLevelsDown(foldingModel, true);\n }\n}\nclass UnfoldAllAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.unfoldAll',\n label: nls.localize('unfoldAllAction.label', \"Unfold All\"),\n alias: 'Unfold All',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 40 /* KeyCode.KeyJ */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, _editor) {\n setCollapseStateLevelsDown(foldingModel, false);\n }\n}\nclass FoldLevelAction extends FoldingAction {\n getFoldingLevel() {\n return parseInt(this.id.substr(FoldLevelAction.ID_PREFIX.length));\n }\n invoke(_foldingController, foldingModel, editor) {\n setCollapseStateAtLevel(foldingModel, this.getFoldingLevel(), true, this.getSelectedLines(editor));\n }\n}\nFoldLevelAction.ID_PREFIX = 'editor.foldLevel';\nFoldLevelAction.ID = (level) => FoldLevelAction.ID_PREFIX + level;\n/** Action to go to the parent fold of current line */\nclass GotoParentFoldAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.gotoParentFold',\n label: nls.localize('gotoParentFold.label', \"Go to Parent Fold\"),\n alias: 'Go to Parent Fold',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n const selectedLines = this.getSelectedLines(editor);\n if (selectedLines.length > 0) {\n const startLineNumber = getParentFoldLine(selectedLines[0], foldingModel);\n if (startLineNumber !== null) {\n editor.setSelection({\n startLineNumber: startLineNumber,\n startColumn: 1,\n endLineNumber: startLineNumber,\n endColumn: 1\n });\n }\n }\n }\n}\n/** Action to go to the previous fold of current line */\nclass GotoPreviousFoldAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.gotoPreviousFold',\n label: nls.localize('gotoPreviousFold.label', \"Go to Previous Folding Range\"),\n alias: 'Go to Previous Folding Range',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n const selectedLines = this.getSelectedLines(editor);\n if (selectedLines.length > 0) {\n const startLineNumber = getPreviousFoldLine(selectedLines[0], foldingModel);\n if (startLineNumber !== null) {\n editor.setSelection({\n startLineNumber: startLineNumber,\n startColumn: 1,\n endLineNumber: startLineNumber,\n endColumn: 1\n });\n }\n }\n }\n}\n/** Action to go to the next fold of current line */\nclass GotoNextFoldAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.gotoNextFold',\n label: nls.localize('gotoNextFold.label', \"Go to Next Folding Range\"),\n alias: 'Go to Next Folding Range',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n const selectedLines = this.getSelectedLines(editor);\n if (selectedLines.length > 0) {\n const startLineNumber = getNextFoldLine(selectedLines[0], foldingModel);\n if (startLineNumber !== null) {\n editor.setSelection({\n startLineNumber: startLineNumber,\n startColumn: 1,\n endLineNumber: startLineNumber,\n endColumn: 1\n });\n }\n }\n }\n}\nclass FoldRangeFromSelectionAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.createFoldingRangeFromSelection',\n label: nls.localize('createManualFoldRange.label', \"Create Manual Folding Range from Selection\"),\n alias: 'Create Folding Range from Selection',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 82 /* KeyCode.Comma */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(_foldingController, foldingModel, editor) {\n var _a;\n const collapseRanges = [];\n const selections = editor.getSelections();\n if (selections) {\n for (const selection of selections) {\n let endLineNumber = selection.endLineNumber;\n if (selection.endColumn === 1) {\n --endLineNumber;\n }\n if (endLineNumber > selection.startLineNumber) {\n collapseRanges.push({\n startLineNumber: selection.startLineNumber,\n endLineNumber: endLineNumber,\n type: undefined,\n isCollapsed: true,\n source: 1 /* FoldSource.userDefined */\n });\n editor.setSelection({\n startLineNumber: selection.startLineNumber,\n startColumn: 1,\n endLineNumber: selection.startLineNumber,\n endColumn: 1\n });\n }\n }\n if (collapseRanges.length > 0) {\n collapseRanges.sort((a, b) => {\n return a.startLineNumber - b.startLineNumber;\n });\n const newRanges = FoldingRegions.sanitizeAndMerge(foldingModel.regions, collapseRanges, (_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.getLineCount());\n foldingModel.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n }\n }\n }\n}\nclass RemoveFoldRangeFromSelectionAction extends FoldingAction {\n constructor() {\n super({\n id: 'editor.removeManualFoldingRanges',\n label: nls.localize('removeManualFoldingRanges.label', \"Remove Manual Folding Ranges\"),\n alias: 'Remove Manual Folding Ranges',\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 84 /* KeyCode.Period */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n invoke(foldingController, foldingModel, editor) {\n const selections = editor.getSelections();\n if (selections) {\n const ranges = [];\n for (const selection of selections) {\n const { startLineNumber, endLineNumber } = selection;\n ranges.push(endLineNumber >= startLineNumber ? { startLineNumber, endLineNumber } : { endLineNumber, startLineNumber });\n }\n foldingModel.removeManualRanges(ranges);\n foldingController.triggerFoldingModelChanged();\n }\n }\n}\nregisterEditorContribution(FoldingController.ID, FoldingController);\nregisterEditorAction(UnfoldAction);\nregisterEditorAction(UnFoldRecursivelyAction);\nregisterEditorAction(FoldAction);\nregisterEditorAction(FoldRecursivelyAction);\nregisterEditorAction(FoldAllAction);\nregisterEditorAction(UnfoldAllAction);\nregisterEditorAction(FoldAllBlockCommentsAction);\nregisterEditorAction(FoldAllRegionsAction);\nregisterEditorAction(UnfoldAllRegionsAction);\nregisterEditorAction(FoldAllRegionsExceptAction);\nregisterEditorAction(UnfoldAllRegionsExceptAction);\nregisterEditorAction(ToggleFoldAction);\nregisterEditorAction(GotoParentFoldAction);\nregisterEditorAction(GotoPreviousFoldAction);\nregisterEditorAction(GotoNextFoldAction);\nregisterEditorAction(FoldRangeFromSelectionAction);\nregisterEditorAction(RemoveFoldRangeFromSelectionAction);\nfor (let i = 1; i <= 7; i++) {\n registerInstantiatedEditorAction(new FoldLevelAction({\n id: FoldLevelAction.ID(i),\n label: nls.localize('foldLevelAction.label', \"Fold Level {0}\", i),\n alias: `Fold Level ${i}`,\n precondition: CONTEXT_FOLDING_ENABLED,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | (21 /* KeyCode.Digit0 */ + i)),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n }));\n}\nexport const foldBackgroundBackground = registerColor('editor.foldBackground', { light: transparent(editorSelectionBackground, 0.3), dark: transparent(editorSelectionBackground, 0.3), hcDark: null, hcLight: null }, nls.localize('foldBackgroundBackground', \"Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.\"), true);\nexport const editorFoldForeground = registerColor('editorGutter.foldingControlForeground', { dark: iconForeground, light: iconForeground, hcDark: iconForeground, hcLight: iconForeground }, nls.localize('editorGutter.foldingControlForeground', 'Color of the folding control in the editor gutter.'));\nregisterThemingParticipant((theme, collector) => {\n const foldBackground = theme.getColor(foldBackgroundBackground);\n if (foldBackground) {\n collector.addRule(`.monaco-editor .folded-background { background-color: ${foldBackground}; }`);\n }\n const editorFoldColor = theme.getColor(editorFoldForeground);\n if (editorFoldColor) {\n collector.addRule(`\n\t\t.monaco-editor .cldr${ThemeIcon.asCSSSelector(foldingExpandedIcon)},\n\t\t.monaco-editor .cldr${ThemeIcon.asCSSSelector(foldingCollapsedIcon)},\n\t\t.monaco-editor .cldr${ThemeIcon.asCSSSelector(foldingManualExpandedIcon)},\n\t\t.monaco-editor .cldr${ThemeIcon.asCSSSelector(foldingManualCollapsedIcon)} {\n\t\t\tcolor: ${editorFoldColor} !important;\n\t\t}\n\t\t`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorZoom } from '../../../common/config/editorZoom.js';\nimport * as nls from '../../../../nls.js';\nclass EditorFontZoomIn extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.fontZoomIn',\n label: nls.localize('EditorFontZoomIn.label', \"Editor Font Zoom In\"),\n alias: 'Editor Font Zoom In',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n EditorZoom.setZoomLevel(EditorZoom.getZoomLevel() + 1);\n }\n}\nclass EditorFontZoomOut extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.fontZoomOut',\n label: nls.localize('EditorFontZoomOut.label', \"Editor Font Zoom Out\"),\n alias: 'Editor Font Zoom Out',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n EditorZoom.setZoomLevel(EditorZoom.getZoomLevel() - 1);\n }\n}\nclass EditorFontZoomReset extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.fontZoomReset',\n label: nls.localize('EditorFontZoomReset.label', \"Editor Font Zoom Reset\"),\n alias: 'Editor Font Zoom Reset',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n EditorZoom.setZoomLevel(0);\n }\n}\nregisterEditorAction(EditorFontZoomIn);\nregisterEditorAction(EditorFontZoomOut);\nregisterEditorAction(EditorFontZoomReset);\n","/**\n * **!Do not construct directly!**\n *\n * **!Only static methods because it gets serialized!**\n *\n * This represents the \"canonical\" version for an extension identifier. Extension ids\n * have to be case-insensitive (due to the marketplace), but we must ensure case\n * preservation because the extension API is already public at this time.\n *\n * For example, given an extension with the publisher `\"Hello\"` and the name `\"World\"`,\n * its canonical extension identifier is `\"Hello.World\"`. This extension could be\n * referenced in some other extension's dependencies using the string `\"hello.world\"`.\n *\n * To make matters more complicated, an extension can optionally have an UUID. When two\n * extensions have the same UUID, they are considered equal even if their identifier is different.\n */\nexport class ExtensionIdentifier {\n constructor(value) {\n this.value = value;\n this._lower = value.toLowerCase();\n }\n /**\n * Gives the value by which to index (for equality).\n */\n static toKey(id) {\n if (typeof id === 'string') {\n return id.toLowerCase();\n }\n return id._lower;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { asArray, isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorStateCancellationTokenSource, TextModelCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { isCodeEditor } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { FormattingEdit } from './formattingEdit.js';\nimport * as nls from '../../../../nls.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport function alertFormattingEdits(edits) {\n edits = edits.filter(edit => edit.range);\n if (!edits.length) {\n return;\n }\n let { range } = edits[0];\n for (let i = 1; i < edits.length; i++) {\n range = Range.plusRange(range, edits[i].range);\n }\n const { startLineNumber, endLineNumber } = range;\n if (startLineNumber === endLineNumber) {\n if (edits.length === 1) {\n alert(nls.localize('hint11', \"Made 1 formatting edit on line {0}\", startLineNumber));\n }\n else {\n alert(nls.localize('hintn1', \"Made {0} formatting edits on line {1}\", edits.length, startLineNumber));\n }\n }\n else {\n if (edits.length === 1) {\n alert(nls.localize('hint1n', \"Made 1 formatting edit between lines {0} and {1}\", startLineNumber, endLineNumber));\n }\n else {\n alert(nls.localize('hintnn', \"Made {0} formatting edits between lines {1} and {2}\", edits.length, startLineNumber, endLineNumber));\n }\n }\n}\nexport function getRealAndSyntheticDocumentFormattersOrdered(documentFormattingEditProvider, documentRangeFormattingEditProvider, model) {\n const result = [];\n const seen = new Set();\n // (1) add all document formatter\n const docFormatter = documentFormattingEditProvider.ordered(model);\n for (const formatter of docFormatter) {\n result.push(formatter);\n if (formatter.extensionId) {\n seen.add(ExtensionIdentifier.toKey(formatter.extensionId));\n }\n }\n // (2) add all range formatter as document formatter (unless the same extension already did that)\n const rangeFormatter = documentRangeFormattingEditProvider.ordered(model);\n for (const formatter of rangeFormatter) {\n if (formatter.extensionId) {\n if (seen.has(ExtensionIdentifier.toKey(formatter.extensionId))) {\n continue;\n }\n seen.add(ExtensionIdentifier.toKey(formatter.extensionId));\n }\n result.push({\n displayName: formatter.displayName,\n extensionId: formatter.extensionId,\n provideDocumentFormattingEdits(model, options, token) {\n return formatter.provideDocumentRangeFormattingEdits(model, model.getFullModelRange(), options, token);\n }\n });\n }\n return result;\n}\nexport class FormattingConflicts {\n static setFormatterSelector(selector) {\n const remove = FormattingConflicts._selectors.unshift(selector);\n return { dispose: remove };\n }\n static select(formatter, document, mode) {\n return __awaiter(this, void 0, void 0, function* () {\n if (formatter.length === 0) {\n return undefined;\n }\n const selector = Iterable.first(FormattingConflicts._selectors);\n if (selector) {\n return yield selector(formatter, document, mode);\n }\n return undefined;\n });\n }\n}\nFormattingConflicts._selectors = new LinkedList();\nexport function formatDocumentRangesWithSelectedProvider(accessor, editorOrModel, rangeOrRanges, mode, progress, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const instaService = accessor.get(IInstantiationService);\n const { documentRangeFormattingEditProvider: documentRangeFormattingEditProviderRegistry } = accessor.get(ILanguageFeaturesService);\n const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n const provider = documentRangeFormattingEditProviderRegistry.ordered(model);\n const selected = yield FormattingConflicts.select(provider, model, mode);\n if (selected) {\n progress.report(selected);\n yield instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token);\n }\n });\n}\nexport function formatDocumentRangesWithProvider(accessor, provider, editorOrModel, rangeOrRanges, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const workerService = accessor.get(IEditorWorkerService);\n let model;\n let cts;\n if (isCodeEditor(editorOrModel)) {\n model = editorOrModel.getModel();\n cts = new EditorStateCancellationTokenSource(editorOrModel, 1 /* CodeEditorStateFlag.Value */ | 4 /* CodeEditorStateFlag.Position */, undefined, token);\n }\n else {\n model = editorOrModel;\n cts = new TextModelCancellationTokenSource(editorOrModel, token);\n }\n // make sure that ranges don't overlap nor touch each other\n const ranges = [];\n let len = 0;\n for (const range of asArray(rangeOrRanges).sort(Range.compareRangesUsingStarts)) {\n if (len > 0 && Range.areIntersectingOrTouching(ranges[len - 1], range)) {\n ranges[len - 1] = Range.fromPositions(ranges[len - 1].getStartPosition(), range.getEndPosition());\n }\n else {\n len = ranges.push(range);\n }\n }\n const computeEdits = (range) => __awaiter(this, void 0, void 0, function* () {\n return (yield provider.provideDocumentRangeFormattingEdits(model, range, model.getFormattingOptions(), cts.token)) || [];\n });\n const hasIntersectingEdit = (a, b) => {\n if (!a.length || !b.length) {\n return false;\n }\n // quick exit if the list of ranges are completely unrelated [O(n)]\n const mergedA = a.reduce((acc, val) => { return Range.plusRange(acc, val.range); }, a[0].range);\n if (!b.some(x => { return Range.intersectRanges(mergedA, x.range); })) {\n return false;\n }\n // fallback to a complete check [O(n^2)]\n for (const edit of a) {\n for (const otherEdit of b) {\n if (Range.intersectRanges(edit.range, otherEdit.range)) {\n return true;\n }\n }\n }\n return false;\n };\n const allEdits = [];\n const rawEditsList = [];\n try {\n for (const range of ranges) {\n if (cts.token.isCancellationRequested) {\n return true;\n }\n rawEditsList.push(yield computeEdits(range));\n }\n for (let i = 0; i < ranges.length; ++i) {\n for (let j = i + 1; j < ranges.length; ++j) {\n if (cts.token.isCancellationRequested) {\n return true;\n }\n if (hasIntersectingEdit(rawEditsList[i], rawEditsList[j])) {\n // Merge ranges i and j into a single range, recompute the associated edits\n const mergedRange = Range.plusRange(ranges[i], ranges[j]);\n const edits = yield computeEdits(mergedRange);\n ranges.splice(j, 1);\n ranges.splice(i, 1);\n ranges.push(mergedRange);\n rawEditsList.splice(j, 1);\n rawEditsList.splice(i, 1);\n rawEditsList.push(edits);\n // Restart scanning\n i = 0;\n j = 0;\n }\n }\n }\n for (const rawEdits of rawEditsList) {\n if (cts.token.isCancellationRequested) {\n return true;\n }\n const minimalEdits = yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n if (minimalEdits) {\n allEdits.push(...minimalEdits);\n }\n }\n }\n finally {\n cts.dispose();\n }\n if (allEdits.length === 0) {\n return false;\n }\n if (isCodeEditor(editorOrModel)) {\n // use editor to apply edits\n FormattingEdit.execute(editorOrModel, allEdits, true);\n alertFormattingEdits(allEdits);\n editorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), 1 /* ScrollType.Immediate */);\n }\n else {\n // use model to apply edits\n const [{ range }] = allEdits;\n const initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n model.pushEditOperations([initialSelection], allEdits.map(edit => {\n return {\n text: edit.text,\n range: Range.lift(edit.range),\n forceMoveMarkers: true\n };\n }), undoEdits => {\n for (const { range } of undoEdits) {\n if (Range.areIntersectingOrTouching(range, initialSelection)) {\n return [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n }\n }\n return null;\n });\n }\n return true;\n });\n}\nexport function formatDocumentWithSelectedProvider(accessor, editorOrModel, mode, progress, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const instaService = accessor.get(IInstantiationService);\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n const provider = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n const selected = yield FormattingConflicts.select(provider, model, mode);\n if (selected) {\n progress.report(selected);\n yield instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token);\n }\n });\n}\nexport function formatDocumentWithProvider(accessor, provider, editorOrModel, mode, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const workerService = accessor.get(IEditorWorkerService);\n let model;\n let cts;\n if (isCodeEditor(editorOrModel)) {\n model = editorOrModel.getModel();\n cts = new EditorStateCancellationTokenSource(editorOrModel, 1 /* CodeEditorStateFlag.Value */ | 4 /* CodeEditorStateFlag.Position */, undefined, token);\n }\n else {\n model = editorOrModel;\n cts = new TextModelCancellationTokenSource(editorOrModel, token);\n }\n let edits;\n try {\n const rawEdits = yield provider.provideDocumentFormattingEdits(model, model.getFormattingOptions(), cts.token);\n edits = yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n if (cts.token.isCancellationRequested) {\n return true;\n }\n }\n finally {\n cts.dispose();\n }\n if (!edits || edits.length === 0) {\n return false;\n }\n if (isCodeEditor(editorOrModel)) {\n // use editor to apply edits\n FormattingEdit.execute(editorOrModel, edits, mode !== 2 /* FormattingMode.Silent */);\n if (mode !== 2 /* FormattingMode.Silent */) {\n alertFormattingEdits(edits);\n editorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), 1 /* ScrollType.Immediate */);\n }\n }\n else {\n // use model to apply edits\n const [{ range }] = edits;\n const initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n model.pushEditOperations([initialSelection], edits.map(edit => {\n return {\n text: edit.text,\n range: Range.lift(edit.range),\n forceMoveMarkers: true\n };\n }), undoEdits => {\n for (const { range } of undoEdits) {\n if (Range.areIntersectingOrTouching(range, initialSelection)) {\n return [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n }\n }\n return null;\n });\n }\n return true;\n });\n}\nexport function getDocumentRangeFormattingEditsUntilResult(workerService, languageFeaturesService, model, range, options, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const providers = languageFeaturesService.documentRangeFormattingEditProvider.ordered(model);\n for (const provider of providers) {\n const rawEdits = yield Promise.resolve(provider.provideDocumentRangeFormattingEdits(model, range, options, token)).catch(onUnexpectedExternalError);\n if (isNonEmptyArray(rawEdits)) {\n return yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n }\n }\n return undefined;\n });\n}\nexport function getDocumentFormattingEditsUntilResult(workerService, languageFeaturesService, model, options, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const providers = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n for (const provider of providers) {\n const rawEdits = yield Promise.resolve(provider.provideDocumentFormattingEdits(model, options, token)).catch(onUnexpectedExternalError);\n if (isNonEmptyArray(rawEdits)) {\n return yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n }\n }\n return undefined;\n });\n}\nexport function getOnTypeFormattingEdits(workerService, languageFeaturesService, model, position, ch, options, token) {\n const providers = languageFeaturesService.onTypeFormattingEditProvider.ordered(model);\n if (providers.length === 0) {\n return Promise.resolve(undefined);\n }\n if (providers[0].autoFormatTriggerCharacters.indexOf(ch) < 0) {\n return Promise.resolve(undefined);\n }\n return Promise.resolve(providers[0].provideOnTypeFormattingEdits(model, position, ch, options, token)).catch(onUnexpectedExternalError).then(edits => {\n return workerService.computeMoreMinimalEdits(model.uri, edits);\n });\n}\nCommandsRegistry.registerCommand('_executeFormatRangeProvider', function (accessor, ...args) {\n return __awaiter(this, void 0, void 0, function* () {\n const [resource, range, options] = args;\n assertType(URI.isUri(resource));\n assertType(Range.isIRange(range));\n const resolverService = accessor.get(ITextModelService);\n const workerService = accessor.get(IEditorWorkerService);\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const reference = yield resolverService.createModelReference(resource);\n try {\n return getDocumentRangeFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, Range.lift(range), options, CancellationToken.None);\n }\n finally {\n reference.dispose();\n }\n });\n});\nCommandsRegistry.registerCommand('_executeFormatDocumentProvider', function (accessor, ...args) {\n return __awaiter(this, void 0, void 0, function* () {\n const [resource, options] = args;\n assertType(URI.isUri(resource));\n const resolverService = accessor.get(ITextModelService);\n const workerService = accessor.get(IEditorWorkerService);\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const reference = yield resolverService.createModelReference(resource);\n try {\n return getDocumentFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, options, CancellationToken.None);\n }\n finally {\n reference.dispose();\n }\n });\n});\nCommandsRegistry.registerCommand('_executeFormatOnTypeProvider', function (accessor, ...args) {\n return __awaiter(this, void 0, void 0, function* () {\n const [resource, position, ch, options] = args;\n assertType(URI.isUri(resource));\n assertType(Position.isIPosition(position));\n assertType(typeof ch === 'string');\n const resolverService = accessor.get(ITextModelService);\n const workerService = accessor.get(IEditorWorkerService);\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const reference = yield resolverService.createModelReference(resource);\n try {\n return getOnTypeFormattingEdits(workerService, languageFeaturesService, reference.object.textEditorModel, Position.lift(position), ch, options, CancellationToken.None);\n }\n finally {\n reference.dispose();\n }\n });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { alertFormattingEdits, formatDocumentRangesWithSelectedProvider, formatDocumentWithSelectedProvider, getOnTypeFormattingEdits } from './format.js';\nimport { FormattingEdit } from './formattingEdit.js';\nimport * as nls from '../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IEditorProgressService, Progress } from '../../../../platform/progress/common/progress.js';\nlet FormatOnType = class FormatOnType {\n constructor(_editor, _languageFeaturesService, _workerService) {\n this._editor = _editor;\n this._languageFeaturesService = _languageFeaturesService;\n this._workerService = _workerService;\n this._disposables = new DisposableStore();\n this._sessionDisposables = new DisposableStore();\n this._disposables.add(_languageFeaturesService.onTypeFormattingEditProvider.onDidChange(this._update, this));\n this._disposables.add(_editor.onDidChangeModel(() => this._update()));\n this._disposables.add(_editor.onDidChangeModelLanguage(() => this._update()));\n this._disposables.add(_editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(51 /* EditorOption.formatOnType */)) {\n this._update();\n }\n }));\n }\n dispose() {\n this._disposables.dispose();\n this._sessionDisposables.dispose();\n }\n _update() {\n // clean up\n this._sessionDisposables.clear();\n // we are disabled\n if (!this._editor.getOption(51 /* EditorOption.formatOnType */)) {\n return;\n }\n // no model\n if (!this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n // no support\n const [support] = this._languageFeaturesService.onTypeFormattingEditProvider.ordered(model);\n if (!support || !support.autoFormatTriggerCharacters) {\n return;\n }\n // register typing listeners that will trigger the format\n const triggerChars = new CharacterSet();\n for (const ch of support.autoFormatTriggerCharacters) {\n triggerChars.add(ch.charCodeAt(0));\n }\n this._sessionDisposables.add(this._editor.onDidType((text) => {\n const lastCharCode = text.charCodeAt(text.length - 1);\n if (triggerChars.has(lastCharCode)) {\n this._trigger(String.fromCharCode(lastCharCode));\n }\n }));\n }\n _trigger(ch) {\n if (!this._editor.hasModel()) {\n return;\n }\n if (this._editor.getSelections().length > 1 || !this._editor.getSelection().isEmpty()) {\n return;\n }\n const model = this._editor.getModel();\n const position = this._editor.getPosition();\n const cts = new CancellationTokenSource();\n // install a listener that checks if edits happens before the\n // position on which we format right now. If so, we won't\n // apply the format edits\n const unbind = this._editor.onDidChangeModelContent((e) => {\n if (e.isFlush) {\n // a model.setValue() was called\n // cancel only once\n cts.cancel();\n unbind.dispose();\n return;\n }\n for (let i = 0, len = e.changes.length; i < len; i++) {\n const change = e.changes[i];\n if (change.range.endLineNumber <= position.lineNumber) {\n // cancel only once\n cts.cancel();\n unbind.dispose();\n return;\n }\n }\n });\n getOnTypeFormattingEdits(this._workerService, this._languageFeaturesService, model, position, ch, model.getFormattingOptions(), cts.token).then(edits => {\n if (cts.token.isCancellationRequested) {\n return;\n }\n if (isNonEmptyArray(edits)) {\n FormattingEdit.execute(this._editor, edits, true);\n alertFormattingEdits(edits);\n }\n }).finally(() => {\n unbind.dispose();\n });\n }\n};\nFormatOnType.ID = 'editor.contrib.autoFormat';\nFormatOnType = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, IEditorWorkerService)\n], FormatOnType);\nlet FormatOnPaste = class FormatOnPaste {\n constructor(editor, _languageFeaturesService, _instantiationService) {\n this.editor = editor;\n this._languageFeaturesService = _languageFeaturesService;\n this._instantiationService = _instantiationService;\n this._callOnDispose = new DisposableStore();\n this._callOnModel = new DisposableStore();\n this._callOnDispose.add(editor.onDidChangeConfiguration(() => this._update()));\n this._callOnDispose.add(editor.onDidChangeModel(() => this._update()));\n this._callOnDispose.add(editor.onDidChangeModelLanguage(() => this._update()));\n this._callOnDispose.add(_languageFeaturesService.documentRangeFormattingEditProvider.onDidChange(this._update, this));\n }\n dispose() {\n this._callOnDispose.dispose();\n this._callOnModel.dispose();\n }\n _update() {\n // clean up\n this._callOnModel.clear();\n // we are disabled\n if (!this.editor.getOption(50 /* EditorOption.formatOnPaste */)) {\n return;\n }\n // no model\n if (!this.editor.hasModel()) {\n return;\n }\n // no formatter\n if (!this._languageFeaturesService.documentRangeFormattingEditProvider.has(this.editor.getModel())) {\n return;\n }\n this._callOnModel.add(this.editor.onDidPaste(({ range }) => this._trigger(range)));\n }\n _trigger(range) {\n if (!this.editor.hasModel()) {\n return;\n }\n if (this.editor.getSelections().length > 1) {\n return;\n }\n this._instantiationService.invokeFunction(formatDocumentRangesWithSelectedProvider, this.editor, range, 2 /* FormattingMode.Silent */, Progress.None, CancellationToken.None).catch(onUnexpectedError);\n }\n};\nFormatOnPaste.ID = 'editor.contrib.formatOnPaste';\nFormatOnPaste = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, IInstantiationService)\n], FormatOnPaste);\nclass FormatDocumentAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.formatDocument',\n label: nls.localize('formatDocument.label', \"Format Document\"),\n alias: 'Format Document',\n precondition: ContextKeyExpr.and(EditorContextKeys.notInCompositeEditor, EditorContextKeys.writable, EditorContextKeys.hasDocumentFormattingProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 36 /* KeyCode.KeyF */,\n linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 39 /* KeyCode.KeyI */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: '1_modification',\n order: 1.3\n }\n });\n }\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n if (editor.hasModel()) {\n const instaService = accessor.get(IInstantiationService);\n const progressService = accessor.get(IEditorProgressService);\n yield progressService.showWhile(instaService.invokeFunction(formatDocumentWithSelectedProvider, editor, 1 /* FormattingMode.Explicit */, Progress.None, CancellationToken.None), 250);\n }\n });\n }\n}\nclass FormatSelectionAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.formatSelection',\n label: nls.localize('formatSelection.label', \"Format Selection\"),\n alias: 'Format Selection',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasDocumentSelectionFormattingProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 36 /* KeyCode.KeyF */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n when: EditorContextKeys.hasNonEmptySelection,\n group: '1_modification',\n order: 1.31\n }\n });\n }\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!editor.hasModel()) {\n return;\n }\n const instaService = accessor.get(IInstantiationService);\n const model = editor.getModel();\n const ranges = editor.getSelections().map(range => {\n return range.isEmpty()\n ? new Range(range.startLineNumber, 1, range.startLineNumber, model.getLineMaxColumn(range.startLineNumber))\n : range;\n });\n const progressService = accessor.get(IEditorProgressService);\n yield progressService.showWhile(instaService.invokeFunction(formatDocumentRangesWithSelectedProvider, editor, ranges, 1 /* FormattingMode.Explicit */, Progress.None, CancellationToken.None), 250);\n });\n }\n}\nregisterEditorContribution(FormatOnType.ID, FormatOnType);\nregisterEditorContribution(FormatOnPaste.ID, FormatOnPaste);\nregisterEditorAction(FormatDocumentAction);\nregisterEditorAction(FormatSelectionAction);\n// this is the old format action that does both (format document OR format selection)\n// and we keep it here such that existing keybinding configurations etc will still work\nCommandsRegistry.registerCommand('editor.action.format', (accessor) => __awaiter(void 0, void 0, void 0, function* () {\n const editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n if (!editor || !editor.hasModel()) {\n return;\n }\n const commandService = accessor.get(ICommandService);\n if (editor.getSelection().isEmpty()) {\n yield commandService.executeCommand('editor.action.formatDocument');\n }\n else {\n yield commandService.executeCommand('editor.action.formatSelection');\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nexport class FormattingEdit {\n static _handleEolEdits(editor, edits) {\n let newEol = undefined;\n const singleEdits = [];\n for (const edit of edits) {\n if (typeof edit.eol === 'number') {\n newEol = edit.eol;\n }\n if (edit.range && typeof edit.text === 'string') {\n singleEdits.push(edit);\n }\n }\n if (typeof newEol === 'number') {\n if (editor.hasModel()) {\n editor.getModel().pushEOL(newEol);\n }\n }\n return singleEdits;\n }\n static _isFullModelReplaceEdit(editor, edit) {\n if (!editor.hasModel()) {\n return false;\n }\n const model = editor.getModel();\n const editRange = model.validateRange(edit.range);\n const fullModelRange = model.getFullModelRange();\n return fullModelRange.equalsRange(editRange);\n }\n static execute(editor, _edits, addUndoStops) {\n if (addUndoStops) {\n editor.pushUndoStop();\n }\n const edits = FormattingEdit._handleEolEdits(editor, _edits);\n if (edits.length === 1 && FormattingEdit._isFullModelReplaceEdit(editor, edits[0])) {\n // We use replace semantics and hope that markers stay put...\n editor.executeEdits('formatEditsCommand', edits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text)));\n }\n else {\n editor.executeEdits('formatEditsCommand', edits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text)));\n }\n if (addUndoStops) {\n editor.pushUndoStop();\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { binarySearch } from '../../../../base/common/arrays.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { compare } from '../../../../base/common/strings.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Range } from '../../../common/core/range.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IMarkerService, MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nexport class MarkerCoordinate {\n constructor(marker, index, total) {\n this.marker = marker;\n this.index = index;\n this.total = total;\n }\n}\nlet MarkerList = class MarkerList {\n constructor(resourceFilter, _markerService, _configService) {\n this._markerService = _markerService;\n this._configService = _configService;\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._dispoables = new DisposableStore();\n this._markers = [];\n this._nextIdx = -1;\n if (URI.isUri(resourceFilter)) {\n this._resourceFilter = uri => uri.toString() === resourceFilter.toString();\n }\n else if (resourceFilter) {\n this._resourceFilter = resourceFilter;\n }\n const compareOrder = this._configService.getValue('problems.sortOrder');\n const compareMarker = (a, b) => {\n let res = compare(a.resource.toString(), b.resource.toString());\n if (res === 0) {\n if (compareOrder === 'position') {\n res = Range.compareRangesUsingStarts(a, b) || MarkerSeverity.compare(a.severity, b.severity);\n }\n else {\n res = MarkerSeverity.compare(a.severity, b.severity) || Range.compareRangesUsingStarts(a, b);\n }\n }\n return res;\n };\n const updateMarker = () => {\n this._markers = this._markerService.read({\n resource: URI.isUri(resourceFilter) ? resourceFilter : undefined,\n severities: MarkerSeverity.Error | MarkerSeverity.Warning | MarkerSeverity.Info\n });\n if (typeof resourceFilter === 'function') {\n this._markers = this._markers.filter(m => this._resourceFilter(m.resource));\n }\n this._markers.sort(compareMarker);\n };\n updateMarker();\n this._dispoables.add(_markerService.onMarkerChanged(uris => {\n if (!this._resourceFilter || uris.some(uri => this._resourceFilter(uri))) {\n updateMarker();\n this._nextIdx = -1;\n this._onDidChange.fire();\n }\n }));\n }\n dispose() {\n this._dispoables.dispose();\n this._onDidChange.dispose();\n }\n matches(uri) {\n if (!this._resourceFilter && !uri) {\n return true;\n }\n if (!this._resourceFilter || !uri) {\n return false;\n }\n return this._resourceFilter(uri);\n }\n get selected() {\n const marker = this._markers[this._nextIdx];\n return marker && new MarkerCoordinate(marker, this._nextIdx + 1, this._markers.length);\n }\n _initIdx(model, position, fwd) {\n let found = false;\n let idx = this._markers.findIndex(marker => marker.resource.toString() === model.uri.toString());\n if (idx < 0) {\n idx = binarySearch(this._markers, { resource: model.uri }, (a, b) => compare(a.resource.toString(), b.resource.toString()));\n if (idx < 0) {\n idx = ~idx;\n }\n }\n for (let i = idx; i < this._markers.length; i++) {\n let range = Range.lift(this._markers[i]);\n if (range.isEmpty()) {\n const word = model.getWordAtPosition(range.getStartPosition());\n if (word) {\n range = new Range(range.startLineNumber, word.startColumn, range.startLineNumber, word.endColumn);\n }\n }\n if (position && (range.containsPosition(position) || position.isBeforeOrEqual(range.getStartPosition()))) {\n this._nextIdx = i;\n found = true;\n break;\n }\n if (this._markers[i].resource.toString() !== model.uri.toString()) {\n break;\n }\n }\n if (!found) {\n // after the last change\n this._nextIdx = fwd ? 0 : this._markers.length - 1;\n }\n if (this._nextIdx < 0) {\n this._nextIdx = this._markers.length - 1;\n }\n }\n resetIndex() {\n this._nextIdx = -1;\n }\n move(fwd, model, position) {\n if (this._markers.length === 0) {\n return false;\n }\n const oldIdx = this._nextIdx;\n if (this._nextIdx === -1) {\n this._initIdx(model, position, fwd);\n }\n else if (fwd) {\n this._nextIdx = (this._nextIdx + 1) % this._markers.length;\n }\n else if (!fwd) {\n this._nextIdx = (this._nextIdx - 1 + this._markers.length) % this._markers.length;\n }\n if (oldIdx !== this._nextIdx) {\n return true;\n }\n return false;\n }\n find(uri, position) {\n let idx = this._markers.findIndex(marker => marker.resource.toString() === uri.toString());\n if (idx < 0) {\n return undefined;\n }\n for (; idx < this._markers.length; idx++) {\n if (Range.containsPosition(this._markers[idx], position)) {\n return new MarkerCoordinate(this._markers[idx], idx + 1, this._markers.length);\n }\n }\n return undefined;\n }\n};\nMarkerList = __decorate([\n __param(1, IMarkerService),\n __param(2, IConfigurationService)\n], MarkerList);\nexport { MarkerList };\nexport const IMarkerNavigationService = createDecorator('IMarkerNavigationService');\nlet MarkerNavigationService = class MarkerNavigationService {\n constructor(_markerService, _configService) {\n this._markerService = _markerService;\n this._configService = _configService;\n this._provider = new LinkedList();\n }\n getMarkerList(resource) {\n for (const provider of this._provider) {\n const result = provider.getMarkerList(resource);\n if (result) {\n return result;\n }\n }\n // default\n return new MarkerList(resource, this._markerService, this._configService);\n }\n};\nMarkerNavigationService = __decorate([\n __param(0, IMarkerService),\n __param(1, IConfigurationService)\n], MarkerNavigationService);\nregisterSingleton(IMarkerNavigationService, MarkerNavigationService, true);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Codicon } from '../../../base/common/codicons.js';\nimport Severity from '../../../base/common/severity.js';\nimport { problemsErrorIconForeground, problemsInfoIconForeground, problemsWarningIconForeground } from '../../theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../theme/common/themeService.js';\nexport var SeverityIcon;\n(function (SeverityIcon) {\n function className(severity) {\n switch (severity) {\n case Severity.Ignore:\n return 'severity-ignore ' + Codicon.info.classNames;\n case Severity.Info:\n return Codicon.info.classNames;\n case Severity.Warning:\n return Codicon.warning.classNames;\n case Severity.Error:\n return Codicon.error.classNames;\n default:\n return '';\n }\n }\n SeverityIcon.className = className;\n})(SeverityIcon || (SeverityIcon = {}));\nregisterThemingParticipant((theme, collector) => {\n const errorIconForeground = theme.getColor(problemsErrorIconForeground);\n if (errorIconForeground) {\n const errorCodiconSelector = Codicon.error.cssSelector;\n collector.addRule(`\n\t\t\t.monaco-editor .zone-widget ${errorCodiconSelector},\n\t\t\t.markers-panel .marker-icon${errorCodiconSelector},\n\t\t\t.text-search-provider-messages .providerMessage ${errorCodiconSelector},\n\t\t\t.extensions-viewlet > .extensions ${errorCodiconSelector} {\n\t\t\t\tcolor: ${errorIconForeground};\n\t\t\t}\n\t\t`);\n }\n const warningIconForeground = theme.getColor(problemsWarningIconForeground);\n if (warningIconForeground) {\n const warningCodiconSelector = Codicon.warning.cssSelector;\n collector.addRule(`\n\t\t\t.monaco-editor .zone-widget ${warningCodiconSelector},\n\t\t\t.markers-panel .marker-icon${warningCodiconSelector},\n\t\t\t.extensions-viewlet > .extensions ${warningCodiconSelector},\n\t\t\t.extension-editor ${warningCodiconSelector},\n\t\t\t.text-search-provider-messages .providerMessage ${warningCodiconSelector},\n\t\t\t.preferences-editor ${warningCodiconSelector} {\n\t\t\t\tcolor: ${warningIconForeground};\n\t\t\t}\n\t\t`);\n }\n const infoIconForeground = theme.getColor(problemsInfoIconForeground);\n if (infoIconForeground) {\n const infoCodiconSelector = Codicon.info.cssSelector;\n collector.addRule(`\n\t\t\t.monaco-editor .zone-widget ${infoCodiconSelector},\n\t\t\t.markers-panel .marker-icon${infoCodiconSelector},\n\t\t\t.extensions-viewlet > .extensions ${infoCodiconSelector},\n\t\t\t.text-search-provider-messages .providerMessage ${infoCodiconSelector},\n\t\t\t.extension-editor ${infoCodiconSelector} {\n\t\t\t\tcolor: ${infoIconForeground};\n\t\t\t}\n\t\t`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { splitLines } from '../../../../base/common/strings.js';\nimport './media/gotoErrorWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { peekViewTitleForeground, peekViewTitleInfoForeground, PeekViewWidget } from '../../peekView/browser/peekView.js';\nimport * as nls from '../../../../nls.js';\nimport { createAndFillInActionBarActions } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { IMenuService, MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILabelService } from '../../../../platform/label/common/label.js';\nimport { MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { SeverityIcon } from '../../../../platform/severityIcon/common/severityIcon.js';\nimport { contrastBorder, editorBackground, editorErrorBorder, editorErrorForeground, editorInfoBorder, editorInfoForeground, editorWarningBorder, editorWarningForeground, oneOf, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nclass MessageWidget {\n constructor(parent, editor, onRelatedInformation, _openerService, _labelService) {\n this._openerService = _openerService;\n this._labelService = _labelService;\n this._lines = 0;\n this._longestLineLength = 0;\n this._relatedDiagnostics = new WeakMap();\n this._disposables = new DisposableStore();\n this._editor = editor;\n const domNode = document.createElement('div');\n domNode.className = 'descriptioncontainer';\n this._messageBlock = document.createElement('div');\n this._messageBlock.classList.add('message');\n this._messageBlock.setAttribute('aria-live', 'assertive');\n this._messageBlock.setAttribute('role', 'alert');\n domNode.appendChild(this._messageBlock);\n this._relatedBlock = document.createElement('div');\n domNode.appendChild(this._relatedBlock);\n this._disposables.add(dom.addStandardDisposableListener(this._relatedBlock, 'click', event => {\n event.preventDefault();\n const related = this._relatedDiagnostics.get(event.target);\n if (related) {\n onRelatedInformation(related);\n }\n }));\n this._scrollable = new ScrollableElement(domNode, {\n horizontal: 1 /* ScrollbarVisibility.Auto */,\n vertical: 1 /* ScrollbarVisibility.Auto */,\n useShadows: false,\n horizontalScrollbarSize: 6,\n verticalScrollbarSize: 6\n });\n parent.appendChild(this._scrollable.getDomNode());\n this._disposables.add(this._scrollable.onScroll(e => {\n domNode.style.left = `-${e.scrollLeft}px`;\n domNode.style.top = `-${e.scrollTop}px`;\n }));\n this._disposables.add(this._scrollable);\n }\n dispose() {\n dispose(this._disposables);\n }\n update(marker) {\n const { source, message, relatedInformation, code } = marker;\n let sourceAndCodeLength = ((source === null || source === void 0 ? void 0 : source.length) || 0) + '()'.length;\n if (code) {\n if (typeof code === 'string') {\n sourceAndCodeLength += code.length;\n }\n else {\n sourceAndCodeLength += code.value.length;\n }\n }\n const lines = splitLines(message);\n this._lines = lines.length;\n this._longestLineLength = 0;\n for (const line of lines) {\n this._longestLineLength = Math.max(line.length + sourceAndCodeLength, this._longestLineLength);\n }\n dom.clearNode(this._messageBlock);\n this._messageBlock.setAttribute('aria-label', this.getAriaLabel(marker));\n this._editor.applyFontInfo(this._messageBlock);\n let lastLineElement = this._messageBlock;\n for (const line of lines) {\n lastLineElement = document.createElement('div');\n lastLineElement.innerText = line;\n if (line === '') {\n lastLineElement.style.height = this._messageBlock.style.lineHeight;\n }\n this._messageBlock.appendChild(lastLineElement);\n }\n if (source || code) {\n const detailsElement = document.createElement('span');\n detailsElement.classList.add('details');\n lastLineElement.appendChild(detailsElement);\n if (source) {\n const sourceElement = document.createElement('span');\n sourceElement.innerText = source;\n sourceElement.classList.add('source');\n detailsElement.appendChild(sourceElement);\n }\n if (code) {\n if (typeof code === 'string') {\n const codeElement = document.createElement('span');\n codeElement.innerText = `(${code})`;\n codeElement.classList.add('code');\n detailsElement.appendChild(codeElement);\n }\n else {\n this._codeLink = dom.$('a.code-link');\n this._codeLink.setAttribute('href', `${code.target.toString()}`);\n this._codeLink.onclick = (e) => {\n this._openerService.open(code.target, { allowCommands: true });\n e.preventDefault();\n e.stopPropagation();\n };\n const codeElement = dom.append(this._codeLink, dom.$('span'));\n codeElement.innerText = code.value;\n detailsElement.appendChild(this._codeLink);\n }\n }\n }\n dom.clearNode(this._relatedBlock);\n this._editor.applyFontInfo(this._relatedBlock);\n if (isNonEmptyArray(relatedInformation)) {\n const relatedInformationNode = this._relatedBlock.appendChild(document.createElement('div'));\n relatedInformationNode.style.paddingTop = `${Math.floor(this._editor.getOption(61 /* EditorOption.lineHeight */) * 0.66)}px`;\n this._lines += 1;\n for (const related of relatedInformation) {\n const container = document.createElement('div');\n const relatedResource = document.createElement('a');\n relatedResource.classList.add('filename');\n relatedResource.innerText = `${this._labelService.getUriBasenameLabel(related.resource)}(${related.startLineNumber}, ${related.startColumn}): `;\n relatedResource.title = this._labelService.getUriLabel(related.resource);\n this._relatedDiagnostics.set(relatedResource, related);\n const relatedMessage = document.createElement('span');\n relatedMessage.innerText = related.message;\n container.appendChild(relatedResource);\n container.appendChild(relatedMessage);\n this._lines += 1;\n relatedInformationNode.appendChild(container);\n }\n }\n const fontInfo = this._editor.getOption(46 /* EditorOption.fontInfo */);\n const scrollWidth = Math.ceil(fontInfo.typicalFullwidthCharacterWidth * this._longestLineLength * 0.75);\n const scrollHeight = fontInfo.lineHeight * this._lines;\n this._scrollable.setScrollDimensions({ scrollWidth, scrollHeight });\n }\n layout(height, width) {\n this._scrollable.getDomNode().style.height = `${height}px`;\n this._scrollable.getDomNode().style.width = `${width}px`;\n this._scrollable.setScrollDimensions({ width, height });\n }\n getHeightInLines() {\n return Math.min(17, this._lines);\n }\n getAriaLabel(marker) {\n let severityLabel = '';\n switch (marker.severity) {\n case MarkerSeverity.Error:\n severityLabel = nls.localize('Error', \"Error\");\n break;\n case MarkerSeverity.Warning:\n severityLabel = nls.localize('Warning', \"Warning\");\n break;\n case MarkerSeverity.Info:\n severityLabel = nls.localize('Info', \"Info\");\n break;\n case MarkerSeverity.Hint:\n severityLabel = nls.localize('Hint', \"Hint\");\n break;\n }\n let ariaLabel = nls.localize('marker aria', \"{0} at {1}. \", severityLabel, marker.startLineNumber + ':' + marker.startColumn);\n const model = this._editor.getModel();\n if (model && (marker.startLineNumber <= model.getLineCount()) && (marker.startLineNumber >= 1)) {\n const lineContent = model.getLineContent(marker.startLineNumber);\n ariaLabel = `${lineContent}, ${ariaLabel}`;\n }\n return ariaLabel;\n }\n}\nlet MarkerNavigationWidget = class MarkerNavigationWidget extends PeekViewWidget {\n constructor(editor, _themeService, _openerService, _menuService, instantiationService, _contextKeyService, _labelService) {\n super(editor, { showArrow: true, showFrame: true, isAccessible: true, frameWidth: 1 }, instantiationService);\n this._themeService = _themeService;\n this._openerService = _openerService;\n this._menuService = _menuService;\n this._contextKeyService = _contextKeyService;\n this._labelService = _labelService;\n this._callOnDispose = new DisposableStore();\n this._onDidSelectRelatedInformation = new Emitter();\n this.onDidSelectRelatedInformation = this._onDidSelectRelatedInformation.event;\n this._severity = MarkerSeverity.Warning;\n this._backgroundColor = Color.white;\n this._applyTheme(_themeService.getColorTheme());\n this._callOnDispose.add(_themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\n this.create();\n }\n _applyTheme(theme) {\n this._backgroundColor = theme.getColor(editorMarkerNavigationBackground);\n let colorId = editorMarkerNavigationError;\n let headerBackground = editorMarkerNavigationErrorHeader;\n if (this._severity === MarkerSeverity.Warning) {\n colorId = editorMarkerNavigationWarning;\n headerBackground = editorMarkerNavigationWarningHeader;\n }\n else if (this._severity === MarkerSeverity.Info) {\n colorId = editorMarkerNavigationInfo;\n headerBackground = editorMarkerNavigationInfoHeader;\n }\n const frameColor = theme.getColor(colorId);\n const headerBg = theme.getColor(headerBackground);\n this.style({\n arrowColor: frameColor,\n frameColor: frameColor,\n headerBackgroundColor: headerBg,\n primaryHeadingColor: theme.getColor(peekViewTitleForeground),\n secondaryHeadingColor: theme.getColor(peekViewTitleInfoForeground)\n }); // style() will trigger _applyStyles\n }\n _applyStyles() {\n if (this._parentContainer) {\n this._parentContainer.style.backgroundColor = this._backgroundColor ? this._backgroundColor.toString() : '';\n }\n super._applyStyles();\n }\n dispose() {\n this._callOnDispose.dispose();\n super.dispose();\n }\n _fillHead(container) {\n super._fillHead(container);\n this._disposables.add(this._actionbarWidget.actionRunner.onBeforeRun(e => this.editor.focus()));\n const actions = [];\n const menu = this._menuService.createMenu(MarkerNavigationWidget.TitleMenu, this._contextKeyService);\n createAndFillInActionBarActions(menu, undefined, actions);\n this._actionbarWidget.push(actions, { label: false, icon: true, index: 0 });\n menu.dispose();\n }\n _fillTitleIcon(container) {\n this._icon = dom.append(container, dom.$(''));\n }\n _fillBody(container) {\n this._parentContainer = container;\n container.classList.add('marker-widget');\n this._parentContainer.tabIndex = 0;\n this._parentContainer.setAttribute('role', 'tooltip');\n this._container = document.createElement('div');\n container.appendChild(this._container);\n this._message = new MessageWidget(this._container, this.editor, related => this._onDidSelectRelatedInformation.fire(related), this._openerService, this._labelService);\n this._disposables.add(this._message);\n }\n show() {\n throw new Error('call showAtMarker');\n }\n showAtMarker(marker, markerIdx, markerCount) {\n // update:\n // * title\n // * message\n this._container.classList.remove('stale');\n this._message.update(marker);\n // update frame color (only applied on 'show')\n this._severity = marker.severity;\n this._applyTheme(this._themeService.getColorTheme());\n // show\n const range = Range.lift(marker);\n const editorPosition = this.editor.getPosition();\n const position = editorPosition && range.containsPosition(editorPosition) ? editorPosition : range.getStartPosition();\n super.show(position, this.computeRequiredHeight());\n const model = this.editor.getModel();\n if (model) {\n const detail = markerCount > 1\n ? nls.localize('problems', \"{0} of {1} problems\", markerIdx, markerCount)\n : nls.localize('change', \"{0} of {1} problem\", markerIdx, markerCount);\n this.setTitle(basename(model.uri), detail);\n }\n this._icon.className = `codicon ${SeverityIcon.className(MarkerSeverity.toSeverity(this._severity))}`;\n this.editor.revealPositionNearTop(position, 0 /* ScrollType.Smooth */);\n this.editor.focus();\n }\n updateMarker(marker) {\n this._container.classList.remove('stale');\n this._message.update(marker);\n }\n showStale() {\n this._container.classList.add('stale');\n this._relayout();\n }\n _doLayoutBody(heightInPixel, widthInPixel) {\n super._doLayoutBody(heightInPixel, widthInPixel);\n this._heightInPixel = heightInPixel;\n this._message.layout(heightInPixel, widthInPixel);\n this._container.style.height = `${heightInPixel}px`;\n }\n _onWidth(widthInPixel) {\n this._message.layout(this._heightInPixel, widthInPixel);\n }\n _relayout() {\n super._relayout(this.computeRequiredHeight());\n }\n computeRequiredHeight() {\n return 3 + this._message.getHeightInLines();\n }\n};\nMarkerNavigationWidget.TitleMenu = new MenuId('gotoErrorTitleMenu');\nMarkerNavigationWidget = __decorate([\n __param(1, IThemeService),\n __param(2, IOpenerService),\n __param(3, IMenuService),\n __param(4, IInstantiationService),\n __param(5, IContextKeyService),\n __param(6, ILabelService)\n], MarkerNavigationWidget);\nexport { MarkerNavigationWidget };\n// theming\nconst errorDefault = oneOf(editorErrorForeground, editorErrorBorder);\nconst warningDefault = oneOf(editorWarningForeground, editorWarningBorder);\nconst infoDefault = oneOf(editorInfoForeground, editorInfoBorder);\nexport const editorMarkerNavigationError = registerColor('editorMarkerNavigationError.background', { dark: errorDefault, light: errorDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('editorMarkerNavigationError', 'Editor marker navigation widget error color.'));\nexport const editorMarkerNavigationErrorHeader = registerColor('editorMarkerNavigationError.headerBackground', { dark: transparent(editorMarkerNavigationError, .1), light: transparent(editorMarkerNavigationError, .1), hcDark: null, hcLight: null }, nls.localize('editorMarkerNavigationErrorHeaderBackground', 'Editor marker navigation widget error heading background.'));\nexport const editorMarkerNavigationWarning = registerColor('editorMarkerNavigationWarning.background', { dark: warningDefault, light: warningDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('editorMarkerNavigationWarning', 'Editor marker navigation widget warning color.'));\nexport const editorMarkerNavigationWarningHeader = registerColor('editorMarkerNavigationWarning.headerBackground', { dark: transparent(editorMarkerNavigationWarning, .1), light: transparent(editorMarkerNavigationWarning, .1), hcDark: '#0C141F', hcLight: transparent(editorMarkerNavigationWarning, .2) }, nls.localize('editorMarkerNavigationWarningBackground', 'Editor marker navigation widget warning heading background.'));\nexport const editorMarkerNavigationInfo = registerColor('editorMarkerNavigationInfo.background', { dark: infoDefault, light: infoDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('editorMarkerNavigationInfo', 'Editor marker navigation widget info color.'));\nexport const editorMarkerNavigationInfoHeader = registerColor('editorMarkerNavigationInfo.headerBackground', { dark: transparent(editorMarkerNavigationInfo, .1), light: transparent(editorMarkerNavigationInfo, .1), hcDark: null, hcLight: null }, nls.localize('editorMarkerNavigationInfoHeaderBackground', 'Editor marker navigation widget info heading background.'));\nexport const editorMarkerNavigationBackground = registerColor('editorMarkerNavigation.background', { dark: editorBackground, light: editorBackground, hcDark: editorBackground, hcLight: editorBackground }, nls.localize('editorMarkerNavigationBackground', 'Editor marker navigation widget background.'));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IMarkerNavigationService } from './markerNavigationService.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { MarkerNavigationWidget } from './gotoErrorWidget.js';\nlet MarkerController = class MarkerController {\n constructor(editor, _markerNavigationService, _contextKeyService, _editorService, _instantiationService) {\n this._markerNavigationService = _markerNavigationService;\n this._contextKeyService = _contextKeyService;\n this._editorService = _editorService;\n this._instantiationService = _instantiationService;\n this._sessionDispoables = new DisposableStore();\n this._editor = editor;\n this._widgetVisible = CONTEXT_MARKERS_NAVIGATION_VISIBLE.bindTo(this._contextKeyService);\n }\n static get(editor) {\n return editor.getContribution(MarkerController.ID);\n }\n dispose() {\n this._cleanUp();\n this._sessionDispoables.dispose();\n }\n _cleanUp() {\n this._widgetVisible.reset();\n this._sessionDispoables.clear();\n this._widget = undefined;\n this._model = undefined;\n }\n _getOrCreateModel(uri) {\n if (this._model && this._model.matches(uri)) {\n return this._model;\n }\n let reusePosition = false;\n if (this._model) {\n reusePosition = true;\n this._cleanUp();\n }\n this._model = this._markerNavigationService.getMarkerList(uri);\n if (reusePosition) {\n this._model.move(true, this._editor.getModel(), this._editor.getPosition());\n }\n this._widget = this._instantiationService.createInstance(MarkerNavigationWidget, this._editor);\n this._widget.onDidClose(() => this.close(), this, this._sessionDispoables);\n this._widgetVisible.set(true);\n this._sessionDispoables.add(this._model);\n this._sessionDispoables.add(this._widget);\n // follow cursor\n this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(e => {\n var _a, _b, _c;\n if (!((_a = this._model) === null || _a === void 0 ? void 0 : _a.selected) || !Range.containsPosition((_b = this._model) === null || _b === void 0 ? void 0 : _b.selected.marker, e.position)) {\n (_c = this._model) === null || _c === void 0 ? void 0 : _c.resetIndex();\n }\n }));\n // update markers\n this._sessionDispoables.add(this._model.onDidChange(() => {\n if (!this._widget || !this._widget.position || !this._model) {\n return;\n }\n const info = this._model.find(this._editor.getModel().uri, this._widget.position);\n if (info) {\n this._widget.updateMarker(info.marker);\n }\n else {\n this._widget.showStale();\n }\n }));\n // open related\n this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(related => {\n this._editorService.openCodeEditor({\n resource: related.resource,\n options: { pinned: true, revealIfOpened: true, selection: Range.lift(related).collapseToStart() }\n }, this._editor);\n this.close(false);\n }));\n this._sessionDispoables.add(this._editor.onDidChangeModel(() => this._cleanUp()));\n return this._model;\n }\n close(focusEditor = true) {\n this._cleanUp();\n if (focusEditor) {\n this._editor.focus();\n }\n }\n showAtMarker(marker) {\n if (this._editor.hasModel()) {\n const model = this._getOrCreateModel(this._editor.getModel().uri);\n model.resetIndex();\n model.move(true, this._editor.getModel(), new Position(marker.startLineNumber, marker.startColumn));\n if (model.selected) {\n this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\n }\n }\n }\n nagivate(next, multiFile) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._editor.hasModel()) {\n const model = this._getOrCreateModel(multiFile ? undefined : this._editor.getModel().uri);\n model.move(next, this._editor.getModel(), this._editor.getPosition());\n if (!model.selected) {\n return;\n }\n if (model.selected.marker.resource.toString() !== this._editor.getModel().uri.toString()) {\n // show in different editor\n this._cleanUp();\n const otherEditor = yield this._editorService.openCodeEditor({\n resource: model.selected.marker.resource,\n options: { pinned: false, revealIfOpened: true, selectionRevealType: 2 /* TextEditorSelectionRevealType.NearTop */, selection: model.selected.marker }\n }, this._editor);\n if (otherEditor) {\n (_a = MarkerController.get(otherEditor)) === null || _a === void 0 ? void 0 : _a.close();\n (_b = MarkerController.get(otherEditor)) === null || _b === void 0 ? void 0 : _b.nagivate(next, multiFile);\n }\n }\n else {\n // show in this editor\n this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\n }\n }\n });\n }\n};\nMarkerController.ID = 'editor.contrib.markerController';\nMarkerController = __decorate([\n __param(1, IMarkerNavigationService),\n __param(2, IContextKeyService),\n __param(3, ICodeEditorService),\n __param(4, IInstantiationService)\n], MarkerController);\nexport { MarkerController };\nclass MarkerNavigationAction extends EditorAction {\n constructor(_next, _multiFile, opts) {\n super(opts);\n this._next = _next;\n this._multiFile = _multiFile;\n }\n run(_accessor, editor) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (editor.hasModel()) {\n (_a = MarkerController.get(editor)) === null || _a === void 0 ? void 0 : _a.nagivate(this._next, this._multiFile);\n }\n });\n }\n}\nexport class NextMarkerAction extends MarkerNavigationAction {\n constructor() {\n super(true, false, {\n id: NextMarkerAction.ID,\n label: NextMarkerAction.LABEL,\n alias: 'Go to Next Problem (Error, Warning, Info)',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 512 /* KeyMod.Alt */ | 66 /* KeyCode.F8 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MarkerNavigationWidget.TitleMenu,\n title: NextMarkerAction.LABEL,\n icon: registerIcon('marker-navigation-next', Codicon.arrowDown, nls.localize('nextMarkerIcon', 'Icon for goto next marker.')),\n group: 'navigation',\n order: 1\n }\n });\n }\n}\nNextMarkerAction.ID = 'editor.action.marker.next';\nNextMarkerAction.LABEL = nls.localize('markerAction.next.label', \"Go to Next Problem (Error, Warning, Info)\");\nclass PrevMarkerAction extends MarkerNavigationAction {\n constructor() {\n super(false, false, {\n id: PrevMarkerAction.ID,\n label: PrevMarkerAction.LABEL,\n alias: 'Go to Previous Problem (Error, Warning, Info)',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 66 /* KeyCode.F8 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MarkerNavigationWidget.TitleMenu,\n title: PrevMarkerAction.LABEL,\n icon: registerIcon('marker-navigation-previous', Codicon.arrowUp, nls.localize('previousMarkerIcon', 'Icon for goto previous marker.')),\n group: 'navigation',\n order: 2\n }\n });\n }\n}\nPrevMarkerAction.ID = 'editor.action.marker.prev';\nPrevMarkerAction.LABEL = nls.localize('markerAction.previous.label', \"Go to Previous Problem (Error, Warning, Info)\");\nclass NextMarkerInFilesAction extends MarkerNavigationAction {\n constructor() {\n super(true, true, {\n id: 'editor.action.marker.nextInFiles',\n label: nls.localize('markerAction.nextInFiles.label', \"Go to Next Problem in Files (Error, Warning, Info)\"),\n alias: 'Go to Next Problem in Files (Error, Warning, Info)',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 66 /* KeyCode.F8 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarGoMenu,\n title: nls.localize({ key: 'miGotoNextProblem', comment: ['&& denotes a mnemonic'] }, \"Next &&Problem\"),\n group: '6_problem_nav',\n order: 1\n }\n });\n }\n}\nclass PrevMarkerInFilesAction extends MarkerNavigationAction {\n constructor() {\n super(false, true, {\n id: 'editor.action.marker.prevInFiles',\n label: nls.localize('markerAction.previousInFiles.label', \"Go to Previous Problem in Files (Error, Warning, Info)\"),\n alias: 'Go to Previous Problem in Files (Error, Warning, Info)',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 1024 /* KeyMod.Shift */ | 66 /* KeyCode.F8 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarGoMenu,\n title: nls.localize({ key: 'miGotoPreviousProblem', comment: ['&& denotes a mnemonic'] }, \"Previous &&Problem\"),\n group: '6_problem_nav',\n order: 2\n }\n });\n }\n}\nregisterEditorContribution(MarkerController.ID, MarkerController);\nregisterEditorAction(NextMarkerAction);\nregisterEditorAction(PrevMarkerAction);\nregisterEditorAction(NextMarkerInFilesAction);\nregisterEditorAction(PrevMarkerInFilesAction);\nconst CONTEXT_MARKERS_NAVIGATION_VISIBLE = new RawContextKey('markersNavigationVisible', false);\nconst MarkerCommand = EditorCommand.bindToContribution(MarkerController.get);\nregisterEditorCommand(new MarkerCommand({\n id: 'closeMarkersNavigation',\n precondition: CONTEXT_MARKERS_NAVIGATION_VISIBLE,\n handler: x => x.close(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 50,\n kbExpr: EditorContextKeys.focus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Emitter } from '../../../../base/common/event.js';\nimport { combinedDisposable, DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { isEqual } from '../../../../base/common/resources.js';\nimport { EditorCommand, registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { localize } from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { KeybindingsRegistry } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nexport const ctxHasSymbols = new RawContextKey('hasSymbols', false, localize('hasSymbols', \"Whether there are symbol locations that can be navigated via keyboard-only.\"));\nexport const ISymbolNavigationService = createDecorator('ISymbolNavigationService');\nlet SymbolNavigationService = class SymbolNavigationService {\n constructor(contextKeyService, _editorService, _notificationService, _keybindingService) {\n this._editorService = _editorService;\n this._notificationService = _notificationService;\n this._keybindingService = _keybindingService;\n this._currentModel = undefined;\n this._currentIdx = -1;\n this._ignoreEditorChange = false;\n this._ctxHasSymbols = ctxHasSymbols.bindTo(contextKeyService);\n }\n reset() {\n var _a, _b;\n this._ctxHasSymbols.reset();\n (_a = this._currentState) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this._currentMessage) === null || _b === void 0 ? void 0 : _b.dispose();\n this._currentModel = undefined;\n this._currentIdx = -1;\n }\n put(anchor) {\n const refModel = anchor.parent.parent;\n if (refModel.references.length <= 1) {\n this.reset();\n return;\n }\n this._currentModel = refModel;\n this._currentIdx = refModel.references.indexOf(anchor);\n this._ctxHasSymbols.set(true);\n this._showMessage();\n const editorState = new EditorState(this._editorService);\n const listener = editorState.onDidChange(_ => {\n if (this._ignoreEditorChange) {\n return;\n }\n const editor = this._editorService.getActiveCodeEditor();\n if (!editor) {\n return;\n }\n const model = editor.getModel();\n const position = editor.getPosition();\n if (!model || !position) {\n return;\n }\n let seenUri = false;\n let seenPosition = false;\n for (const reference of refModel.references) {\n if (isEqual(reference.uri, model.uri)) {\n seenUri = true;\n seenPosition = seenPosition || Range.containsPosition(reference.range, position);\n }\n else if (seenUri) {\n break;\n }\n }\n if (!seenUri || !seenPosition) {\n this.reset();\n }\n });\n this._currentState = combinedDisposable(editorState, listener);\n }\n revealNext(source) {\n if (!this._currentModel) {\n return Promise.resolve();\n }\n // get next result and advance\n this._currentIdx += 1;\n this._currentIdx %= this._currentModel.references.length;\n const reference = this._currentModel.references[this._currentIdx];\n // status\n this._showMessage();\n // open editor, ignore events while that happens\n this._ignoreEditorChange = true;\n return this._editorService.openCodeEditor({\n resource: reference.uri,\n options: {\n selection: Range.collapseToStart(reference.range),\n selectionRevealType: 3 /* TextEditorSelectionRevealType.NearTopIfOutsideViewport */\n }\n }, source).finally(() => {\n this._ignoreEditorChange = false;\n });\n }\n _showMessage() {\n var _a;\n (_a = this._currentMessage) === null || _a === void 0 ? void 0 : _a.dispose();\n const kb = this._keybindingService.lookupKeybinding('editor.gotoNextSymbolFromResult');\n const message = kb\n ? localize('location.kb', \"Symbol {0} of {1}, {2} for next\", this._currentIdx + 1, this._currentModel.references.length, kb.getLabel())\n : localize('location', \"Symbol {0} of {1}\", this._currentIdx + 1, this._currentModel.references.length);\n this._currentMessage = this._notificationService.status(message);\n }\n};\nSymbolNavigationService = __decorate([\n __param(0, IContextKeyService),\n __param(1, ICodeEditorService),\n __param(2, INotificationService),\n __param(3, IKeybindingService)\n], SymbolNavigationService);\nregisterSingleton(ISymbolNavigationService, SymbolNavigationService, true);\nregisterEditorCommand(new class extends EditorCommand {\n constructor() {\n super({\n id: 'editor.gotoNextSymbolFromResult',\n precondition: ctxHasSymbols,\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */,\n primary: 70 /* KeyCode.F12 */\n }\n });\n }\n runEditorCommand(accessor, editor) {\n return accessor.get(ISymbolNavigationService).revealNext(editor);\n }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'editor.gotoNextSymbolFromResult.cancel',\n weight: 100 /* KeybindingWeight.EditorContrib */,\n when: ctxHasSymbols,\n primary: 9 /* KeyCode.Escape */,\n handler(accessor) {\n accessor.get(ISymbolNavigationService).reset();\n }\n});\n//\nlet EditorState = class EditorState {\n constructor(editorService) {\n this._listener = new Map();\n this._disposables = new DisposableStore();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._disposables.add(editorService.onCodeEditorRemove(this._onDidRemoveEditor, this));\n this._disposables.add(editorService.onCodeEditorAdd(this._onDidAddEditor, this));\n editorService.listCodeEditors().forEach(this._onDidAddEditor, this);\n }\n dispose() {\n this._disposables.dispose();\n this._onDidChange.dispose();\n dispose(this._listener.values());\n }\n _onDidAddEditor(editor) {\n this._listener.set(editor, combinedDisposable(editor.onDidChangeCursorPosition(_ => this._onDidChange.fire({ editor })), editor.onDidChangeModelContent(_ => this._onDidChange.fire({ editor }))));\n }\n _onDidRemoveEditor(editor) {\n var _a;\n (_a = this._listener.get(editor)) === null || _a === void 0 ? void 0 : _a.dispose();\n this._listener.delete(editor);\n }\n};\nEditorState = __decorate([\n __param(0, ICodeEditorService)\n], EditorState);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a, _b, _c, _d, _e, _f, _g, _h;\nimport { isStandalone } from '../../../../base/browser/browser.js';\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { createCancelablePromise, raceCancellation } from '../../../../base/common/async.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { isWeb } from '../../../../base/common/platform.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { isCodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, registerInstantiatedEditorAction } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/embeddedCodeEditorWidget.js';\nimport * as corePosition from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { isLocationLink } from '../../../common/languages.js';\nimport { ReferencesController } from './peek/referencesController.js';\nimport { ReferencesModel } from './referencesModel.js';\nimport { ISymbolNavigationService } from './symbolNavigation.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport { PeekContext } from '../../peekView/browser/peekView.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { getDeclarationsAtPosition, getDefinitionsAtPosition, getImplementationsAtPosition, getReferencesAtPosition, getTypeDefinitionsAtPosition } from './goToSymbol.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nMenuRegistry.appendMenuItem(MenuId.EditorContext, {\n submenu: MenuId.EditorContextPeek,\n title: nls.localize('peek.submenu', \"Peek\"),\n group: 'navigation',\n order: 100\n});\nconst _goToActionIds = new Set();\nfunction registerGoToAction(ctor) {\n const result = new ctor();\n registerInstantiatedEditorAction(result);\n _goToActionIds.add(result.id);\n return result;\n}\nexport class SymbolNavigationAnchor {\n constructor(model, position) {\n this.model = model;\n this.position = position;\n }\n static is(thing) {\n if (!thing || typeof thing !== 'object') {\n return false;\n }\n if (thing instanceof SymbolNavigationAnchor) {\n return true;\n }\n if (corePosition.Position.isIPosition(thing.position) && thing.model) {\n return true;\n }\n return false;\n }\n}\nexport class SymbolNavigationAction extends EditorAction {\n constructor(configuration, opts) {\n super(opts);\n this.configuration = configuration;\n }\n run(accessor, editor, arg) {\n if (!editor.hasModel()) {\n return Promise.resolve(undefined);\n }\n const notificationService = accessor.get(INotificationService);\n const editorService = accessor.get(ICodeEditorService);\n const progressService = accessor.get(IEditorProgressService);\n const symbolNavService = accessor.get(ISymbolNavigationService);\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const model = editor.getModel();\n const position = editor.getPosition();\n const anchor = SymbolNavigationAnchor.is(arg) ? arg : new SymbolNavigationAnchor(model, position);\n const cts = new EditorStateCancellationTokenSource(editor, 1 /* CodeEditorStateFlag.Value */ | 4 /* CodeEditorStateFlag.Position */);\n const promise = raceCancellation(this._getLocationModel(languageFeaturesService, anchor.model, anchor.position, cts.token), cts.token).then((references) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n if (!references || cts.token.isCancellationRequested) {\n return;\n }\n alert(references.ariaMessage);\n let altAction;\n if (references.referenceAt(model.uri, position)) {\n const altActionId = this._getAlternativeCommand(editor);\n if (!SymbolNavigationAction._activeAlternativeCommands.has(altActionId) && _goToActionIds.has(altActionId)) {\n altAction = editor.getAction(altActionId);\n }\n }\n const referenceCount = references.references.length;\n if (referenceCount === 0) {\n // no result -> show message\n if (!this.configuration.muteMessage) {\n const info = model.getWordAtPosition(position);\n (_a = MessageController.get(editor)) === null || _a === void 0 ? void 0 : _a.showMessage(this._getNoResultFoundMessage(info), position);\n }\n }\n else if (referenceCount === 1 && altAction) {\n // already at the only result, run alternative\n SymbolNavigationAction._activeAlternativeCommands.add(this.id);\n altAction.run().finally(() => {\n SymbolNavigationAction._activeAlternativeCommands.delete(this.id);\n });\n }\n else {\n // normal results handling\n return this._onResult(editorService, symbolNavService, editor, references);\n }\n }), (err) => {\n // report an error\n notificationService.error(err);\n }).finally(() => {\n cts.dispose();\n });\n progressService.showWhile(promise, 250);\n return promise;\n }\n _onResult(editorService, symbolNavService, editor, model) {\n return __awaiter(this, void 0, void 0, function* () {\n const gotoLocation = this._getGoToPreference(editor);\n if (!(editor instanceof EmbeddedCodeEditorWidget) && (this.configuration.openInPeek || (gotoLocation === 'peek' && model.references.length > 1))) {\n this._openInPeek(editor, model);\n }\n else {\n const next = model.firstReference();\n const peek = model.references.length > 1 && gotoLocation === 'gotoAndPeek';\n const targetEditor = yield this._openReference(editor, editorService, next, this.configuration.openToSide, !peek);\n if (peek && targetEditor) {\n this._openInPeek(targetEditor, model);\n }\n else {\n model.dispose();\n }\n // keep remaining locations around when using\n // 'goto'-mode\n if (gotoLocation === 'goto') {\n symbolNavService.put(next);\n }\n }\n });\n }\n _openReference(editor, editorService, reference, sideBySide, highlight) {\n return __awaiter(this, void 0, void 0, function* () {\n // range is the target-selection-range when we have one\n // and the fallback is the 'full' range\n let range = undefined;\n if (isLocationLink(reference)) {\n range = reference.targetSelectionRange;\n }\n if (!range) {\n range = reference.range;\n }\n if (!range) {\n return undefined;\n }\n const targetEditor = yield editorService.openCodeEditor({\n resource: reference.uri,\n options: {\n selection: Range.collapseToStart(range),\n selectionRevealType: 3 /* TextEditorSelectionRevealType.NearTopIfOutsideViewport */,\n selectionSource: \"code.jump\" /* TextEditorSelectionSource.JUMP */\n }\n }, editor, sideBySide);\n if (!targetEditor) {\n return undefined;\n }\n if (highlight) {\n const modelNow = targetEditor.getModel();\n const decorations = targetEditor.createDecorationsCollection([{ range, options: { description: 'symbol-navigate-action-highlight', className: 'symbolHighlight' } }]);\n setTimeout(() => {\n if (targetEditor.getModel() === modelNow) {\n decorations.clear();\n }\n }, 350);\n }\n return targetEditor;\n });\n }\n _openInPeek(target, model) {\n const controller = ReferencesController.get(target);\n if (controller && target.hasModel()) {\n controller.toggleWidget(target.getSelection(), createCancelablePromise(_ => Promise.resolve(model)), this.configuration.openInPeek);\n }\n else {\n model.dispose();\n }\n }\n}\nSymbolNavigationAction._activeAlternativeCommands = new Set();\n//#region --- DEFINITION\nexport class DefinitionAction extends SymbolNavigationAction {\n _getLocationModel(languageFeaturesService, model, position, token) {\n return __awaiter(this, void 0, void 0, function* () {\n return new ReferencesModel(yield getDefinitionsAtPosition(languageFeaturesService.definitionProvider, model, position, token), nls.localize('def.title', 'Definitions'));\n });\n }\n _getNoResultFoundMessage(info) {\n return info && info.word\n ? nls.localize('noResultWord', \"No definition found for '{0}'\", info.word)\n : nls.localize('generic.noResults', \"No definition found\");\n }\n _getAlternativeCommand(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).alternativeDefinitionCommand;\n }\n _getGoToPreference(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).multipleDefinitions;\n }\n}\nconst goToDefinitionKb = isWeb && !isStandalone()\n ? 2048 /* KeyMod.CtrlCmd */ | 70 /* KeyCode.F12 */\n : 70 /* KeyCode.F12 */;\nregisterGoToAction((_a = class GoToDefinitionAction extends DefinitionAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: false,\n muteMessage: false\n }, {\n id: GoToDefinitionAction.id,\n label: nls.localize('actions.goToDecl.label', \"Go to Definition\"),\n alias: 'Go to Definition',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: goToDefinitionKb,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: 'navigation',\n order: 1.1\n }\n });\n CommandsRegistry.registerCommandAlias('editor.action.goToDeclaration', GoToDefinitionAction.id);\n }\n },\n _a.id = 'editor.action.revealDefinition',\n _a));\nregisterGoToAction((_b = class OpenDefinitionToSideAction extends DefinitionAction {\n constructor() {\n super({\n openToSide: true,\n openInPeek: false,\n muteMessage: false\n }, {\n id: OpenDefinitionToSideAction.id,\n label: nls.localize('actions.goToDeclToSide.label', \"Open Definition to the Side\"),\n alias: 'Open Definition to the Side',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, goToDefinitionKb),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n CommandsRegistry.registerCommandAlias('editor.action.openDeclarationToTheSide', OpenDefinitionToSideAction.id);\n }\n },\n _b.id = 'editor.action.revealDefinitionAside',\n _b));\nregisterGoToAction((_c = class PeekDefinitionAction extends DefinitionAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: true,\n muteMessage: false\n }, {\n id: PeekDefinitionAction.id,\n label: nls.localize('actions.previewDecl.label', \"Peek Definition\"),\n alias: 'Peek Definition',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 512 /* KeyMod.Alt */ | 70 /* KeyCode.F12 */,\n linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 68 /* KeyCode.F10 */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n menuId: MenuId.EditorContextPeek,\n group: 'peek',\n order: 2\n }\n });\n CommandsRegistry.registerCommandAlias('editor.action.previewDeclaration', PeekDefinitionAction.id);\n }\n },\n _c.id = 'editor.action.peekDefinition',\n _c));\n//#endregion\n//#region --- DECLARATION\nclass DeclarationAction extends SymbolNavigationAction {\n _getLocationModel(languageFeaturesService, model, position, token) {\n return __awaiter(this, void 0, void 0, function* () {\n return new ReferencesModel(yield getDeclarationsAtPosition(languageFeaturesService.declarationProvider, model, position, token), nls.localize('decl.title', 'Declarations'));\n });\n }\n _getNoResultFoundMessage(info) {\n return info && info.word\n ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\n : nls.localize('decl.generic.noResults', \"No declaration found\");\n }\n _getAlternativeCommand(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).alternativeDeclarationCommand;\n }\n _getGoToPreference(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).multipleDeclarations;\n }\n}\nregisterGoToAction((_d = class GoToDeclarationAction extends DeclarationAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: false,\n muteMessage: false\n }, {\n id: GoToDeclarationAction.id,\n label: nls.localize('actions.goToDeclaration.label', \"Go to Declaration\"),\n alias: 'Go to Declaration',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n contextMenuOpts: {\n group: 'navigation',\n order: 1.3\n },\n });\n }\n _getNoResultFoundMessage(info) {\n return info && info.word\n ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\n : nls.localize('decl.generic.noResults', \"No declaration found\");\n }\n },\n _d.id = 'editor.action.revealDeclaration',\n _d));\nregisterGoToAction(class PeekDeclarationAction extends DeclarationAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: true,\n muteMessage: false\n }, {\n id: 'editor.action.peekDeclaration',\n label: nls.localize('actions.peekDecl.label', \"Peek Declaration\"),\n alias: 'Peek Declaration',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n contextMenuOpts: {\n menuId: MenuId.EditorContextPeek,\n group: 'peek',\n order: 3\n }\n });\n }\n});\n//#endregion\n//#region --- TYPE DEFINITION\nclass TypeDefinitionAction extends SymbolNavigationAction {\n _getLocationModel(languageFeaturesService, model, position, token) {\n return __awaiter(this, void 0, void 0, function* () {\n return new ReferencesModel(yield getTypeDefinitionsAtPosition(languageFeaturesService.typeDefinitionProvider, model, position, token), nls.localize('typedef.title', 'Type Definitions'));\n });\n }\n _getNoResultFoundMessage(info) {\n return info && info.word\n ? nls.localize('goToTypeDefinition.noResultWord', \"No type definition found for '{0}'\", info.word)\n : nls.localize('goToTypeDefinition.generic.noResults', \"No type definition found\");\n }\n _getAlternativeCommand(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).alternativeTypeDefinitionCommand;\n }\n _getGoToPreference(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).multipleTypeDefinitions;\n }\n}\nregisterGoToAction((_e = class GoToTypeDefinitionAction extends TypeDefinitionAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: false,\n muteMessage: false\n }, {\n id: GoToTypeDefinitionAction.ID,\n label: nls.localize('actions.goToTypeDefinition.label', \"Go to Type Definition\"),\n alias: 'Go to Type Definition',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasTypeDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 0,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: 'navigation',\n order: 1.4\n }\n });\n }\n },\n _e.ID = 'editor.action.goToTypeDefinition',\n _e));\nregisterGoToAction((_f = class PeekTypeDefinitionAction extends TypeDefinitionAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: true,\n muteMessage: false\n }, {\n id: PeekTypeDefinitionAction.ID,\n label: nls.localize('actions.peekTypeDefinition.label', \"Peek Type Definition\"),\n alias: 'Peek Type Definition',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasTypeDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n contextMenuOpts: {\n menuId: MenuId.EditorContextPeek,\n group: 'peek',\n order: 4\n }\n });\n }\n },\n _f.ID = 'editor.action.peekTypeDefinition',\n _f));\n//#endregion\n//#region --- IMPLEMENTATION\nclass ImplementationAction extends SymbolNavigationAction {\n _getLocationModel(languageFeaturesService, model, position, token) {\n return __awaiter(this, void 0, void 0, function* () {\n return new ReferencesModel(yield getImplementationsAtPosition(languageFeaturesService.implementationProvider, model, position, token), nls.localize('impl.title', 'Implementations'));\n });\n }\n _getNoResultFoundMessage(info) {\n return info && info.word\n ? nls.localize('goToImplementation.noResultWord', \"No implementation found for '{0}'\", info.word)\n : nls.localize('goToImplementation.generic.noResults', \"No implementation found\");\n }\n _getAlternativeCommand(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).alternativeImplementationCommand;\n }\n _getGoToPreference(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).multipleImplementations;\n }\n}\nregisterGoToAction((_g = class GoToImplementationAction extends ImplementationAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: false,\n muteMessage: false\n }, {\n id: GoToImplementationAction.ID,\n label: nls.localize('actions.goToImplementation.label', \"Go to Implementations\"),\n alias: 'Go to Implementations',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasImplementationProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 70 /* KeyCode.F12 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: 'navigation',\n order: 1.45\n }\n });\n }\n },\n _g.ID = 'editor.action.goToImplementation',\n _g));\nregisterGoToAction((_h = class PeekImplementationAction extends ImplementationAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: true,\n muteMessage: false\n }, {\n id: PeekImplementationAction.ID,\n label: nls.localize('actions.peekImplementation.label', \"Peek Implementations\"),\n alias: 'Peek Implementations',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasImplementationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 70 /* KeyCode.F12 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n menuId: MenuId.EditorContextPeek,\n group: 'peek',\n order: 5\n }\n });\n }\n },\n _h.ID = 'editor.action.peekImplementation',\n _h));\n//#endregion\n//#region --- REFERENCES\nclass ReferencesAction extends SymbolNavigationAction {\n _getNoResultFoundMessage(info) {\n return info\n ? nls.localize('references.no', \"No references found for '{0}'\", info.word)\n : nls.localize('references.noGeneric', \"No references found\");\n }\n _getAlternativeCommand(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).alternativeReferenceCommand;\n }\n _getGoToPreference(editor) {\n return editor.getOption(53 /* EditorOption.gotoLocation */).multipleReferences;\n }\n}\nregisterGoToAction(class GoToReferencesAction extends ReferencesAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: false,\n muteMessage: false\n }, {\n id: 'editor.action.goToReferences',\n label: nls.localize('goToReferences.label', \"Go to References\"),\n alias: 'Go to References',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 70 /* KeyCode.F12 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: 'navigation',\n order: 1.45\n }\n });\n }\n _getLocationModel(languageFeaturesService, model, position, token) {\n return __awaiter(this, void 0, void 0, function* () {\n return new ReferencesModel(yield getReferencesAtPosition(languageFeaturesService.referenceProvider, model, position, true, token), nls.localize('ref.title', 'References'));\n });\n }\n});\nregisterGoToAction(class PeekReferencesAction extends ReferencesAction {\n constructor() {\n super({\n openToSide: false,\n openInPeek: true,\n muteMessage: false\n }, {\n id: 'editor.action.referenceSearch.trigger',\n label: nls.localize('references.action.label', \"Peek References\"),\n alias: 'Peek References',\n precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n contextMenuOpts: {\n menuId: MenuId.EditorContextPeek,\n group: 'peek',\n order: 6\n }\n });\n }\n _getLocationModel(languageFeaturesService, model, position, token) {\n return __awaiter(this, void 0, void 0, function* () {\n return new ReferencesModel(yield getReferencesAtPosition(languageFeaturesService.referenceProvider, model, position, false, token), nls.localize('ref.title', 'References'));\n });\n }\n});\n//#endregion\n//#region --- GENERIC goto symbols command\nclass GenericGoToLocationAction extends SymbolNavigationAction {\n constructor(config, _references, _gotoMultipleBehaviour) {\n super(config, {\n id: 'editor.action.goToLocation',\n label: nls.localize('label.generic', \"Go to Any Symbol\"),\n alias: 'Go to Any Symbol',\n precondition: ContextKeyExpr.and(PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\n });\n this._references = _references;\n this._gotoMultipleBehaviour = _gotoMultipleBehaviour;\n }\n _getLocationModel(languageFeaturesService, _model, _position, _token) {\n return __awaiter(this, void 0, void 0, function* () {\n return new ReferencesModel(this._references, nls.localize('generic.title', 'Locations'));\n });\n }\n _getNoResultFoundMessage(info) {\n return info && nls.localize('generic.noResult', \"No results for '{0}'\", info.word) || '';\n }\n _getGoToPreference(editor) {\n var _a;\n return (_a = this._gotoMultipleBehaviour) !== null && _a !== void 0 ? _a : editor.getOption(53 /* EditorOption.gotoLocation */).multipleReferences;\n }\n _getAlternativeCommand() { return ''; }\n}\nCommandsRegistry.registerCommand({\n id: 'editor.action.goToLocations',\n description: {\n description: 'Go to locations from a position in a file',\n args: [\n { name: 'uri', description: 'The text document in which to start', constraint: URI },\n { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\n { name: 'locations', description: 'An array of locations.', constraint: Array },\n { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto' },\n { name: 'noResultsMessage', description: 'Human readable message that shows when locations is empty.' },\n ]\n },\n handler: (accessor, resource, position, references, multiple, noResultsMessage, openInPeek) => __awaiter(void 0, void 0, void 0, function* () {\n assertType(URI.isUri(resource));\n assertType(corePosition.Position.isIPosition(position));\n assertType(Array.isArray(references));\n assertType(typeof multiple === 'undefined' || typeof multiple === 'string');\n assertType(typeof openInPeek === 'undefined' || typeof openInPeek === 'boolean');\n const editorService = accessor.get(ICodeEditorService);\n const editor = yield editorService.openCodeEditor({ resource }, editorService.getFocusedCodeEditor());\n if (isCodeEditor(editor)) {\n editor.setPosition(position);\n editor.revealPositionInCenterIfOutsideViewport(position, 0 /* ScrollType.Smooth */);\n return editor.invokeWithinContext(accessor => {\n const command = new class extends GenericGoToLocationAction {\n _getNoResultFoundMessage(info) {\n return noResultsMessage || super._getNoResultFoundMessage(info);\n }\n }({\n muteMessage: !Boolean(noResultsMessage),\n openInPeek: Boolean(openInPeek),\n openToSide: false\n }, references, multiple);\n accessor.get(IInstantiationService).invokeFunction(command.run.bind(command), editor);\n });\n }\n })\n});\nCommandsRegistry.registerCommand({\n id: 'editor.action.peekLocations',\n description: {\n description: 'Peek locations from a position in a file',\n args: [\n { name: 'uri', description: 'The text document in which to start', constraint: URI },\n { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\n { name: 'locations', description: 'An array of locations.', constraint: Array },\n { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto' },\n ]\n },\n handler: (accessor, resource, position, references, multiple) => __awaiter(void 0, void 0, void 0, function* () {\n accessor.get(ICommandService).executeCommand('editor.action.goToLocations', resource, position, references, multiple, undefined, true);\n })\n});\n//#endregion\n//#region --- REFERENCE search special commands\nCommandsRegistry.registerCommand({\n id: 'editor.action.findReferences',\n handler: (accessor, resource, position) => {\n assertType(URI.isUri(resource));\n assertType(corePosition.Position.isIPosition(position));\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const codeEditorService = accessor.get(ICodeEditorService);\n return codeEditorService.openCodeEditor({ resource }, codeEditorService.getFocusedCodeEditor()).then(control => {\n if (!isCodeEditor(control) || !control.hasModel()) {\n return undefined;\n }\n const controller = ReferencesController.get(control);\n if (!controller) {\n return undefined;\n }\n const references = createCancelablePromise(token => getReferencesAtPosition(languageFeaturesService.referenceProvider, control.getModel(), corePosition.Position.lift(position), false, token).then(references => new ReferencesModel(references, nls.localize('ref.title', 'References'))));\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n return Promise.resolve(controller.toggleWidget(range, references, false));\n });\n }\n});\n// use NEW command\nCommandsRegistry.registerCommandAlias('editor.action.showReferences', 'editor.action.peekLocations');\n//#endregion\n// -- unconditionally register goto-action\nMenuRegistry.appendMenuItems([\n {\n id: MenuId.MenubarGoMenu,\n item: {\n command: {\n id: 'editor.action.revealDefinition',\n title: nls.localize({ key: 'miGotoDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Definition\")\n },\n group: '4_symbol_nav',\n order: 2,\n },\n },\n {\n id: MenuId.MenubarGoMenu,\n item: {\n command: {\n id: 'editor.action.revealDeclaration',\n title: nls.localize({ key: 'miGotoDeclaration', comment: ['&& denotes a mnemonic'] }, \"Go to &&Declaration\")\n },\n group: '4_symbol_nav',\n order: 3,\n },\n },\n {\n id: MenuId.MenubarGoMenu,\n item: {\n command: {\n id: 'editor.action.goToTypeDefinition',\n title: nls.localize({ key: 'miGotoTypeDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Type Definition\")\n },\n group: '4_symbol_nav',\n order: 3,\n },\n },\n {\n id: MenuId.MenubarGoMenu,\n item: {\n command: {\n id: 'editor.action.goToImplementation',\n title: nls.localize({ key: 'miGotoImplementation', comment: ['&& denotes a mnemonic'] }, \"Go to &&Implementations\")\n },\n group: '4_symbol_nav',\n order: 4,\n },\n },\n {\n id: MenuId.MenubarGoMenu,\n item: {\n command: {\n id: 'editor.action.goToReferences',\n title: nls.localize({ key: 'miGotoReference', comment: ['&& denotes a mnemonic'] }, \"Go to &&References\")\n },\n group: '4_symbol_nav',\n order: 5,\n },\n },\n]);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { ReferencesModel } from './referencesModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nfunction getLocationLinks(model, position, registry, provide) {\n const provider = registry.ordered(model);\n // get results\n const promises = provider.map((provider) => {\n return Promise.resolve(provide(provider, model, position)).then(undefined, err => {\n onUnexpectedExternalError(err);\n return undefined;\n });\n });\n return Promise.all(promises).then(values => {\n const result = [];\n for (const value of values) {\n if (Array.isArray(value)) {\n result.push(...value);\n }\n else if (value) {\n result.push(value);\n }\n }\n return result;\n });\n}\nexport function getDefinitionsAtPosition(registry, model, position, token) {\n return getLocationLinks(model, position, registry, (provider, model, position) => {\n return provider.provideDefinition(model, position, token);\n });\n}\nexport function getDeclarationsAtPosition(registry, model, position, token) {\n return getLocationLinks(model, position, registry, (provider, model, position) => {\n return provider.provideDeclaration(model, position, token);\n });\n}\nexport function getImplementationsAtPosition(registry, model, position, token) {\n return getLocationLinks(model, position, registry, (provider, model, position) => {\n return provider.provideImplementation(model, position, token);\n });\n}\nexport function getTypeDefinitionsAtPosition(registry, model, position, token) {\n return getLocationLinks(model, position, registry, (provider, model, position) => {\n return provider.provideTypeDefinition(model, position, token);\n });\n}\nexport function getReferencesAtPosition(registry, model, position, compact, token) {\n return getLocationLinks(model, position, registry, (provider, model, position) => __awaiter(this, void 0, void 0, function* () {\n const result = yield provider.provideReferences(model, position, { includeDeclaration: true }, token);\n if (!compact || !result || result.length !== 2) {\n return result;\n }\n const resultWithoutDeclaration = yield provider.provideReferences(model, position, { includeDeclaration: false }, token);\n if (resultWithoutDeclaration && resultWithoutDeclaration.length === 1) {\n return resultWithoutDeclaration;\n }\n return result;\n }));\n}\n// -- API commands ----\nfunction _sortedAndDeduped(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const rawLinks = yield callback();\n const model = new ReferencesModel(rawLinks, '');\n const modelLinks = model.references.map(ref => ref.link);\n model.dispose();\n return modelLinks;\n });\n}\nregisterModelAndPositionCommand('_executeDefinitionProvider', (accessor, model, position) => {\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const promise = getDefinitionsAtPosition(languageFeaturesService.definitionProvider, model, position, CancellationToken.None);\n return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeTypeDefinitionProvider', (accessor, model, position) => {\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const promise = getTypeDefinitionsAtPosition(languageFeaturesService.typeDefinitionProvider, model, position, CancellationToken.None);\n return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeDeclarationProvider', (accessor, model, position) => {\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const promise = getDeclarationsAtPosition(languageFeaturesService.declarationProvider, model, position, CancellationToken.None);\n return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeReferenceProvider', (accessor, model, position) => {\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const promise = getReferencesAtPosition(languageFeaturesService.referenceProvider, model, position, false, CancellationToken.None);\n return _sortedAndDeduped(() => promise);\n});\nregisterModelAndPositionCommand('_executeImplementationProvider', (accessor, model, position) => {\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const promise = getImplementationsAtPosition(languageFeaturesService.implementationProvider, model, position, CancellationToken.None);\n return _sortedAndDeduped(() => promise);\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../../base/common/event.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../../base/common/platform.js';\nfunction hasModifier(e, modifier) {\n return !!e[modifier];\n}\n/**\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\n */\nexport class ClickLinkMouseEvent {\n constructor(source, opts) {\n this.target = source.target;\n this.hasTriggerModifier = hasModifier(source.event, opts.triggerModifier);\n this.hasSideBySideModifier = hasModifier(source.event, opts.triggerSideBySideModifier);\n this.isNoneOrSingleMouseDown = (source.event.detail <= 1);\n }\n}\n/**\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\n */\nexport class ClickLinkKeyboardEvent {\n constructor(source, opts) {\n this.keyCodeIsTriggerKey = (source.keyCode === opts.triggerKey);\n this.keyCodeIsSideBySideKey = (source.keyCode === opts.triggerSideBySideKey);\n this.hasTriggerModifier = hasModifier(source, opts.triggerModifier);\n }\n}\nexport class ClickLinkOptions {\n constructor(triggerKey, triggerModifier, triggerSideBySideKey, triggerSideBySideModifier) {\n this.triggerKey = triggerKey;\n this.triggerModifier = triggerModifier;\n this.triggerSideBySideKey = triggerSideBySideKey;\n this.triggerSideBySideModifier = triggerSideBySideModifier;\n }\n equals(other) {\n return (this.triggerKey === other.triggerKey\n && this.triggerModifier === other.triggerModifier\n && this.triggerSideBySideKey === other.triggerSideBySideKey\n && this.triggerSideBySideModifier === other.triggerSideBySideModifier);\n }\n}\nfunction createOptions(multiCursorModifier) {\n if (multiCursorModifier === 'altKey') {\n if (platform.isMacintosh) {\n return new ClickLinkOptions(57 /* KeyCode.Meta */, 'metaKey', 6 /* KeyCode.Alt */, 'altKey');\n }\n return new ClickLinkOptions(5 /* KeyCode.Ctrl */, 'ctrlKey', 6 /* KeyCode.Alt */, 'altKey');\n }\n if (platform.isMacintosh) {\n return new ClickLinkOptions(6 /* KeyCode.Alt */, 'altKey', 57 /* KeyCode.Meta */, 'metaKey');\n }\n return new ClickLinkOptions(6 /* KeyCode.Alt */, 'altKey', 5 /* KeyCode.Ctrl */, 'ctrlKey');\n}\nexport class ClickLinkGesture extends Disposable {\n constructor(editor) {\n super();\n this._onMouseMoveOrRelevantKeyDown = this._register(new Emitter());\n this.onMouseMoveOrRelevantKeyDown = this._onMouseMoveOrRelevantKeyDown.event;\n this._onExecute = this._register(new Emitter());\n this.onExecute = this._onExecute.event;\n this._onCancel = this._register(new Emitter());\n this.onCancel = this._onCancel.event;\n this._editor = editor;\n this._opts = createOptions(this._editor.getOption(72 /* EditorOption.multiCursorModifier */));\n this._lastMouseMoveEvent = null;\n this._hasTriggerKeyOnMouseDown = false;\n this._lineNumberOnMouseDown = 0;\n this._register(this._editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(72 /* EditorOption.multiCursorModifier */)) {\n const newOpts = createOptions(this._editor.getOption(72 /* EditorOption.multiCursorModifier */));\n if (this._opts.equals(newOpts)) {\n return;\n }\n this._opts = newOpts;\n this._lastMouseMoveEvent = null;\n this._hasTriggerKeyOnMouseDown = false;\n this._lineNumberOnMouseDown = 0;\n this._onCancel.fire();\n }\n }));\n this._register(this._editor.onMouseMove((e) => this._onEditorMouseMove(new ClickLinkMouseEvent(e, this._opts))));\n this._register(this._editor.onMouseDown((e) => this._onEditorMouseDown(new ClickLinkMouseEvent(e, this._opts))));\n this._register(this._editor.onMouseUp((e) => this._onEditorMouseUp(new ClickLinkMouseEvent(e, this._opts))));\n this._register(this._editor.onKeyDown((e) => this._onEditorKeyDown(new ClickLinkKeyboardEvent(e, this._opts))));\n this._register(this._editor.onKeyUp((e) => this._onEditorKeyUp(new ClickLinkKeyboardEvent(e, this._opts))));\n this._register(this._editor.onMouseDrag(() => this._resetHandler()));\n this._register(this._editor.onDidChangeCursorSelection((e) => this._onDidChangeCursorSelection(e)));\n this._register(this._editor.onDidChangeModel((e) => this._resetHandler()));\n this._register(this._editor.onDidChangeModelContent(() => this._resetHandler()));\n this._register(this._editor.onDidScrollChange((e) => {\n if (e.scrollTopChanged || e.scrollLeftChanged) {\n this._resetHandler();\n }\n }));\n }\n _onDidChangeCursorSelection(e) {\n if (e.selection && e.selection.startColumn !== e.selection.endColumn) {\n this._resetHandler(); // immediately stop this feature if the user starts to select (https://github.com/microsoft/vscode/issues/7827)\n }\n }\n _onEditorMouseMove(mouseEvent) {\n this._lastMouseMoveEvent = mouseEvent;\n this._onMouseMoveOrRelevantKeyDown.fire([mouseEvent, null]);\n }\n _onEditorMouseDown(mouseEvent) {\n // We need to record if we had the trigger key on mouse down because someone might select something in the editor\n // holding the mouse down and then while mouse is down start to press Ctrl/Cmd to start a copy operation and then\n // release the mouse button without wanting to do the navigation.\n // With this flag we prevent goto definition if the mouse was down before the trigger key was pressed.\n this._hasTriggerKeyOnMouseDown = mouseEvent.hasTriggerModifier;\n this._lineNumberOnMouseDown = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0;\n }\n _onEditorMouseUp(mouseEvent) {\n const currentLineNumber = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0;\n if (this._hasTriggerKeyOnMouseDown && this._lineNumberOnMouseDown && this._lineNumberOnMouseDown === currentLineNumber) {\n this._onExecute.fire(mouseEvent);\n }\n }\n _onEditorKeyDown(e) {\n if (this._lastMouseMoveEvent\n && (e.keyCodeIsTriggerKey // User just pressed Ctrl/Cmd (normal goto definition)\n || (e.keyCodeIsSideBySideKey && e.hasTriggerModifier) // User pressed Ctrl/Cmd+Alt (goto definition to the side)\n )) {\n this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent, e]);\n }\n else if (e.hasTriggerModifier) {\n this._onCancel.fire(); // remove decorations if user holds another key with ctrl/cmd to prevent accident goto declaration\n }\n }\n _onEditorKeyUp(e) {\n if (e.keyCodeIsTriggerKey) {\n this._onCancel.fire();\n }\n }\n _resetHandler() {\n this._lastMouseMoveEvent = null;\n this._hasTriggerKeyOnMouseDown = false;\n this._onCancel.fire();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createCancelablePromise } from '../../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../../base/common/errors.js';\nimport { MarkdownString } from '../../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../../base/common/lifecycle.js';\nimport { withNullAsUndefined } from '../../../../../base/common/types.js';\nimport './goToDefinitionAtPosition.css';\nimport { EditorState } from '../../../editorState/browser/editorState.js';\nimport { registerEditorContribution } from '../../../../browser/editorExtensions.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { ILanguageService } from '../../../../common/languages/language.js';\nimport { ITextModelService } from '../../../../common/services/resolverService.js';\nimport { ClickLinkGesture } from './clickLinkGesture.js';\nimport { PeekContext } from '../../../peekView/browser/peekView.js';\nimport * as nls from '../../../../../nls.js';\nimport { IContextKeyService } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { editorActiveLinkForeground } from '../../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../../platform/theme/common/themeService.js';\nimport { DefinitionAction } from '../goToCommands.js';\nimport { getDefinitionsAtPosition } from '../goToSymbol.js';\nimport { ILanguageFeaturesService } from '../../../../common/services/languageFeatures.js';\nlet GotoDefinitionAtPositionEditorContribution = class GotoDefinitionAtPositionEditorContribution {\n constructor(editor, textModelResolverService, languageService, languageFeaturesService) {\n this.textModelResolverService = textModelResolverService;\n this.languageService = languageService;\n this.languageFeaturesService = languageFeaturesService;\n this.toUnhook = new DisposableStore();\n this.toUnhookForKeyboard = new DisposableStore();\n this.currentWordAtPosition = null;\n this.previousPromise = null;\n this.editor = editor;\n this.linkDecorations = this.editor.createDecorationsCollection();\n const linkGesture = new ClickLinkGesture(editor);\n this.toUnhook.add(linkGesture);\n this.toUnhook.add(linkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\n this.startFindDefinitionFromMouse(mouseEvent, withNullAsUndefined(keyboardEvent));\n }));\n this.toUnhook.add(linkGesture.onExecute((mouseEvent) => {\n if (this.isEnabled(mouseEvent)) {\n this.gotoDefinition(mouseEvent.target.position, mouseEvent.hasSideBySideModifier).then(() => {\n this.removeLinkDecorations();\n }, (error) => {\n this.removeLinkDecorations();\n onUnexpectedError(error);\n });\n }\n }));\n this.toUnhook.add(linkGesture.onCancel(() => {\n this.removeLinkDecorations();\n this.currentWordAtPosition = null;\n }));\n }\n static get(editor) {\n return editor.getContribution(GotoDefinitionAtPositionEditorContribution.ID);\n }\n startFindDefinitionFromCursor(position) {\n // For issue: https://github.com/microsoft/vscode/issues/46257\n // equivalent to mouse move with meta/ctrl key\n // First find the definition and add decorations\n // to the editor to be shown with the content hover widget\n return this.startFindDefinition(position).then(() => {\n // Add listeners for editor cursor move and key down events\n // Dismiss the \"extended\" editor decorations when the user hides\n // the hover widget. There is no event for the widget itself so these\n // serve as a best effort. After removing the link decorations, the hover\n // widget is clean and will only show declarations per next request.\n this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(() => {\n this.currentWordAtPosition = null;\n this.removeLinkDecorations();\n this.toUnhookForKeyboard.clear();\n }));\n this.toUnhookForKeyboard.add(this.editor.onKeyDown((e) => {\n if (e) {\n this.currentWordAtPosition = null;\n this.removeLinkDecorations();\n this.toUnhookForKeyboard.clear();\n }\n }));\n });\n }\n startFindDefinitionFromMouse(mouseEvent, withKey) {\n // check if we are active and on a content widget\n if (mouseEvent.target.type === 9 /* MouseTargetType.CONTENT_WIDGET */ && this.linkDecorations.length > 0) {\n return;\n }\n if (!this.editor.hasModel() || !this.isEnabled(mouseEvent, withKey)) {\n this.currentWordAtPosition = null;\n this.removeLinkDecorations();\n return;\n }\n const position = mouseEvent.target.position;\n this.startFindDefinition(position);\n }\n startFindDefinition(position) {\n var _a;\n // Dispose listeners for updating decorations when using keyboard to show definition hover\n this.toUnhookForKeyboard.clear();\n // Find word at mouse position\n const word = position ? (_a = this.editor.getModel()) === null || _a === void 0 ? void 0 : _a.getWordAtPosition(position) : null;\n if (!word) {\n this.currentWordAtPosition = null;\n this.removeLinkDecorations();\n return Promise.resolve(0);\n }\n // Return early if word at position is still the same\n if (this.currentWordAtPosition && this.currentWordAtPosition.startColumn === word.startColumn && this.currentWordAtPosition.endColumn === word.endColumn && this.currentWordAtPosition.word === word.word) {\n return Promise.resolve(0);\n }\n this.currentWordAtPosition = word;\n // Find definition and decorate word if found\n const state = new EditorState(this.editor, 4 /* CodeEditorStateFlag.Position */ | 1 /* CodeEditorStateFlag.Value */ | 2 /* CodeEditorStateFlag.Selection */ | 8 /* CodeEditorStateFlag.Scroll */);\n if (this.previousPromise) {\n this.previousPromise.cancel();\n this.previousPromise = null;\n }\n this.previousPromise = createCancelablePromise(token => this.findDefinition(position, token));\n return this.previousPromise.then(results => {\n if (!results || !results.length || !state.validate(this.editor)) {\n this.removeLinkDecorations();\n return;\n }\n // Multiple results\n if (results.length > 1) {\n this.addDecoration(new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn), new MarkdownString().appendText(nls.localize('multipleResults', \"Click to show {0} definitions.\", results.length)));\n }\n // Single result\n else {\n const result = results[0];\n if (!result.uri) {\n return;\n }\n this.textModelResolverService.createModelReference(result.uri).then(ref => {\n if (!ref.object || !ref.object.textEditorModel) {\n ref.dispose();\n return;\n }\n const { object: { textEditorModel } } = ref;\n const { startLineNumber } = result.range;\n if (startLineNumber < 1 || startLineNumber > textEditorModel.getLineCount()) {\n // invalid range\n ref.dispose();\n return;\n }\n const previewValue = this.getPreviewValue(textEditorModel, startLineNumber, result);\n let wordRange;\n if (result.originSelectionRange) {\n wordRange = Range.lift(result.originSelectionRange);\n }\n else {\n wordRange = new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n }\n const languageId = this.languageService.guessLanguageIdByFilepathOrFirstLine(textEditorModel.uri);\n this.addDecoration(wordRange, new MarkdownString().appendCodeblock(languageId ? languageId : '', previewValue));\n ref.dispose();\n });\n }\n }).then(undefined, onUnexpectedError);\n }\n getPreviewValue(textEditorModel, startLineNumber, result) {\n let rangeToUse = result.range;\n const numberOfLinesInRange = rangeToUse.endLineNumber - rangeToUse.startLineNumber;\n if (numberOfLinesInRange >= GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES) {\n rangeToUse = this.getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber);\n }\n const previewValue = this.stripIndentationFromPreviewRange(textEditorModel, startLineNumber, rangeToUse);\n return previewValue;\n }\n stripIndentationFromPreviewRange(textEditorModel, startLineNumber, previewRange) {\n const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\n let minIndent = startIndent;\n for (let endLineNumber = startLineNumber + 1; endLineNumber < previewRange.endLineNumber; endLineNumber++) {\n const endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\n minIndent = Math.min(minIndent, endIndent);\n }\n const previewValue = textEditorModel.getValueInRange(previewRange).replace(new RegExp(`^\\\\s{${minIndent - 1}}`, 'gm'), '').trim();\n return previewValue;\n }\n getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber) {\n const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\n const maxLineNumber = Math.min(textEditorModel.getLineCount(), startLineNumber + GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES);\n let endLineNumber = startLineNumber + 1;\n for (; endLineNumber < maxLineNumber; endLineNumber++) {\n const endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\n if (startIndent === endIndent) {\n break;\n }\n }\n return new Range(startLineNumber, 1, endLineNumber + 1, 1);\n }\n addDecoration(range, hoverMessage) {\n const newDecorations = {\n range: range,\n options: {\n description: 'goto-definition-link',\n inlineClassName: 'goto-definition-link',\n hoverMessage\n }\n };\n this.linkDecorations.set([newDecorations]);\n }\n removeLinkDecorations() {\n this.linkDecorations.clear();\n }\n isEnabled(mouseEvent, withKey) {\n return this.editor.hasModel() &&\n mouseEvent.isNoneOrSingleMouseDown &&\n (mouseEvent.target.type === 6 /* MouseTargetType.CONTENT_TEXT */) &&\n (mouseEvent.hasTriggerModifier || (withKey ? withKey.keyCodeIsTriggerKey : false)) &&\n this.languageFeaturesService.definitionProvider.has(this.editor.getModel());\n }\n findDefinition(position, token) {\n const model = this.editor.getModel();\n if (!model) {\n return Promise.resolve(null);\n }\n return getDefinitionsAtPosition(this.languageFeaturesService.definitionProvider, model, position, token);\n }\n gotoDefinition(position, openToSide) {\n this.editor.setPosition(position);\n return this.editor.invokeWithinContext((accessor) => {\n const canPeek = !openToSide && this.editor.getOption(80 /* EditorOption.definitionLinkOpensInPeek */) && !this.isInPeekEditor(accessor);\n const action = new DefinitionAction({ openToSide, openInPeek: canPeek, muteMessage: true }, { alias: '', label: '', id: '', precondition: undefined });\n return action.run(accessor, this.editor);\n });\n }\n isInPeekEditor(accessor) {\n const contextKeyService = accessor.get(IContextKeyService);\n return PeekContext.inPeekEditor.getValue(contextKeyService);\n }\n dispose() {\n this.toUnhook.dispose();\n }\n};\nGotoDefinitionAtPositionEditorContribution.ID = 'editor.contrib.gotodefinitionatposition';\nGotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES = 8;\nGotoDefinitionAtPositionEditorContribution = __decorate([\n __param(1, ITextModelService),\n __param(2, ILanguageService),\n __param(3, ILanguageFeaturesService)\n], GotoDefinitionAtPositionEditorContribution);\nexport { GotoDefinitionAtPositionEditorContribution };\nregisterEditorContribution(GotoDefinitionAtPositionEditorContribution.ID, GotoDefinitionAtPositionEditorContribution);\nregisterThemingParticipant((theme, collector) => {\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\n if (activeLinkForeground) {\n collector.addRule(`.monaco-editor .goto-definition-link { color: ${activeLinkForeground} !important; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../../base/browser/dom.js';\nimport { CountBadge } from '../../../../../base/browser/ui/countBadge/countBadge.js';\nimport { HighlightedLabel } from '../../../../../base/browser/ui/highlightedlabel/highlightedLabel.js';\nimport { IconLabel } from '../../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { createMatches, FuzzyScore } from '../../../../../base/common/filters.js';\nimport { Disposable } from '../../../../../base/common/lifecycle.js';\nimport { basename, dirname } from '../../../../../base/common/resources.js';\nimport { ITextModelService } from '../../../../common/services/resolverService.js';\nimport { localize } from '../../../../../nls.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { ILabelService } from '../../../../../platform/label/common/label.js';\nimport { attachBadgeStyler } from '../../../../../platform/theme/common/styler.js';\nimport { IThemeService } from '../../../../../platform/theme/common/themeService.js';\nimport { FileReferences, OneReference, ReferencesModel } from '../referencesModel.js';\nlet DataSource = class DataSource {\n constructor(_resolverService) {\n this._resolverService = _resolverService;\n }\n hasChildren(element) {\n if (element instanceof ReferencesModel) {\n return true;\n }\n if (element instanceof FileReferences) {\n return true;\n }\n return false;\n }\n getChildren(element) {\n if (element instanceof ReferencesModel) {\n return element.groups;\n }\n if (element instanceof FileReferences) {\n return element.resolve(this._resolverService).then(val => {\n // if (element.failure) {\n // \t// refresh the element on failure so that\n // \t// we can update its rendering\n // \treturn tree.refresh(element).then(() => val.children);\n // }\n return val.children;\n });\n }\n throw new Error('bad tree');\n }\n};\nDataSource = __decorate([\n __param(0, ITextModelService)\n], DataSource);\nexport { DataSource };\n//#endregion\nexport class Delegate {\n getHeight() {\n return 23;\n }\n getTemplateId(element) {\n if (element instanceof FileReferences) {\n return FileReferencesRenderer.id;\n }\n else {\n return OneReferenceRenderer.id;\n }\n }\n}\nlet StringRepresentationProvider = class StringRepresentationProvider {\n constructor(_keybindingService) {\n this._keybindingService = _keybindingService;\n }\n getKeyboardNavigationLabel(element) {\n var _a;\n if (element instanceof OneReference) {\n const parts = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\n if (parts) {\n return parts.value;\n }\n }\n // FileReferences or unresolved OneReference\n return basename(element.uri);\n }\n};\nStringRepresentationProvider = __decorate([\n __param(0, IKeybindingService)\n], StringRepresentationProvider);\nexport { StringRepresentationProvider };\nexport class IdentityProvider {\n getId(element) {\n return element instanceof OneReference ? element.id : element.uri;\n }\n}\n//#region render: File\nlet FileReferencesTemplate = class FileReferencesTemplate extends Disposable {\n constructor(container, _labelService, themeService) {\n super();\n this._labelService = _labelService;\n const parent = document.createElement('div');\n parent.classList.add('reference-file');\n this.file = this._register(new IconLabel(parent, { supportHighlights: true }));\n this.badge = new CountBadge(dom.append(parent, dom.$('.count')));\n this._register(attachBadgeStyler(this.badge, themeService));\n container.appendChild(parent);\n }\n set(element, matches) {\n const parent = dirname(element.uri);\n this.file.setLabel(this._labelService.getUriBasenameLabel(element.uri), this._labelService.getUriLabel(parent, { relative: true }), { title: this._labelService.getUriLabel(element.uri), matches });\n const len = element.children.length;\n this.badge.setCount(len);\n if (len > 1) {\n this.badge.setTitleFormat(localize('referencesCount', \"{0} references\", len));\n }\n else {\n this.badge.setTitleFormat(localize('referenceCount', \"{0} reference\", len));\n }\n }\n};\nFileReferencesTemplate = __decorate([\n __param(1, ILabelService),\n __param(2, IThemeService)\n], FileReferencesTemplate);\nlet FileReferencesRenderer = class FileReferencesRenderer {\n constructor(_instantiationService) {\n this._instantiationService = _instantiationService;\n this.templateId = FileReferencesRenderer.id;\n }\n renderTemplate(container) {\n return this._instantiationService.createInstance(FileReferencesTemplate, container);\n }\n renderElement(node, index, template) {\n template.set(node.element, createMatches(node.filterData));\n }\n disposeTemplate(templateData) {\n templateData.dispose();\n }\n};\nFileReferencesRenderer.id = 'FileReferencesRenderer';\nFileReferencesRenderer = __decorate([\n __param(0, IInstantiationService)\n], FileReferencesRenderer);\nexport { FileReferencesRenderer };\n//#endregion\n//#region render: Reference\nclass OneReferenceTemplate {\n constructor(container) {\n this.label = new HighlightedLabel(container);\n }\n set(element, score) {\n var _a;\n const preview = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\n if (!preview || !preview.value) {\n // this means we FAILED to resolve the document or the value is the empty string\n this.label.set(`${basename(element.uri)}:${element.range.startLineNumber + 1}:${element.range.startColumn + 1}`);\n }\n else {\n // render search match as highlight unless\n // we have score, then render the score\n const { value, highlight } = preview;\n if (score && !FuzzyScore.isDefault(score)) {\n this.label.element.classList.toggle('referenceMatch', false);\n this.label.set(value, createMatches(score));\n }\n else {\n this.label.element.classList.toggle('referenceMatch', true);\n this.label.set(value, [highlight]);\n }\n }\n }\n}\nexport class OneReferenceRenderer {\n constructor() {\n this.templateId = OneReferenceRenderer.id;\n }\n renderTemplate(container) {\n return new OneReferenceTemplate(container);\n }\n renderElement(node, index, templateData) {\n templateData.set(node.element, node.filterData);\n }\n disposeTemplate() {\n }\n}\nOneReferenceRenderer.id = 'OneReferenceRenderer';\n//#endregion\nexport class AccessibilityProvider {\n getWidgetAriaLabel() {\n return localize('treeAriaLabel', \"References\");\n }\n getAriaLabel(element) {\n return element.ariaMessage;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../../../base/browser/dom.js';\nimport { Sizing, SplitView } from '../../../../../base/browser/ui/splitview/splitview.js';\nimport { Color } from '../../../../../base/common/color.js';\nimport { Emitter, Event } from '../../../../../base/common/event.js';\nimport { DisposableStore, dispose } from '../../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../../base/common/network.js';\nimport { basenameOrAuthority, dirname } from '../../../../../base/common/resources.js';\nimport './referencesWidget.css';\nimport { EmbeddedCodeEditorWidget } from '../../../../browser/widget/embeddedCodeEditorWidget.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { ModelDecorationOptions, TextModel } from '../../../../common/model/textModel.js';\nimport { ILanguageConfigurationService } from '../../../../common/languages/languageConfigurationRegistry.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../../../../common/languages/modesRegistry.js';\nimport { ILanguageService } from '../../../../common/languages/language.js';\nimport { ITextModelService } from '../../../../common/services/resolverService.js';\nimport { AccessibilityProvider, DataSource, Delegate, FileReferencesRenderer, IdentityProvider, OneReferenceRenderer, StringRepresentationProvider } from './referencesTree.js';\nimport * as peekView from '../../../peekView/browser/peekView.js';\nimport * as nls from '../../../../../nls.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';\nimport { ILabelService } from '../../../../../platform/label/common/label.js';\nimport { WorkbenchAsyncDataTree } from '../../../../../platform/list/browser/listService.js';\nimport { IThemeService } from '../../../../../platform/theme/common/themeService.js';\nimport { IUndoRedoService } from '../../../../../platform/undoRedo/common/undoRedo.js';\nimport { FileReferences, OneReference } from '../referencesModel.js';\nclass DecorationsManager {\n constructor(_editor, _model) {\n this._editor = _editor;\n this._model = _model;\n this._decorations = new Map();\n this._decorationIgnoreSet = new Set();\n this._callOnDispose = new DisposableStore();\n this._callOnModelChange = new DisposableStore();\n this._callOnDispose.add(this._editor.onDidChangeModel(() => this._onModelChanged()));\n this._onModelChanged();\n }\n dispose() {\n this._callOnModelChange.dispose();\n this._callOnDispose.dispose();\n this.removeDecorations();\n }\n _onModelChanged() {\n this._callOnModelChange.clear();\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n for (const ref of this._model.references) {\n if (ref.uri.toString() === model.uri.toString()) {\n this._addDecorations(ref.parent);\n return;\n }\n }\n }\n _addDecorations(reference) {\n if (!this._editor.hasModel()) {\n return;\n }\n this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(() => this._onDecorationChanged()));\n const newDecorations = [];\n const newDecorationsActualIndex = [];\n for (let i = 0, len = reference.children.length; i < len; i++) {\n const oneReference = reference.children[i];\n if (this._decorationIgnoreSet.has(oneReference.id)) {\n continue;\n }\n if (oneReference.uri.toString() !== this._editor.getModel().uri.toString()) {\n continue;\n }\n newDecorations.push({\n range: oneReference.range,\n options: DecorationsManager.DecorationOptions\n });\n newDecorationsActualIndex.push(i);\n }\n this._editor.changeDecorations((changeAccessor) => {\n const decorations = changeAccessor.deltaDecorations([], newDecorations);\n for (let i = 0; i < decorations.length; i++) {\n this._decorations.set(decorations[i], reference.children[newDecorationsActualIndex[i]]);\n }\n });\n }\n _onDecorationChanged() {\n const toRemove = [];\n const model = this._editor.getModel();\n if (!model) {\n return;\n }\n for (const [decorationId, reference] of this._decorations) {\n const newRange = model.getDecorationRange(decorationId);\n if (!newRange) {\n continue;\n }\n let ignore = false;\n if (Range.equalsRange(newRange, reference.range)) {\n continue;\n }\n if (Range.spansMultipleLines(newRange)) {\n ignore = true;\n }\n else {\n const lineLength = reference.range.endColumn - reference.range.startColumn;\n const newLineLength = newRange.endColumn - newRange.startColumn;\n if (lineLength !== newLineLength) {\n ignore = true;\n }\n }\n if (ignore) {\n this._decorationIgnoreSet.add(reference.id);\n toRemove.push(decorationId);\n }\n else {\n reference.range = newRange;\n }\n }\n for (let i = 0, len = toRemove.length; i < len; i++) {\n this._decorations.delete(toRemove[i]);\n }\n this._editor.removeDecorations(toRemove);\n }\n removeDecorations() {\n this._editor.removeDecorations([...this._decorations.keys()]);\n this._decorations.clear();\n }\n}\nDecorationsManager.DecorationOptions = ModelDecorationOptions.register({\n description: 'reference-decoration',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'reference-decoration'\n});\nexport class LayoutData {\n constructor() {\n this.ratio = 0.7;\n this.heightInLines = 18;\n }\n static fromJSON(raw) {\n let ratio;\n let heightInLines;\n try {\n const data = JSON.parse(raw);\n ratio = data.ratio;\n heightInLines = data.heightInLines;\n }\n catch (_a) {\n //\n }\n return {\n ratio: ratio || 0.7,\n heightInLines: heightInLines || 18\n };\n }\n}\nclass ReferencesTree extends WorkbenchAsyncDataTree {\n}\n/**\n * ZoneWidget that is shown inside the editor\n */\nlet ReferenceWidget = class ReferenceWidget extends peekView.PeekViewWidget {\n constructor(editor, _defaultTreeKeyboardSupport, layoutData, themeService, _textModelResolverService, _instantiationService, _peekViewService, _uriLabel, _undoRedoService, _keybindingService, _languageService, _languageConfigurationService) {\n super(editor, { showFrame: false, showArrow: true, isResizeable: true, isAccessible: true, supportOnTitleClick: true }, _instantiationService);\n this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\n this.layoutData = layoutData;\n this._textModelResolverService = _textModelResolverService;\n this._instantiationService = _instantiationService;\n this._peekViewService = _peekViewService;\n this._uriLabel = _uriLabel;\n this._undoRedoService = _undoRedoService;\n this._keybindingService = _keybindingService;\n this._languageService = _languageService;\n this._languageConfigurationService = _languageConfigurationService;\n this._disposeOnNewModel = new DisposableStore();\n this._callOnDispose = new DisposableStore();\n this._onDidSelectReference = new Emitter();\n this.onDidSelectReference = this._onDidSelectReference.event;\n this._dim = new dom.Dimension(0, 0);\n this._applyTheme(themeService.getColorTheme());\n this._callOnDispose.add(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\n this._peekViewService.addExclusiveWidget(editor, this);\n this.create();\n }\n dispose() {\n this.setModel(undefined);\n this._callOnDispose.dispose();\n this._disposeOnNewModel.dispose();\n dispose(this._preview);\n dispose(this._previewNotAvailableMessage);\n dispose(this._tree);\n dispose(this._previewModelReference);\n this._splitView.dispose();\n super.dispose();\n }\n _applyTheme(theme) {\n const borderColor = theme.getColor(peekView.peekViewBorder) || Color.transparent;\n this.style({\n arrowColor: borderColor,\n frameColor: borderColor,\n headerBackgroundColor: theme.getColor(peekView.peekViewTitleBackground) || Color.transparent,\n primaryHeadingColor: theme.getColor(peekView.peekViewTitleForeground),\n secondaryHeadingColor: theme.getColor(peekView.peekViewTitleInfoForeground)\n });\n }\n show(where) {\n super.show(where, this.layoutData.heightInLines || 18);\n }\n focusOnReferenceTree() {\n this._tree.domFocus();\n }\n focusOnPreviewEditor() {\n this._preview.focus();\n }\n isPreviewEditorFocused() {\n return this._preview.hasTextFocus();\n }\n _onTitleClick(e) {\n if (this._preview && this._preview.getModel()) {\n this._onDidSelectReference.fire({\n element: this._getFocusedReference(),\n kind: e.ctrlKey || e.metaKey || e.altKey ? 'side' : 'open',\n source: 'title'\n });\n }\n }\n _fillBody(containerElement) {\n this.setCssClass('reference-zone-widget');\n // message pane\n this._messageContainer = dom.append(containerElement, dom.$('div.messages'));\n dom.hide(this._messageContainer);\n this._splitView = new SplitView(containerElement, { orientation: 1 /* Orientation.HORIZONTAL */ });\n // editor\n this._previewContainer = dom.append(containerElement, dom.$('div.preview.inline'));\n const options = {\n scrollBeyondLastLine: false,\n scrollbar: {\n verticalScrollbarSize: 14,\n horizontal: 'auto',\n useShadows: true,\n verticalHasArrows: false,\n horizontalHasArrows: false,\n alwaysConsumeMouseWheel: false\n },\n overviewRulerLanes: 2,\n fixedOverflowWidgets: true,\n minimap: {\n enabled: false\n }\n };\n this._preview = this._instantiationService.createInstance(EmbeddedCodeEditorWidget, this._previewContainer, options, this.editor);\n dom.hide(this._previewContainer);\n this._previewNotAvailableMessage = new TextModel(nls.localize('missingPreviewMessage', \"no preview available\"), PLAINTEXT_LANGUAGE_ID, TextModel.DEFAULT_CREATION_OPTIONS, null, this._undoRedoService, this._languageService, this._languageConfigurationService);\n // tree\n this._treeContainer = dom.append(containerElement, dom.$('div.ref-tree.inline'));\n const treeOptions = {\n keyboardSupport: this._defaultTreeKeyboardSupport,\n accessibilityProvider: new AccessibilityProvider(),\n keyboardNavigationLabelProvider: this._instantiationService.createInstance(StringRepresentationProvider),\n identityProvider: new IdentityProvider(),\n openOnSingleClick: true,\n selectionNavigation: true,\n overrideStyles: {\n listBackground: peekView.peekViewResultsBackground\n }\n };\n if (this._defaultTreeKeyboardSupport) {\n // the tree will consume `Escape` and prevent the widget from closing\n this._callOnDispose.add(dom.addStandardDisposableListener(this._treeContainer, 'keydown', (e) => {\n if (e.equals(9 /* KeyCode.Escape */)) {\n this._keybindingService.dispatchEvent(e, e.target);\n e.stopPropagation();\n }\n }, true));\n }\n this._tree = this._instantiationService.createInstance(ReferencesTree, 'ReferencesWidget', this._treeContainer, new Delegate(), [\n this._instantiationService.createInstance(FileReferencesRenderer),\n this._instantiationService.createInstance(OneReferenceRenderer),\n ], this._instantiationService.createInstance(DataSource), treeOptions);\n // split stuff\n this._splitView.addView({\n onDidChange: Event.None,\n element: this._previewContainer,\n minimumSize: 200,\n maximumSize: Number.MAX_VALUE,\n layout: (width) => {\n this._preview.layout({ height: this._dim.height, width });\n }\n }, Sizing.Distribute);\n this._splitView.addView({\n onDidChange: Event.None,\n element: this._treeContainer,\n minimumSize: 100,\n maximumSize: Number.MAX_VALUE,\n layout: (width) => {\n this._treeContainer.style.height = `${this._dim.height}px`;\n this._treeContainer.style.width = `${width}px`;\n this._tree.layout(this._dim.height, width);\n }\n }, Sizing.Distribute);\n this._disposables.add(this._splitView.onDidSashChange(() => {\n if (this._dim.width) {\n this.layoutData.ratio = this._splitView.getViewSize(0) / this._dim.width;\n }\n }, undefined));\n // listen on selection and focus\n const onEvent = (element, kind) => {\n if (element instanceof OneReference) {\n if (kind === 'show') {\n this._revealReference(element, false);\n }\n this._onDidSelectReference.fire({ element, kind, source: 'tree' });\n }\n };\n this._tree.onDidOpen(e => {\n if (e.sideBySide) {\n onEvent(e.element, 'side');\n }\n else if (e.editorOptions.pinned) {\n onEvent(e.element, 'goto');\n }\n else {\n onEvent(e.element, 'show');\n }\n });\n dom.hide(this._treeContainer);\n }\n _onWidth(width) {\n if (this._dim) {\n this._doLayoutBody(this._dim.height, width);\n }\n }\n _doLayoutBody(heightInPixel, widthInPixel) {\n super._doLayoutBody(heightInPixel, widthInPixel);\n this._dim = new dom.Dimension(widthInPixel, heightInPixel);\n this.layoutData.heightInLines = this._viewZone ? this._viewZone.heightInLines : this.layoutData.heightInLines;\n this._splitView.layout(widthInPixel);\n this._splitView.resizeView(0, widthInPixel * this.layoutData.ratio);\n }\n setSelection(selection) {\n return this._revealReference(selection, true).then(() => {\n if (!this._model) {\n // disposed\n return;\n }\n // show in tree\n this._tree.setSelection([selection]);\n this._tree.setFocus([selection]);\n });\n }\n setModel(newModel) {\n // clean up\n this._disposeOnNewModel.clear();\n this._model = newModel;\n if (this._model) {\n return this._onNewModel();\n }\n return Promise.resolve();\n }\n _onNewModel() {\n if (!this._model) {\n return Promise.resolve(undefined);\n }\n if (this._model.isEmpty) {\n this.setTitle('');\n this._messageContainer.innerText = nls.localize('noResults', \"No results\");\n dom.show(this._messageContainer);\n return Promise.resolve(undefined);\n }\n dom.hide(this._messageContainer);\n this._decorationsManager = new DecorationsManager(this._preview, this._model);\n this._disposeOnNewModel.add(this._decorationsManager);\n // listen on model changes\n this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(reference => this._tree.rerender(reference)));\n // listen on editor\n this._disposeOnNewModel.add(this._preview.onMouseDown(e => {\n const { event, target } = e;\n if (event.detail !== 2) {\n return;\n }\n const element = this._getFocusedReference();\n if (!element) {\n return;\n }\n this._onDidSelectReference.fire({\n element: { uri: element.uri, range: target.range },\n kind: (event.ctrlKey || event.metaKey || event.altKey) ? 'side' : 'open',\n source: 'editor'\n });\n }));\n // make sure things are rendered\n this.container.classList.add('results-loaded');\n dom.show(this._treeContainer);\n dom.show(this._previewContainer);\n this._splitView.layout(this._dim.width);\n this.focusOnReferenceTree();\n // pick input and a reference to begin with\n return this._tree.setInput(this._model.groups.length === 1 ? this._model.groups[0] : this._model);\n }\n _getFocusedReference() {\n const [element] = this._tree.getFocus();\n if (element instanceof OneReference) {\n return element;\n }\n else if (element instanceof FileReferences) {\n if (element.children.length > 0) {\n return element.children[0];\n }\n }\n return undefined;\n }\n revealReference(reference) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._revealReference(reference, false);\n this._onDidSelectReference.fire({ element: reference, kind: 'goto', source: 'tree' });\n });\n }\n _revealReference(reference, revealParent) {\n return __awaiter(this, void 0, void 0, function* () {\n // check if there is anything to do...\n if (this._revealedReference === reference) {\n return;\n }\n this._revealedReference = reference;\n // Update widget header\n if (reference.uri.scheme !== Schemas.inMemory) {\n this.setTitle(basenameOrAuthority(reference.uri), this._uriLabel.getUriLabel(dirname(reference.uri)));\n }\n else {\n this.setTitle(nls.localize('peekView.alternateTitle', \"References\"));\n }\n const promise = this._textModelResolverService.createModelReference(reference.uri);\n if (this._tree.getInput() === reference.parent) {\n this._tree.reveal(reference);\n }\n else {\n if (revealParent) {\n this._tree.reveal(reference.parent);\n }\n yield this._tree.expand(reference.parent);\n this._tree.reveal(reference);\n }\n const ref = yield promise;\n if (!this._model) {\n // disposed\n ref.dispose();\n return;\n }\n dispose(this._previewModelReference);\n // show in editor\n const model = ref.object;\n if (model) {\n const scrollType = this._preview.getModel() === model.textEditorModel ? 0 /* ScrollType.Smooth */ : 1 /* ScrollType.Immediate */;\n const sel = Range.lift(reference.range).collapseToStart();\n this._previewModelReference = ref;\n this._preview.setModel(model.textEditorModel);\n this._preview.setSelection(sel);\n this._preview.revealRangeInCenter(sel, scrollType);\n }\n else {\n this._preview.setModel(this._previewNotAvailableMessage);\n ref.dispose();\n }\n });\n }\n};\nReferenceWidget = __decorate([\n __param(3, IThemeService),\n __param(4, ITextModelService),\n __param(5, IInstantiationService),\n __param(6, peekView.IPeekViewService),\n __param(7, ILabelService),\n __param(8, IUndoRedoService),\n __param(9, IKeybindingService),\n __param(10, ILanguageService),\n __param(11, ILanguageConfigurationService)\n], ReferenceWidget);\nexport { ReferenceWidget };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createCancelablePromise } from '../../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../../base/common/errors.js';\nimport { KeyChord } from '../../../../../base/common/keyCodes.js';\nimport { DisposableStore } from '../../../../../base/common/lifecycle.js';\nimport { ICodeEditorService } from '../../../../browser/services/codeEditorService.js';\nimport { Position } from '../../../../common/core/position.js';\nimport { Range } from '../../../../common/core/range.js';\nimport { getOuterEditor, PeekContext } from '../../../peekView/browser/peekView.js';\nimport * as nls from '../../../../../nls.js';\nimport { CommandsRegistry } from '../../../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';\nimport { KeybindingsRegistry } from '../../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { IListService, WorkbenchListFocusContextKey, WorkbenchTreeElementCanCollapse, WorkbenchTreeElementCanExpand } from '../../../../../platform/list/browser/listService.js';\nimport { INotificationService } from '../../../../../platform/notification/common/notification.js';\nimport { IStorageService } from '../../../../../platform/storage/common/storage.js';\nimport { OneReference } from '../referencesModel.js';\nimport { LayoutData, ReferenceWidget } from './referencesWidget.js';\nexport const ctxReferenceSearchVisible = new RawContextKey('referenceSearchVisible', false, nls.localize('referenceSearchVisible', \"Whether reference peek is visible, like 'Peek References' or 'Peek Definition'\"));\nlet ReferencesController = class ReferencesController {\n constructor(_defaultTreeKeyboardSupport, _editor, contextKeyService, _editorService, _notificationService, _instantiationService, _storageService, _configurationService) {\n this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\n this._editor = _editor;\n this._editorService = _editorService;\n this._notificationService = _notificationService;\n this._instantiationService = _instantiationService;\n this._storageService = _storageService;\n this._configurationService = _configurationService;\n this._disposables = new DisposableStore();\n this._requestIdPool = 0;\n this._ignoreModelChangeEvent = false;\n this._referenceSearchVisible = ctxReferenceSearchVisible.bindTo(contextKeyService);\n }\n static get(editor) {\n return editor.getContribution(ReferencesController.ID);\n }\n dispose() {\n var _a, _b;\n this._referenceSearchVisible.reset();\n this._disposables.dispose();\n (_a = this._widget) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this._model) === null || _b === void 0 ? void 0 : _b.dispose();\n this._widget = undefined;\n this._model = undefined;\n }\n toggleWidget(range, modelPromise, peekMode) {\n // close current widget and return early is position didn't change\n let widgetPosition;\n if (this._widget) {\n widgetPosition = this._widget.position;\n }\n this.closeWidget();\n if (!!widgetPosition && range.containsPosition(widgetPosition)) {\n return;\n }\n this._peekMode = peekMode;\n this._referenceSearchVisible.set(true);\n // close the widget on model/mode changes\n this._disposables.add(this._editor.onDidChangeModelLanguage(() => { this.closeWidget(); }));\n this._disposables.add(this._editor.onDidChangeModel(() => {\n if (!this._ignoreModelChangeEvent) {\n this.closeWidget();\n }\n }));\n const storageKey = 'peekViewLayout';\n const data = LayoutData.fromJSON(this._storageService.get(storageKey, 0 /* StorageScope.PROFILE */, '{}'));\n this._widget = this._instantiationService.createInstance(ReferenceWidget, this._editor, this._defaultTreeKeyboardSupport, data);\n this._widget.setTitle(nls.localize('labelLoading', \"Loading...\"));\n this._widget.show(range);\n this._disposables.add(this._widget.onDidClose(() => {\n modelPromise.cancel();\n if (this._widget) {\n this._storageService.store(storageKey, JSON.stringify(this._widget.layoutData), 0 /* StorageScope.PROFILE */, 1 /* StorageTarget.MACHINE */);\n this._widget = undefined;\n }\n this.closeWidget();\n }));\n this._disposables.add(this._widget.onDidSelectReference(event => {\n const { element, kind } = event;\n if (!element) {\n return;\n }\n switch (kind) {\n case 'open':\n if (event.source !== 'editor' || !this._configurationService.getValue('editor.stablePeek')) {\n // when stable peek is configured we don't close\n // the peek window on selecting the editor\n this.openReference(element, false, false);\n }\n break;\n case 'side':\n this.openReference(element, true, false);\n break;\n case 'goto':\n if (peekMode) {\n this._gotoReference(element);\n }\n else {\n this.openReference(element, false, true);\n }\n break;\n }\n }));\n const requestId = ++this._requestIdPool;\n modelPromise.then(model => {\n var _a;\n // still current request? widget still open?\n if (requestId !== this._requestIdPool || !this._widget) {\n model.dispose();\n return undefined;\n }\n (_a = this._model) === null || _a === void 0 ? void 0 : _a.dispose();\n this._model = model;\n // show widget\n return this._widget.setModel(this._model).then(() => {\n if (this._widget && this._model && this._editor.hasModel()) { // might have been closed\n // set title\n if (!this._model.isEmpty) {\n this._widget.setMetaTitle(nls.localize('metaTitle.N', \"{0} ({1})\", this._model.title, this._model.references.length));\n }\n else {\n this._widget.setMetaTitle('');\n }\n // set 'best' selection\n const uri = this._editor.getModel().uri;\n const pos = new Position(range.startLineNumber, range.startColumn);\n const selection = this._model.nearestReference(uri, pos);\n if (selection) {\n return this._widget.setSelection(selection).then(() => {\n if (this._widget && this._editor.getOption(79 /* EditorOption.peekWidgetDefaultFocus */) === 'editor') {\n this._widget.focusOnPreviewEditor();\n }\n });\n }\n }\n return undefined;\n });\n }, error => {\n this._notificationService.error(error);\n });\n }\n changeFocusBetweenPreviewAndReferences() {\n if (!this._widget) {\n // can be called while still resolving...\n return;\n }\n if (this._widget.isPreviewEditorFocused()) {\n this._widget.focusOnReferenceTree();\n }\n else {\n this._widget.focusOnPreviewEditor();\n }\n }\n goToNextOrPreviousReference(fwd) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._editor.hasModel() || !this._model || !this._widget) {\n // can be called while still resolving...\n return;\n }\n const currentPosition = this._widget.position;\n if (!currentPosition) {\n return;\n }\n const source = this._model.nearestReference(this._editor.getModel().uri, currentPosition);\n if (!source) {\n return;\n }\n const target = this._model.nextOrPreviousReference(source, fwd);\n const editorFocus = this._editor.hasTextFocus();\n const previewEditorFocus = this._widget.isPreviewEditorFocused();\n yield this._widget.setSelection(target);\n yield this._gotoReference(target);\n if (editorFocus) {\n this._editor.focus();\n }\n else if (this._widget && previewEditorFocus) {\n this._widget.focusOnPreviewEditor();\n }\n });\n }\n revealReference(reference) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._editor.hasModel() || !this._model || !this._widget) {\n // can be called while still resolving...\n return;\n }\n yield this._widget.revealReference(reference);\n });\n }\n closeWidget(focusEditor = true) {\n var _a, _b;\n (_a = this._widget) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this._model) === null || _b === void 0 ? void 0 : _b.dispose();\n this._referenceSearchVisible.reset();\n this._disposables.clear();\n this._widget = undefined;\n this._model = undefined;\n if (focusEditor) {\n this._editor.focus();\n }\n this._requestIdPool += 1; // Cancel pending requests\n }\n _gotoReference(ref) {\n if (this._widget) {\n this._widget.hide();\n }\n this._ignoreModelChangeEvent = true;\n const range = Range.lift(ref.range).collapseToStart();\n return this._editorService.openCodeEditor({\n resource: ref.uri,\n options: { selection: range, selectionSource: \"code.jump\" /* TextEditorSelectionSource.JUMP */ }\n }, this._editor).then(openedEditor => {\n var _a;\n this._ignoreModelChangeEvent = false;\n if (!openedEditor || !this._widget) {\n // something went wrong...\n this.closeWidget();\n return;\n }\n if (this._editor === openedEditor) {\n //\n this._widget.show(range);\n this._widget.focusOnReferenceTree();\n }\n else {\n // we opened a different editor instance which means a different controller instance.\n // therefore we stop with this controller and continue with the other\n const other = ReferencesController.get(openedEditor);\n const model = this._model.clone();\n this.closeWidget();\n openedEditor.focus();\n other === null || other === void 0 ? void 0 : other.toggleWidget(range, createCancelablePromise(_ => Promise.resolve(model)), (_a = this._peekMode) !== null && _a !== void 0 ? _a : false);\n }\n }, (err) => {\n this._ignoreModelChangeEvent = false;\n onUnexpectedError(err);\n });\n }\n openReference(ref, sideBySide, pinned) {\n // clear stage\n if (!sideBySide) {\n this.closeWidget();\n }\n const { uri, range } = ref;\n this._editorService.openCodeEditor({\n resource: uri,\n options: { selection: range, selectionSource: \"code.jump\" /* TextEditorSelectionSource.JUMP */, pinned }\n }, this._editor, sideBySide);\n }\n};\nReferencesController.ID = 'editor.contrib.referencesController';\nReferencesController = __decorate([\n __param(2, IContextKeyService),\n __param(3, ICodeEditorService),\n __param(4, INotificationService),\n __param(5, IInstantiationService),\n __param(6, IStorageService),\n __param(7, IConfigurationService)\n], ReferencesController);\nexport { ReferencesController };\nfunction withController(accessor, fn) {\n const outerEditor = getOuterEditor(accessor);\n if (!outerEditor) {\n return;\n }\n const controller = ReferencesController.get(outerEditor);\n if (controller) {\n fn(controller);\n }\n}\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'togglePeekWidgetFocus',\n weight: 100 /* KeybindingWeight.EditorContrib */,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 60 /* KeyCode.F2 */),\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\n handler(accessor) {\n withController(accessor, controller => {\n controller.changeFocusBetweenPreviewAndReferences();\n });\n }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'goToNextReference',\n weight: 100 /* KeybindingWeight.EditorContrib */ - 10,\n primary: 62 /* KeyCode.F4 */,\n secondary: [70 /* KeyCode.F12 */],\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\n handler(accessor) {\n withController(accessor, controller => {\n controller.goToNextOrPreviousReference(true);\n });\n }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'goToPreviousReference',\n weight: 100 /* KeybindingWeight.EditorContrib */ - 10,\n primary: 1024 /* KeyMod.Shift */ | 62 /* KeyCode.F4 */,\n secondary: [1024 /* KeyMod.Shift */ | 70 /* KeyCode.F12 */],\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\n handler(accessor) {\n withController(accessor, controller => {\n controller.goToNextOrPreviousReference(false);\n });\n }\n});\n// commands that aren't needed anymore because there is now ContextKeyExpr.OR\nCommandsRegistry.registerCommandAlias('goToNextReferenceFromEmbeddedEditor', 'goToNextReference');\nCommandsRegistry.registerCommandAlias('goToPreviousReferenceFromEmbeddedEditor', 'goToPreviousReference');\n// close\nCommandsRegistry.registerCommandAlias('closeReferenceSearchEditor', 'closeReferenceSearch');\nCommandsRegistry.registerCommand('closeReferenceSearch', accessor => withController(accessor, controller => controller.closeWidget()));\nKeybindingsRegistry.registerKeybindingRule({\n id: 'closeReferenceSearch',\n weight: 100 /* KeybindingWeight.EditorContrib */ - 101,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */],\n when: ContextKeyExpr.and(PeekContext.inPeekEditor, ContextKeyExpr.not('config.editor.stablePeek'))\n});\nKeybindingsRegistry.registerKeybindingRule({\n id: 'closeReferenceSearch',\n weight: 200 /* KeybindingWeight.WorkbenchContrib */ + 50,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */],\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, ContextKeyExpr.not('config.editor.stablePeek'))\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'revealReference',\n weight: 200 /* KeybindingWeight.WorkbenchContrib */,\n primary: 3 /* KeyCode.Enter */,\n mac: {\n primary: 3 /* KeyCode.Enter */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */]\n },\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey, WorkbenchTreeElementCanCollapse.negate(), WorkbenchTreeElementCanExpand.negate()),\n handler(accessor) {\n var _a;\n const listService = accessor.get(IListService);\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\n withController(accessor, controller => controller.revealReference(focus[0]));\n }\n }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'openReferenceToSide',\n weight: 100 /* KeybindingWeight.EditorContrib */,\n primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n mac: {\n primary: 256 /* KeyMod.WinCtrl */ | 3 /* KeyCode.Enter */\n },\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey, WorkbenchTreeElementCanCollapse.negate(), WorkbenchTreeElementCanExpand.negate()),\n handler(accessor) {\n var _a;\n const listService = accessor.get(IListService);\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\n withController(accessor, controller => controller.openReference(focus[0], true, true));\n }\n }\n});\nCommandsRegistry.registerCommand('openReference', (accessor) => {\n var _a;\n const listService = accessor.get(IListService);\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\n withController(accessor, controller => controller.openReference(focus[0], false, true));\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { defaultGenerator } from '../../../../base/common/idGenerator.js';\nimport { dispose } from '../../../../base/common/lifecycle.js';\nimport { ResourceMap } from '../../../../base/common/map.js';\nimport { basename, extUri } from '../../../../base/common/resources.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nimport { localize } from '../../../../nls.js';\nexport class OneReference {\n constructor(isProviderFirst, parent, link, _rangeCallback) {\n this.isProviderFirst = isProviderFirst;\n this.parent = parent;\n this.link = link;\n this._rangeCallback = _rangeCallback;\n this.id = defaultGenerator.nextId();\n }\n get uri() {\n return this.link.uri;\n }\n get range() {\n var _a, _b;\n return (_b = (_a = this._range) !== null && _a !== void 0 ? _a : this.link.targetSelectionRange) !== null && _b !== void 0 ? _b : this.link.range;\n }\n set range(value) {\n this._range = value;\n this._rangeCallback(this);\n }\n get ariaMessage() {\n var _a;\n const preview = (_a = this.parent.getPreview(this)) === null || _a === void 0 ? void 0 : _a.preview(this.range);\n if (!preview) {\n return localize('aria.oneReference', \"symbol in {0} on line {1} at column {2}\", basename(this.uri), this.range.startLineNumber, this.range.startColumn);\n }\n else {\n return localize({ key: 'aria.oneReference.preview', comment: ['Placeholders are: 0: filename, 1:line number, 2: column number, 3: preview snippet of source code'] }, \"symbol in {0} on line {1} at column {2}, {3}\", basename(this.uri), this.range.startLineNumber, this.range.startColumn, preview.value);\n }\n }\n}\nexport class FilePreview {\n constructor(_modelReference) {\n this._modelReference = _modelReference;\n }\n dispose() {\n this._modelReference.dispose();\n }\n preview(range, n = 8) {\n const model = this._modelReference.object.textEditorModel;\n if (!model) {\n return undefined;\n }\n const { startLineNumber, startColumn, endLineNumber, endColumn } = range;\n const word = model.getWordUntilPosition({ lineNumber: startLineNumber, column: startColumn - n });\n const beforeRange = new Range(startLineNumber, word.startColumn, startLineNumber, startColumn);\n const afterRange = new Range(endLineNumber, endColumn, endLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n const before = model.getValueInRange(beforeRange).replace(/^\\s+/, '');\n const inside = model.getValueInRange(range);\n const after = model.getValueInRange(afterRange).replace(/\\s+$/, '');\n return {\n value: before + inside + after,\n highlight: { start: before.length, end: before.length + inside.length }\n };\n }\n}\nexport class FileReferences {\n constructor(parent, uri) {\n this.parent = parent;\n this.uri = uri;\n this.children = [];\n this._previews = new ResourceMap();\n }\n dispose() {\n dispose(this._previews.values());\n this._previews.clear();\n }\n getPreview(child) {\n return this._previews.get(child.uri);\n }\n get ariaMessage() {\n const len = this.children.length;\n if (len === 1) {\n return localize('aria.fileReferences.1', \"1 symbol in {0}, full path {1}\", basename(this.uri), this.uri.fsPath);\n }\n else {\n return localize('aria.fileReferences.N', \"{0} symbols in {1}, full path {2}\", len, basename(this.uri), this.uri.fsPath);\n }\n }\n resolve(textModelResolverService) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._previews.size !== 0) {\n return this;\n }\n for (const child of this.children) {\n if (this._previews.has(child.uri)) {\n continue;\n }\n try {\n const ref = yield textModelResolverService.createModelReference(child.uri);\n this._previews.set(child.uri, new FilePreview(ref));\n }\n catch (err) {\n onUnexpectedError(err);\n }\n }\n return this;\n });\n }\n}\nexport class ReferencesModel {\n constructor(links, title) {\n this.groups = [];\n this.references = [];\n this._onDidChangeReferenceRange = new Emitter();\n this.onDidChangeReferenceRange = this._onDidChangeReferenceRange.event;\n this._links = links;\n this._title = title;\n // grouping and sorting\n const [providersFirst] = links;\n links.sort(ReferencesModel._compareReferences);\n let current;\n for (const link of links) {\n if (!current || !extUri.isEqual(current.uri, link.uri, true)) {\n // new group\n current = new FileReferences(this, link.uri);\n this.groups.push(current);\n }\n // append, check for equality first!\n if (current.children.length === 0 || ReferencesModel._compareReferences(link, current.children[current.children.length - 1]) !== 0) {\n const oneRef = new OneReference(providersFirst === link, current, link, ref => this._onDidChangeReferenceRange.fire(ref));\n this.references.push(oneRef);\n current.children.push(oneRef);\n }\n }\n }\n dispose() {\n dispose(this.groups);\n this._onDidChangeReferenceRange.dispose();\n this.groups.length = 0;\n }\n clone() {\n return new ReferencesModel(this._links, this._title);\n }\n get title() {\n return this._title;\n }\n get isEmpty() {\n return this.groups.length === 0;\n }\n get ariaMessage() {\n if (this.isEmpty) {\n return localize('aria.result.0', \"No results found\");\n }\n else if (this.references.length === 1) {\n return localize('aria.result.1', \"Found 1 symbol in {0}\", this.references[0].uri.fsPath);\n }\n else if (this.groups.length === 1) {\n return localize('aria.result.n1', \"Found {0} symbols in {1}\", this.references.length, this.groups[0].uri.fsPath);\n }\n else {\n return localize('aria.result.nm', \"Found {0} symbols in {1} files\", this.references.length, this.groups.length);\n }\n }\n nextOrPreviousReference(reference, next) {\n const { parent } = reference;\n let idx = parent.children.indexOf(reference);\n const childCount = parent.children.length;\n const groupCount = parent.parent.groups.length;\n if (groupCount === 1 || next && idx + 1 < childCount || !next && idx > 0) {\n // cycling within one file\n if (next) {\n idx = (idx + 1) % childCount;\n }\n else {\n idx = (idx + childCount - 1) % childCount;\n }\n return parent.children[idx];\n }\n idx = parent.parent.groups.indexOf(parent);\n if (next) {\n idx = (idx + 1) % groupCount;\n return parent.parent.groups[idx].children[0];\n }\n else {\n idx = (idx + groupCount - 1) % groupCount;\n return parent.parent.groups[idx].children[parent.parent.groups[idx].children.length - 1];\n }\n }\n nearestReference(resource, position) {\n const nearest = this.references.map((ref, idx) => {\n return {\n idx,\n prefixLen: strings.commonPrefixLength(ref.uri.toString(), resource.toString()),\n offsetDist: Math.abs(ref.range.startLineNumber - position.lineNumber) * 100 + Math.abs(ref.range.startColumn - position.column)\n };\n }).sort((a, b) => {\n if (a.prefixLen > b.prefixLen) {\n return -1;\n }\n else if (a.prefixLen < b.prefixLen) {\n return 1;\n }\n else if (a.offsetDist < b.offsetDist) {\n return -1;\n }\n else if (a.offsetDist > b.offsetDist) {\n return 1;\n }\n else {\n return 0;\n }\n })[0];\n if (nearest) {\n return this.references[nearest.idx];\n }\n return undefined;\n }\n referenceAt(resource, position) {\n for (const ref of this.references) {\n if (ref.uri.toString() === resource.toString()) {\n if (Range.containsPosition(ref.range, position)) {\n return ref;\n }\n }\n }\n return undefined;\n }\n firstReference() {\n for (const ref of this.references) {\n if (ref.isProviderFirst) {\n return ref;\n }\n }\n return this.references[0];\n }\n static _compareReferences(a, b) {\n return extUri.compare(a.uri, b.uri) || Range.compareRangesUsingStarts(a.range, b.range);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class HoverProviderResult {\n constructor(provider, hover, ordinal) {\n this.provider = provider;\n this.hover = hover;\n this.ordinal = ordinal;\n }\n}\nfunction executeProvider(provider, ordinal, model, position, token) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const result = yield Promise.resolve(provider.provideHover(model, position, token));\n if (result && isValid(result)) {\n return new HoverProviderResult(provider, result, ordinal);\n }\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n return undefined;\n });\n}\nexport function getHover(registry, model, position, token) {\n const providers = registry.ordered(model);\n const promises = providers.map((provider, index) => executeProvider(provider, index, model, position, token));\n return AsyncIterableObject.fromPromises(promises).coalesce();\n}\nexport function getHoverPromise(registry, model, position, token) {\n return getHover(registry, model, position, token).map(item => item.hover).toPromise();\n}\nregisterModelAndPositionCommand('_executeHoverProvider', (accessor, model, position) => {\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n return getHoverPromise(languageFeaturesService.hoverProvider, model, position, CancellationToken.None);\n});\nfunction isValid(result) {\n const hasRange = (typeof result.range !== 'undefined');\n const hasHtmlContent = typeof result.contents !== 'undefined' && result.contents && result.contents.length > 0;\n return hasRange && hasHtmlContent;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../dom.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { DomScrollableElement } from '../scrollbar/scrollableElement.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport './hover.css';\nconst $ = dom.$;\nexport class HoverWidget extends Disposable {\n constructor() {\n super();\n this.containerDomNode = document.createElement('div');\n this.containerDomNode.className = 'monaco-hover';\n this.containerDomNode.tabIndex = 0;\n this.containerDomNode.setAttribute('role', 'tooltip');\n this.contentsDomNode = document.createElement('div');\n this.contentsDomNode.className = 'monaco-hover-content';\n this.scrollbar = this._register(new DomScrollableElement(this.contentsDomNode, {\n consumeMouseWheelIfScrollbarIsNeeded: true\n }));\n this.containerDomNode.appendChild(this.scrollbar.getDomNode());\n }\n onContentsChanged() {\n this.scrollbar.scanDomNode();\n }\n}\nexport class HoverAction extends Disposable {\n constructor(parent, actionOptions, keybindingLabel) {\n super();\n this.actionContainer = dom.append(parent, $('div.action-container'));\n this.actionContainer.setAttribute('tabindex', '0');\n this.action = dom.append(this.actionContainer, $('a.action'));\n this.action.setAttribute('role', 'button');\n if (actionOptions.iconClass) {\n dom.append(this.action, $(`span.icon.${actionOptions.iconClass}`));\n }\n const label = dom.append(this.action, $('span'));\n label.textContent = keybindingLabel ? `${actionOptions.label} (${keybindingLabel})` : actionOptions.label;\n this._register(dom.addDisposableListener(this.actionContainer, dom.EventType.CLICK, e => {\n e.stopPropagation();\n e.preventDefault();\n actionOptions.run(this.actionContainer);\n }));\n this._register(dom.addDisposableListener(this.actionContainer, dom.EventType.KEY_UP, e => {\n const event = new StandardKeyboardEvent(e);\n if (event.equals(3 /* KeyCode.Enter */)) {\n e.stopPropagation();\n e.preventDefault();\n actionOptions.run(this.actionContainer);\n }\n }));\n this.setEnabled(true);\n }\n static render(parent, actionOptions, keybindingLabel) {\n return new HoverAction(parent, actionOptions, keybindingLabel);\n }\n setEnabled(enabled) {\n if (enabled) {\n this.actionContainer.classList.remove('disabled');\n this.actionContainer.removeAttribute('aria-disabled');\n }\n else {\n this.actionContainer.classList.add('disabled');\n this.actionContainer.setAttribute('aria-disabled', 'true');\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { createCancelableAsyncIterable, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nexport class HoverResult {\n constructor(value, isComplete, hasLoadingMessage) {\n this.value = value;\n this.isComplete = isComplete;\n this.hasLoadingMessage = hasLoadingMessage;\n }\n}\n/**\n * Computing the hover is very fine tuned.\n *\n * Suppose the hover delay is 300ms (the default). Then, when resting the mouse at an anchor:\n * - at 150ms, the async computation is triggered (i.e. semantic hover)\n * - if async results already come in, they are not rendered yet.\n * - at 300ms, the sync computation is triggered (i.e. decorations, markers)\n * - if there are sync or async results, they are rendered.\n * - at 900ms, if the async computation hasn't finished, a \"Loading...\" result is added.\n */\nexport class HoverOperation extends Disposable {\n constructor(_editor, _computer) {\n super();\n this._editor = _editor;\n this._computer = _computer;\n this._onResult = this._register(new Emitter());\n this.onResult = this._onResult.event;\n this._firstWaitScheduler = this._register(new RunOnceScheduler(() => this._triggerAsyncComputation(), 0));\n this._secondWaitScheduler = this._register(new RunOnceScheduler(() => this._triggerSyncComputation(), 0));\n this._loadingMessageScheduler = this._register(new RunOnceScheduler(() => this._triggerLoadingMessage(), 0));\n this._state = 0 /* HoverOperationState.Idle */;\n this._asyncIterable = null;\n this._asyncIterableDone = false;\n this._result = [];\n }\n dispose() {\n if (this._asyncIterable) {\n this._asyncIterable.cancel();\n this._asyncIterable = null;\n }\n super.dispose();\n }\n get _hoverTime() {\n return this._editor.getOption(55 /* EditorOption.hover */).delay;\n }\n get _firstWaitTime() {\n return this._hoverTime / 2;\n }\n get _secondWaitTime() {\n return this._hoverTime - this._firstWaitTime;\n }\n get _loadingMessageTime() {\n return 3 * this._hoverTime;\n }\n _setState(state, fireResult = true) {\n this._state = state;\n if (fireResult) {\n this._fireResult();\n }\n }\n _triggerAsyncComputation() {\n this._setState(2 /* HoverOperationState.SecondWait */);\n this._secondWaitScheduler.schedule(this._secondWaitTime);\n if (this._computer.computeAsync) {\n this._asyncIterableDone = false;\n this._asyncIterable = createCancelableAsyncIterable(token => this._computer.computeAsync(token));\n (() => __awaiter(this, void 0, void 0, function* () {\n var e_1, _a;\n try {\n try {\n for (var _b = __asyncValues(this._asyncIterable), _c; _c = yield _b.next(), !_c.done;) {\n const item = _c.value;\n if (item) {\n this._result.push(item);\n this._fireResult();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n this._asyncIterableDone = true;\n if (this._state === 3 /* HoverOperationState.WaitingForAsync */ || this._state === 4 /* HoverOperationState.WaitingForAsyncShowingLoading */) {\n this._setState(0 /* HoverOperationState.Idle */);\n }\n }\n catch (e) {\n onUnexpectedError(e);\n }\n }))();\n }\n else {\n this._asyncIterableDone = true;\n }\n }\n _triggerSyncComputation() {\n if (this._computer.computeSync) {\n this._result = this._result.concat(this._computer.computeSync());\n }\n this._setState(this._asyncIterableDone ? 0 /* HoverOperationState.Idle */ : 3 /* HoverOperationState.WaitingForAsync */);\n }\n _triggerLoadingMessage() {\n if (this._state === 3 /* HoverOperationState.WaitingForAsync */) {\n this._setState(4 /* HoverOperationState.WaitingForAsyncShowingLoading */);\n }\n }\n _fireResult() {\n if (this._state === 1 /* HoverOperationState.FirstWait */ || this._state === 2 /* HoverOperationState.SecondWait */) {\n // Do not send out results before the hover time\n return;\n }\n const isComplete = (this._state === 0 /* HoverOperationState.Idle */);\n const hasLoadingMessage = (this._state === 4 /* HoverOperationState.WaitingForAsyncShowingLoading */);\n this._onResult.fire(new HoverResult(this._result.slice(0), isComplete, hasLoadingMessage));\n }\n start(mode) {\n if (mode === 0 /* HoverStartMode.Delayed */) {\n if (this._state === 0 /* HoverOperationState.Idle */) {\n this._setState(1 /* HoverOperationState.FirstWait */);\n this._firstWaitScheduler.schedule(this._firstWaitTime);\n this._loadingMessageScheduler.schedule(this._loadingMessageTime);\n }\n }\n else {\n switch (this._state) {\n case 0 /* HoverOperationState.Idle */:\n this._triggerAsyncComputation();\n this._secondWaitScheduler.cancel();\n this._triggerSyncComputation();\n break;\n case 2 /* HoverOperationState.SecondWait */:\n this._secondWaitScheduler.cancel();\n this._triggerSyncComputation();\n break;\n }\n }\n }\n cancel() {\n this._firstWaitScheduler.cancel();\n this._secondWaitScheduler.cancel();\n this._loadingMessageScheduler.cancel();\n if (this._asyncIterable) {\n this._asyncIterable.cancel();\n this._asyncIterable = null;\n }\n this._result = [];\n this._setState(0 /* HoverOperationState.Idle */, false);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { HoverAction, HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { TokenizationRegistry } from '../../../common/languages.js';\nimport { HoverOperation } from './hoverOperation.js';\nimport { HoverParticipantRegistry, HoverRangeAnchor } from './hoverTypes.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { Context as SuggestContext } from '../../suggest/browser/suggest.js';\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nconst $ = dom.$;\nlet ContentHoverController = class ContentHoverController extends Disposable {\n constructor(_editor, _instantiationService, _keybindingService) {\n super();\n this._editor = _editor;\n this._instantiationService = _instantiationService;\n this._keybindingService = _keybindingService;\n this._widget = this._register(this._instantiationService.createInstance(ContentHoverWidget, this._editor));\n this._isChangingDecorations = false;\n this._messages = [];\n this._messagesAreComplete = false;\n // Instantiate participants and sort them by `hoverOrdinal` which is relevant for rendering order.\n this._participants = [];\n for (const participant of HoverParticipantRegistry.getAll()) {\n this._participants.push(this._instantiationService.createInstance(participant, this._editor));\n }\n this._participants.sort((p1, p2) => p1.hoverOrdinal - p2.hoverOrdinal);\n this._computer = new ContentHoverComputer(this._editor, this._participants);\n this._hoverOperation = this._register(new HoverOperation(this._editor, this._computer));\n this._register(this._hoverOperation.onResult((result) => {\n this._withResult(result.value, result.isComplete, result.hasLoadingMessage);\n }));\n this._register(this._editor.onDidChangeModelDecorations(() => {\n if (this._isChangingDecorations) {\n return;\n }\n this._onModelDecorationsChanged();\n }));\n this._register(dom.addStandardDisposableListener(this._widget.getDomNode(), 'keydown', (e) => {\n if (e.equals(9 /* KeyCode.Escape */)) {\n this.hide();\n }\n }));\n this._register(TokenizationRegistry.onDidChange(() => {\n if (this._widget.position && this._computer.anchor && this._messages.length > 0) {\n this._widget.clear();\n this._renderMessages(this._computer.anchor, this._messages);\n }\n }));\n }\n _onModelDecorationsChanged() {\n if (this._widget.position) {\n // The decorations have changed and the hover is visible,\n // we need to recompute the displayed text\n this._hoverOperation.cancel();\n if (!this._widget.isColorPickerVisible) { // TODO@Michel ensure that displayed text for other decorations is computed even if color picker is in place\n this._hoverOperation.start(0 /* HoverStartMode.Delayed */);\n }\n }\n }\n maybeShowAt(mouseEvent) {\n const anchorCandidates = [];\n for (const participant of this._participants) {\n if (participant.suggestHoverAnchor) {\n const anchor = participant.suggestHoverAnchor(mouseEvent);\n if (anchor) {\n anchorCandidates.push(anchor);\n }\n }\n }\n const target = mouseEvent.target;\n if (target.type === 6 /* MouseTargetType.CONTENT_TEXT */) {\n anchorCandidates.push(new HoverRangeAnchor(0, target.range));\n }\n if (target.type === 7 /* MouseTargetType.CONTENT_EMPTY */) {\n const epsilon = this._editor.getOption(46 /* EditorOption.fontInfo */).typicalHalfwidthCharacterWidth / 2;\n if (!target.detail.isAfterLines && typeof target.detail.horizontalDistanceToText === 'number' && target.detail.horizontalDistanceToText < epsilon) {\n // Let hover kick in even when the mouse is technically in the empty area after a line, given the distance is small enough\n anchorCandidates.push(new HoverRangeAnchor(0, target.range));\n }\n }\n if (anchorCandidates.length === 0) {\n return false;\n }\n anchorCandidates.sort((a, b) => b.priority - a.priority);\n this._startShowingAt(anchorCandidates[0], 0 /* HoverStartMode.Delayed */, false);\n return true;\n }\n startShowingAtRange(range, mode, focus) {\n this._startShowingAt(new HoverRangeAnchor(0, range), mode, focus);\n }\n _startShowingAt(anchor, mode, focus) {\n if (this._computer.anchor && this._computer.anchor.equals(anchor)) {\n // We have to show the widget at the exact same range as before, so no work is needed\n return;\n }\n this._hoverOperation.cancel();\n if (this._widget.position) {\n // The range might have changed, but the hover is visible\n // Instead of hiding it completely, filter out messages that are still in the new range and\n // kick off a new computation\n if (!this._computer.anchor || !anchor.canAdoptVisibleHover(this._computer.anchor, this._widget.position)) {\n this.hide();\n }\n else {\n const filteredMessages = this._messages.filter((m) => m.isValidForHoverAnchor(anchor));\n if (filteredMessages.length === 0) {\n this.hide();\n }\n else if (filteredMessages.length === this._messages.length && this._messagesAreComplete) {\n // no change\n return;\n }\n else {\n this._renderMessages(anchor, filteredMessages);\n }\n }\n }\n this._computer.anchor = anchor;\n this._computer.shouldFocus = focus;\n this._hoverOperation.start(mode);\n }\n hide() {\n this._computer.anchor = null;\n this._hoverOperation.cancel();\n this._widget.hide();\n }\n isColorPickerVisible() {\n return this._widget.isColorPickerVisible;\n }\n containsNode(node) {\n return this._widget.getDomNode().contains(node);\n }\n _addLoadingMessage(result) {\n if (this._computer.anchor) {\n for (const participant of this._participants) {\n if (participant.createLoadingMessage) {\n const loadingMessage = participant.createLoadingMessage(this._computer.anchor);\n if (loadingMessage) {\n return result.slice(0).concat([loadingMessage]);\n }\n }\n }\n }\n return result;\n }\n _withResult(result, isComplete, hasLoadingMessage) {\n this._messages = (hasLoadingMessage ? this._addLoadingMessage(result) : result);\n this._messagesAreComplete = isComplete;\n if (this._computer.anchor && this._messages.length > 0) {\n this._renderMessages(this._computer.anchor, this._messages);\n }\n else if (isComplete) {\n this.hide();\n }\n }\n _renderMessages(anchor, messages) {\n const { showAtPosition, showAtRange, highlightRange } = ContentHoverController.computeHoverRanges(anchor.range, messages);\n const disposables = new DisposableStore();\n const statusBar = disposables.add(new EditorHoverStatusBar(this._keybindingService));\n const fragment = document.createDocumentFragment();\n let colorPicker = null;\n const context = {\n fragment,\n statusBar,\n setColorPicker: (widget) => colorPicker = widget,\n onContentsChanged: () => this._widget.onContentsChanged(),\n hide: () => this.hide()\n };\n for (const participant of this._participants) {\n const hoverParts = messages.filter(msg => msg.owner === participant);\n if (hoverParts.length > 0) {\n disposables.add(participant.renderHoverParts(context, hoverParts));\n }\n }\n if (statusBar.hasContent) {\n fragment.appendChild(statusBar.hoverElement);\n }\n if (fragment.hasChildNodes()) {\n if (highlightRange) {\n const highlightDecoration = this._editor.createDecorationsCollection();\n try {\n this._isChangingDecorations = true;\n highlightDecoration.set([{\n range: highlightRange,\n options: ContentHoverController._DECORATION_OPTIONS\n }]);\n }\n finally {\n this._isChangingDecorations = false;\n }\n disposables.add(toDisposable(() => {\n try {\n this._isChangingDecorations = true;\n highlightDecoration.clear();\n }\n finally {\n this._isChangingDecorations = false;\n }\n }));\n }\n this._widget.showAt(fragment, new ContentHoverVisibleData(colorPicker, showAtPosition, showAtRange, this._editor.getOption(55 /* EditorOption.hover */).above, this._computer.shouldFocus, disposables));\n }\n else {\n disposables.dispose();\n }\n }\n static computeHoverRanges(anchorRange, messages) {\n // The anchor range is always on a single line\n const anchorLineNumber = anchorRange.startLineNumber;\n let renderStartColumn = anchorRange.startColumn;\n let renderEndColumn = anchorRange.endColumn;\n let highlightRange = messages[0].range;\n let forceShowAtRange = null;\n for (const msg of messages) {\n highlightRange = Range.plusRange(highlightRange, msg.range);\n if (msg.range.startLineNumber === anchorLineNumber && msg.range.endLineNumber === anchorLineNumber) {\n // this message has a range that is completely sitting on the line of the anchor\n renderStartColumn = Math.min(renderStartColumn, msg.range.startColumn);\n renderEndColumn = Math.max(renderEndColumn, msg.range.endColumn);\n }\n if (msg.forceShowAtRange) {\n forceShowAtRange = msg.range;\n }\n }\n return {\n showAtPosition: forceShowAtRange ? forceShowAtRange.getStartPosition() : new Position(anchorRange.startLineNumber, renderStartColumn),\n showAtRange: forceShowAtRange ? forceShowAtRange : new Range(anchorLineNumber, renderStartColumn, anchorLineNumber, renderEndColumn),\n highlightRange\n };\n }\n};\nContentHoverController._DECORATION_OPTIONS = ModelDecorationOptions.register({\n description: 'content-hover-highlight',\n className: 'hoverHighlight'\n});\nContentHoverController = __decorate([\n __param(1, IInstantiationService),\n __param(2, IKeybindingService)\n], ContentHoverController);\nexport { ContentHoverController };\nclass ContentHoverVisibleData {\n constructor(colorPicker, showAtPosition, showAtRange, preferAbove, stoleFocus, disposables) {\n this.colorPicker = colorPicker;\n this.showAtPosition = showAtPosition;\n this.showAtRange = showAtRange;\n this.preferAbove = preferAbove;\n this.stoleFocus = stoleFocus;\n this.disposables = disposables;\n }\n}\nlet ContentHoverWidget = class ContentHoverWidget extends Disposable {\n constructor(_editor, _contextKeyService) {\n super();\n this._editor = _editor;\n this._contextKeyService = _contextKeyService;\n this.allowEditorOverflow = true;\n this._hoverVisibleKey = EditorContextKeys.hoverVisible.bindTo(this._contextKeyService);\n this._hover = this._register(new HoverWidget());\n this._visibleData = null;\n this._register(this._editor.onDidLayoutChange(() => this._layout()));\n this._register(this._editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(46 /* EditorOption.fontInfo */)) {\n this._updateFont();\n }\n }));\n this._setVisibleData(null);\n this._layout();\n this._editor.addContentWidget(this);\n }\n /**\n * Returns `null` if the hover is not visible.\n */\n get position() {\n var _a, _b;\n return (_b = (_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.showAtPosition) !== null && _b !== void 0 ? _b : null;\n }\n get isColorPickerVisible() {\n var _a;\n return Boolean((_a = this._visibleData) === null || _a === void 0 ? void 0 : _a.colorPicker);\n }\n dispose() {\n this._editor.removeContentWidget(this);\n if (this._visibleData) {\n this._visibleData.disposables.dispose();\n }\n super.dispose();\n }\n getId() {\n return ContentHoverWidget.ID;\n }\n getDomNode() {\n return this._hover.containerDomNode;\n }\n getPosition() {\n if (!this._visibleData) {\n return null;\n }\n let preferAbove = this._visibleData.preferAbove;\n if (!preferAbove && this._contextKeyService.getContextKeyValue(SuggestContext.Visible.key)) {\n // Prefer rendering above if the suggest widget is visible\n preferAbove = true;\n }\n return {\n position: this._visibleData.showAtPosition,\n range: this._visibleData.showAtRange,\n preference: (preferAbove\n ? [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */]\n : [2 /* ContentWidgetPositionPreference.BELOW */, 1 /* ContentWidgetPositionPreference.ABOVE */]),\n };\n }\n _setVisibleData(visibleData) {\n if (this._visibleData) {\n this._visibleData.disposables.dispose();\n }\n this._visibleData = visibleData;\n this._hoverVisibleKey.set(!!this._visibleData);\n this._hover.containerDomNode.classList.toggle('hidden', !this._visibleData);\n }\n _layout() {\n const height = Math.max(this._editor.getLayoutInfo().height / 4, 250);\n const { fontSize, lineHeight } = this._editor.getOption(46 /* EditorOption.fontInfo */);\n this._hover.contentsDomNode.style.fontSize = `${fontSize}px`;\n this._hover.contentsDomNode.style.lineHeight = `${lineHeight / fontSize}`;\n this._hover.contentsDomNode.style.maxHeight = `${height}px`;\n this._hover.contentsDomNode.style.maxWidth = `${Math.max(this._editor.getLayoutInfo().width * 0.66, 500)}px`;\n }\n _updateFont() {\n const codeClasses = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n codeClasses.forEach(node => this._editor.applyFontInfo(node));\n }\n showAt(node, visibleData) {\n this._setVisibleData(visibleData);\n this._hover.contentsDomNode.textContent = '';\n this._hover.contentsDomNode.appendChild(node);\n this._hover.contentsDomNode.style.paddingBottom = '';\n this._updateFont();\n this.onContentsChanged();\n // Simply force a synchronous render on the editor\n // such that the widget does not really render with left = '0px'\n this._editor.render();\n // See https://github.com/microsoft/vscode/issues/140339\n // TODO: Doing a second layout of the hover after force rendering the editor\n this.onContentsChanged();\n if (visibleData.stoleFocus) {\n this._hover.containerDomNode.focus();\n }\n if (visibleData.colorPicker) {\n visibleData.colorPicker.layout();\n }\n }\n hide() {\n if (this._visibleData) {\n const stoleFocus = this._visibleData.stoleFocus;\n this._setVisibleData(null);\n this._editor.layoutContentWidget(this);\n if (stoleFocus) {\n this._editor.focus();\n }\n }\n }\n onContentsChanged() {\n this._editor.layoutContentWidget(this);\n this._hover.onContentsChanged();\n const scrollDimensions = this._hover.scrollbar.getScrollDimensions();\n const hasHorizontalScrollbar = (scrollDimensions.scrollWidth > scrollDimensions.width);\n if (hasHorizontalScrollbar) {\n // There is just a horizontal scrollbar\n const extraBottomPadding = `${this._hover.scrollbar.options.horizontalScrollbarSize}px`;\n if (this._hover.contentsDomNode.style.paddingBottom !== extraBottomPadding) {\n this._hover.contentsDomNode.style.paddingBottom = extraBottomPadding;\n this._editor.layoutContentWidget(this);\n this._hover.onContentsChanged();\n }\n }\n }\n clear() {\n this._hover.contentsDomNode.textContent = '';\n }\n};\nContentHoverWidget.ID = 'editor.contrib.contentHoverWidget';\nContentHoverWidget = __decorate([\n __param(1, IContextKeyService)\n], ContentHoverWidget);\nexport { ContentHoverWidget };\nlet EditorHoverStatusBar = class EditorHoverStatusBar extends Disposable {\n constructor(_keybindingService) {\n super();\n this._keybindingService = _keybindingService;\n this._hasContent = false;\n this.hoverElement = $('div.hover-row.status-bar');\n this.actionsElement = dom.append(this.hoverElement, $('div.actions'));\n }\n get hasContent() {\n return this._hasContent;\n }\n addAction(actionOptions) {\n const keybinding = this._keybindingService.lookupKeybinding(actionOptions.commandId);\n const keybindingLabel = keybinding ? keybinding.getLabel() : null;\n this._hasContent = true;\n return this._register(HoverAction.render(this.actionsElement, actionOptions, keybindingLabel));\n }\n append(element) {\n const result = dom.append(this.actionsElement, element);\n this._hasContent = true;\n return result;\n }\n};\nEditorHoverStatusBar = __decorate([\n __param(0, IKeybindingService)\n], EditorHoverStatusBar);\nclass ContentHoverComputer {\n constructor(_editor, _participants) {\n this._editor = _editor;\n this._participants = _participants;\n this._anchor = null;\n this._shouldFocus = false;\n }\n get anchor() { return this._anchor; }\n set anchor(value) { this._anchor = value; }\n get shouldFocus() { return this._shouldFocus; }\n set shouldFocus(value) { this._shouldFocus = value; }\n static _getLineDecorations(editor, anchor) {\n if (anchor.type !== 1 /* HoverAnchorType.Range */) {\n return [];\n }\n const model = editor.getModel();\n const lineNumber = anchor.range.startLineNumber;\n if (lineNumber > model.getLineCount()) {\n // invalid line\n return [];\n }\n const maxColumn = model.getLineMaxColumn(lineNumber);\n return editor.getLineDecorations(lineNumber).filter((d) => {\n if (d.options.isWholeLine) {\n return true;\n }\n const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n if (d.options.showIfCollapsed) {\n // Relax check around `showIfCollapsed` decorations to also include +/- 1 character\n if (startColumn > anchor.range.startColumn + 1 || anchor.range.endColumn - 1 > endColumn) {\n return false;\n }\n }\n else {\n if (startColumn > anchor.range.startColumn || anchor.range.endColumn > endColumn) {\n return false;\n }\n }\n return true;\n });\n }\n computeAsync(token) {\n const anchor = this._anchor;\n if (!this._editor.hasModel() || !anchor) {\n return AsyncIterableObject.EMPTY;\n }\n const lineDecorations = ContentHoverComputer._getLineDecorations(this._editor, anchor);\n return AsyncIterableObject.merge(this._participants.map((participant) => {\n if (!participant.computeAsync) {\n return AsyncIterableObject.EMPTY;\n }\n return participant.computeAsync(anchor, lineDecorations, token);\n }));\n }\n computeSync() {\n if (!this._editor.hasModel() || !this._anchor) {\n return [];\n }\n const lineDecorations = ContentHoverComputer._getLineDecorations(this._editor, this._anchor);\n let result = [];\n for (const participant of this._participants) {\n result = result.concat(participant.computeSync(this._anchor, lineDecorations));\n }\n return coalesce(result);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport { asArray } from '../../../../base/common/arrays.js';\nimport { isEmptyMarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../markdownRenderer/browser/markdownRenderer.js';\nimport { HoverOperation } from './hoverOperation.js';\nimport { NullOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { HoverWidget } from '../../../../base/browser/ui/hover/hoverWidget.js';\nconst $ = dom.$;\nexport class MarginHoverWidget extends Disposable {\n constructor(editor, languageService, openerService = NullOpenerService) {\n super();\n this._renderDisposeables = this._register(new DisposableStore());\n this._editor = editor;\n this._isVisible = false;\n this._messages = [];\n this._hover = this._register(new HoverWidget());\n this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n this._markdownRenderer = this._register(new MarkdownRenderer({ editor: this._editor }, languageService, openerService));\n this._computer = new MarginHoverComputer(this._editor);\n this._hoverOperation = this._register(new HoverOperation(this._editor, this._computer));\n this._register(this._hoverOperation.onResult((result) => {\n this._withResult(result.value);\n }));\n this._register(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\n this._register(this._editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(46 /* EditorOption.fontInfo */)) {\n this._updateFont();\n }\n }));\n this._editor.addOverlayWidget(this);\n }\n dispose() {\n this._editor.removeOverlayWidget(this);\n super.dispose();\n }\n getId() {\n return MarginHoverWidget.ID;\n }\n getDomNode() {\n return this._hover.containerDomNode;\n }\n getPosition() {\n return null;\n }\n _updateFont() {\n const codeClasses = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\n codeClasses.forEach(node => this._editor.applyFontInfo(node));\n }\n _onModelDecorationsChanged() {\n if (this._isVisible) {\n // The decorations have changed and the hover is visible,\n // we need to recompute the displayed text\n this._hoverOperation.cancel();\n this._hoverOperation.start(0 /* HoverStartMode.Delayed */);\n }\n }\n startShowingAt(lineNumber) {\n if (this._computer.lineNumber === lineNumber) {\n // We have to show the widget at the exact same line number as before, so no work is needed\n return;\n }\n this._hoverOperation.cancel();\n this.hide();\n this._computer.lineNumber = lineNumber;\n this._hoverOperation.start(0 /* HoverStartMode.Delayed */);\n }\n hide() {\n this._computer.lineNumber = -1;\n this._hoverOperation.cancel();\n if (!this._isVisible) {\n return;\n }\n this._isVisible = false;\n this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n }\n _withResult(result) {\n this._messages = result;\n if (this._messages.length > 0) {\n this._renderMessages(this._computer.lineNumber, this._messages);\n }\n else {\n this.hide();\n }\n }\n _renderMessages(lineNumber, messages) {\n this._renderDisposeables.clear();\n const fragment = document.createDocumentFragment();\n for (const msg of messages) {\n const markdownHoverElement = $('div.hover-row.markdown-hover');\n const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n const renderedContents = this._renderDisposeables.add(this._markdownRenderer.render(msg.value));\n hoverContentsElement.appendChild(renderedContents.element);\n fragment.appendChild(markdownHoverElement);\n }\n this._updateContents(fragment);\n this._showAt(lineNumber);\n }\n _updateContents(node) {\n this._hover.contentsDomNode.textContent = '';\n this._hover.contentsDomNode.appendChild(node);\n this._updateFont();\n }\n _showAt(lineNumber) {\n if (!this._isVisible) {\n this._isVisible = true;\n this._hover.containerDomNode.classList.toggle('hidden', !this._isVisible);\n }\n const editorLayout = this._editor.getLayoutInfo();\n const topForLineNumber = this._editor.getTopForLineNumber(lineNumber);\n const editorScrollTop = this._editor.getScrollTop();\n const lineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */);\n const nodeHeight = this._hover.containerDomNode.clientHeight;\n const top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\n this._hover.containerDomNode.style.left = `${editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth}px`;\n this._hover.containerDomNode.style.top = `${Math.max(Math.round(top), 0)}px`;\n }\n}\nMarginHoverWidget.ID = 'editor.contrib.modesGlyphHoverWidget';\nclass MarginHoverComputer {\n constructor(_editor) {\n this._editor = _editor;\n this._lineNumber = -1;\n }\n get lineNumber() {\n return this._lineNumber;\n }\n set lineNumber(value) {\n this._lineNumber = value;\n }\n computeSync() {\n const toHoverMessage = (contents) => {\n return {\n value: contents\n };\n };\n const lineDecorations = this._editor.getLineDecorations(this._lineNumber);\n const result = [];\n if (!lineDecorations) {\n return result;\n }\n for (const d of lineDecorations) {\n if (!d.options.glyphMarginClassName) {\n continue;\n }\n const hoverMessage = d.options.glyphMarginHoverMessage;\n if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n continue;\n }\n result.push(...asArray(hoverMessage).map(toHoverMessage));\n }\n return result;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { createCancelablePromise, disposableTimeout } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IMarkerDecorationsService } from '../../../common/services/markerDecorations.js';\nimport { getCodeActions } from '../../codeAction/browser/codeAction.js';\nimport { QuickFixAction, QuickFixController } from '../../codeAction/browser/codeActionCommands.js';\nimport { CodeActionKind, CodeActionTriggerSource } from '../../codeAction/browser/types.js';\nimport { MarkerController, NextMarkerAction } from '../../gotoError/browser/gotoError.js';\nimport * as nls from '../../../../nls.js';\nimport { IMarkerData, MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nimport { textLinkActiveForeground, textLinkForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nconst $ = dom.$;\nexport class MarkerHover {\n constructor(owner, range, marker) {\n this.owner = owner;\n this.range = range;\n this.marker = marker;\n }\n isValidForHoverAnchor(anchor) {\n return (anchor.type === 1 /* HoverAnchorType.Range */\n && this.range.startColumn <= anchor.range.startColumn\n && this.range.endColumn >= anchor.range.endColumn);\n }\n}\nconst markerCodeActionTrigger = {\n type: 1 /* CodeActionTriggerType.Invoke */,\n filter: { include: CodeActionKind.QuickFix },\n triggerAction: CodeActionTriggerSource.QuickFixHover\n};\nlet MarkerHoverParticipant = class MarkerHoverParticipant {\n constructor(_editor, _markerDecorationsService, _openerService, _languageFeaturesService) {\n this._editor = _editor;\n this._markerDecorationsService = _markerDecorationsService;\n this._openerService = _openerService;\n this._languageFeaturesService = _languageFeaturesService;\n this.hoverOrdinal = 5;\n this.recentMarkerCodeActionsInfo = undefined;\n }\n computeSync(anchor, lineDecorations) {\n if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */) {\n return [];\n }\n const model = this._editor.getModel();\n const lineNumber = anchor.range.startLineNumber;\n const maxColumn = model.getLineMaxColumn(lineNumber);\n const result = [];\n for (const d of lineDecorations) {\n const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n const marker = this._markerDecorationsService.getMarker(model.uri, d);\n if (!marker) {\n continue;\n }\n const range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n result.push(new MarkerHover(this, range, marker));\n }\n return result;\n }\n renderHoverParts(context, hoverParts) {\n if (!hoverParts.length) {\n return Disposable.None;\n }\n const disposables = new DisposableStore();\n hoverParts.forEach(msg => context.fragment.appendChild(this.renderMarkerHover(msg, disposables)));\n const markerHoverForStatusbar = hoverParts.length === 1 ? hoverParts[0] : hoverParts.sort((a, b) => MarkerSeverity.compare(a.marker.severity, b.marker.severity))[0];\n this.renderMarkerStatusbar(context, markerHoverForStatusbar, disposables);\n return disposables;\n }\n renderMarkerHover(markerHover, disposables) {\n const hoverElement = $('div.hover-row');\n const markerElement = dom.append(hoverElement, $('div.marker.hover-contents'));\n const { source, message, code, relatedInformation } = markerHover.marker;\n this._editor.applyFontInfo(markerElement);\n const messageElement = dom.append(markerElement, $('span'));\n messageElement.style.whiteSpace = 'pre-wrap';\n messageElement.innerText = message;\n if (source || code) {\n // Code has link\n if (code && typeof code !== 'string') {\n const sourceAndCodeElement = $('span');\n if (source) {\n const sourceElement = dom.append(sourceAndCodeElement, $('span'));\n sourceElement.innerText = source;\n }\n const codeLink = dom.append(sourceAndCodeElement, $('a.code-link'));\n codeLink.setAttribute('href', code.target.toString());\n disposables.add(dom.addDisposableListener(codeLink, 'click', (e) => {\n this._openerService.open(code.target, { allowCommands: true });\n e.preventDefault();\n e.stopPropagation();\n }));\n const codeElement = dom.append(codeLink, $('span'));\n codeElement.innerText = code.value;\n const detailsElement = dom.append(markerElement, sourceAndCodeElement);\n detailsElement.style.opacity = '0.6';\n detailsElement.style.paddingLeft = '6px';\n }\n else {\n const detailsElement = dom.append(markerElement, $('span'));\n detailsElement.style.opacity = '0.6';\n detailsElement.style.paddingLeft = '6px';\n detailsElement.innerText = source && code ? `${source}(${code})` : source ? source : `(${code})`;\n }\n }\n if (isNonEmptyArray(relatedInformation)) {\n for (const { message, resource, startLineNumber, startColumn } of relatedInformation) {\n const relatedInfoContainer = dom.append(markerElement, $('div'));\n relatedInfoContainer.style.marginTop = '8px';\n const a = dom.append(relatedInfoContainer, $('a'));\n a.innerText = `${basename(resource)}(${startLineNumber}, ${startColumn}): `;\n a.style.cursor = 'pointer';\n disposables.add(dom.addDisposableListener(a, 'click', (e) => {\n e.stopPropagation();\n e.preventDefault();\n if (this._openerService) {\n this._openerService.open(resource, {\n fromUserGesture: true,\n editorOptions: { selection: { startLineNumber, startColumn } }\n }).catch(onUnexpectedError);\n }\n }));\n const messageElement = dom.append(relatedInfoContainer, $('span'));\n messageElement.innerText = message;\n this._editor.applyFontInfo(messageElement);\n }\n }\n return hoverElement;\n }\n renderMarkerStatusbar(context, markerHover, disposables) {\n if (markerHover.marker.severity === MarkerSeverity.Error || markerHover.marker.severity === MarkerSeverity.Warning || markerHover.marker.severity === MarkerSeverity.Info) {\n context.statusBar.addAction({\n label: nls.localize('view problem', \"View Problem\"),\n commandId: NextMarkerAction.ID,\n run: () => {\n var _a;\n context.hide();\n (_a = MarkerController.get(this._editor)) === null || _a === void 0 ? void 0 : _a.showAtMarker(markerHover.marker);\n this._editor.focus();\n }\n });\n }\n if (!this._editor.getOption(83 /* EditorOption.readOnly */)) {\n const quickfixPlaceholderElement = context.statusBar.append($('div'));\n if (this.recentMarkerCodeActionsInfo) {\n if (IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker) === IMarkerData.makeKey(markerHover.marker)) {\n if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n quickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n }\n }\n else {\n this.recentMarkerCodeActionsInfo = undefined;\n }\n }\n const updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposables.add(disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', \"Checking for quick fixes...\"), 200));\n if (!quickfixPlaceholderElement.textContent) {\n // Have some content in here to avoid flickering\n quickfixPlaceholderElement.textContent = String.fromCharCode(0xA0); //  \n }\n const codeActionsPromise = this.getCodeActions(markerHover.marker);\n disposables.add(toDisposable(() => codeActionsPromise.cancel()));\n codeActionsPromise.then(actions => {\n updatePlaceholderDisposable.dispose();\n this.recentMarkerCodeActionsInfo = { marker: markerHover.marker, hasCodeActions: actions.validActions.length > 0 };\n if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n actions.dispose();\n quickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n return;\n }\n quickfixPlaceholderElement.style.display = 'none';\n let showing = false;\n disposables.add(toDisposable(() => {\n if (!showing) {\n actions.dispose();\n }\n }));\n context.statusBar.addAction({\n label: nls.localize('quick fixes', \"Quick Fix...\"),\n commandId: QuickFixAction.Id,\n run: (target) => {\n showing = true;\n const controller = QuickFixController.get(this._editor);\n const elementPosition = dom.getDomNodePagePosition(target);\n // Hide the hover pre-emptively, otherwise the editor can close the code actions\n // context menu as well when using keyboard navigation\n context.hide();\n controller === null || controller === void 0 ? void 0 : controller.showCodeActions(markerCodeActionTrigger, actions, {\n x: elementPosition.left + 6,\n y: elementPosition.top + elementPosition.height + 6,\n width: elementPosition.width,\n height: elementPosition.height\n });\n }\n });\n }, onUnexpectedError);\n }\n }\n getCodeActions(marker) {\n return createCancelablePromise(cancellationToken => {\n return getCodeActions(this._languageFeaturesService.codeActionProvider, this._editor.getModel(), new Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn), markerCodeActionTrigger, Progress.None, cancellationToken);\n });\n }\n};\nMarkerHoverParticipant = __decorate([\n __param(1, IMarkerDecorationsService),\n __param(2, IOpenerService),\n __param(3, ILanguageFeaturesService)\n], MarkerHoverParticipant);\nexport { MarkerHoverParticipant };\nregisterThemingParticipant((theme, collector) => {\n const linkFg = theme.getColor(textLinkForeground);\n if (linkFg) {\n collector.addRule(`.monaco-hover .hover-contents a.code-link span { color: ${linkFg}; }`);\n }\n const activeLinkFg = theme.getColor(textLinkActiveForeground);\n if (activeLinkFg) {\n collector.addRule(`.monaco-hover .hover-contents a.code-link span:hover { color: ${activeLinkFg}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { GotoDefinitionAtPositionEditorContribution } from '../../gotoSymbol/browser/link/goToDefinitionAtPosition.js';\nimport { ContentHoverWidget, ContentHoverController } from './contentHover.js';\nimport { MarginHoverWidget } from './marginHover.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { editorHoverBackground, editorHoverBorder, editorHoverForeground, editorHoverHighlight, editorHoverStatusBarBackground, textCodeBlockBackground, textLinkActiveForeground, textLinkForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { HoverParticipantRegistry } from './hoverTypes.js';\nimport { MarkdownHoverParticipant } from './markdownHoverParticipant.js';\nimport { MarkerHoverParticipant } from './markerHoverParticipant.js';\nlet ModesHoverController = class ModesHoverController {\n constructor(_editor, _instantiationService, _openerService, _languageService, _contextKeyService) {\n this._editor = _editor;\n this._instantiationService = _instantiationService;\n this._openerService = _openerService;\n this._languageService = _languageService;\n this._toUnhook = new DisposableStore();\n this._isMouseDown = false;\n this._hoverClicked = false;\n this._contentWidget = null;\n this._glyphWidget = null;\n this._hookEvents();\n this._didChangeConfigurationHandler = this._editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(55 /* EditorOption.hover */)) {\n this._unhookEvents();\n this._hookEvents();\n }\n });\n }\n static get(editor) {\n return editor.getContribution(ModesHoverController.ID);\n }\n _hookEvents() {\n const hideWidgetsEventHandler = () => this._hideWidgets();\n const hoverOpts = this._editor.getOption(55 /* EditorOption.hover */);\n this._isHoverEnabled = hoverOpts.enabled;\n this._isHoverSticky = hoverOpts.sticky;\n if (this._isHoverEnabled) {\n this._toUnhook.add(this._editor.onMouseDown((e) => this._onEditorMouseDown(e)));\n this._toUnhook.add(this._editor.onMouseUp((e) => this._onEditorMouseUp(e)));\n this._toUnhook.add(this._editor.onMouseMove((e) => this._onEditorMouseMove(e)));\n this._toUnhook.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\n }\n else {\n this._toUnhook.add(this._editor.onMouseMove((e) => this._onEditorMouseMove(e)));\n this._toUnhook.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\n }\n this._toUnhook.add(this._editor.onMouseLeave((e) => this._onEditorMouseLeave(e)));\n this._toUnhook.add(this._editor.onDidChangeModel(hideWidgetsEventHandler));\n this._toUnhook.add(this._editor.onDidScrollChange((e) => this._onEditorScrollChanged(e)));\n }\n _unhookEvents() {\n this._toUnhook.clear();\n }\n _onEditorScrollChanged(e) {\n if (e.scrollTopChanged || e.scrollLeftChanged) {\n this._hideWidgets();\n }\n }\n _onEditorMouseDown(mouseEvent) {\n this._isMouseDown = true;\n const target = mouseEvent.target;\n if (target.type === 9 /* MouseTargetType.CONTENT_WIDGET */ && target.detail === ContentHoverWidget.ID) {\n this._hoverClicked = true;\n // mouse down on top of content hover widget\n return;\n }\n if (target.type === 12 /* MouseTargetType.OVERLAY_WIDGET */ && target.detail === MarginHoverWidget.ID) {\n // mouse down on top of overlay hover widget\n return;\n }\n if (target.type !== 12 /* MouseTargetType.OVERLAY_WIDGET */) {\n this._hoverClicked = false;\n }\n this._hideWidgets();\n }\n _onEditorMouseUp(mouseEvent) {\n this._isMouseDown = false;\n }\n _onEditorMouseLeave(mouseEvent) {\n var _a;\n const targetEm = (mouseEvent.event.browserEvent.relatedTarget);\n if ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.containsNode(targetEm)) {\n // when the mouse is inside hover widget\n return;\n }\n this._hideWidgets();\n }\n _onEditorMouseMove(mouseEvent) {\n var _a, _b, _c, _d, _e;\n const target = mouseEvent.target;\n if (this._isMouseDown && this._hoverClicked) {\n return;\n }\n if (this._isHoverSticky && target.type === 9 /* MouseTargetType.CONTENT_WIDGET */ && target.detail === ContentHoverWidget.ID) {\n // mouse moved on top of content hover widget\n return;\n }\n if (this._isHoverSticky && !((_b = (_a = mouseEvent.event.browserEvent.view) === null || _a === void 0 ? void 0 : _a.getSelection()) === null || _b === void 0 ? void 0 : _b.isCollapsed)) {\n // selected text within content hover widget\n return;\n }\n if (!this._isHoverSticky && target.type === 9 /* MouseTargetType.CONTENT_WIDGET */ && target.detail === ContentHoverWidget.ID\n && ((_c = this._contentWidget) === null || _c === void 0 ? void 0 : _c.isColorPickerVisible())) {\n // though the hover is not sticky, the color picker needs to.\n return;\n }\n if (this._isHoverSticky && target.type === 12 /* MouseTargetType.OVERLAY_WIDGET */ && target.detail === MarginHoverWidget.ID) {\n // mouse moved on top of overlay hover widget\n return;\n }\n if (!this._isHoverEnabled) {\n this._hideWidgets();\n return;\n }\n const contentWidget = this._getOrCreateContentWidget();\n if (contentWidget.maybeShowAt(mouseEvent)) {\n (_d = this._glyphWidget) === null || _d === void 0 ? void 0 : _d.hide();\n return;\n }\n if (target.type === 2 /* MouseTargetType.GUTTER_GLYPH_MARGIN */ && target.position) {\n (_e = this._contentWidget) === null || _e === void 0 ? void 0 : _e.hide();\n if (!this._glyphWidget) {\n this._glyphWidget = new MarginHoverWidget(this._editor, this._languageService, this._openerService);\n }\n this._glyphWidget.startShowingAt(target.position.lineNumber);\n return;\n }\n this._hideWidgets();\n }\n _onKeyDown(e) {\n if (e.keyCode !== 5 /* KeyCode.Ctrl */ && e.keyCode !== 6 /* KeyCode.Alt */ && e.keyCode !== 57 /* KeyCode.Meta */ && e.keyCode !== 4 /* KeyCode.Shift */) {\n // Do not hide hover when a modifier key is pressed\n this._hideWidgets();\n }\n }\n _hideWidgets() {\n var _a, _b, _c;\n if ((this._isMouseDown && this._hoverClicked && ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isColorPickerVisible()))) {\n return;\n }\n this._hoverClicked = false;\n (_b = this._glyphWidget) === null || _b === void 0 ? void 0 : _b.hide();\n (_c = this._contentWidget) === null || _c === void 0 ? void 0 : _c.hide();\n }\n _getOrCreateContentWidget() {\n if (!this._contentWidget) {\n this._contentWidget = this._instantiationService.createInstance(ContentHoverController, this._editor);\n }\n return this._contentWidget;\n }\n isColorPickerVisible() {\n var _a;\n return ((_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.isColorPickerVisible()) || false;\n }\n showContentHover(range, mode, focus) {\n this._getOrCreateContentWidget().startShowingAtRange(range, mode, focus);\n }\n dispose() {\n var _a, _b;\n this._unhookEvents();\n this._toUnhook.dispose();\n this._didChangeConfigurationHandler.dispose();\n (_a = this._glyphWidget) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this._contentWidget) === null || _b === void 0 ? void 0 : _b.dispose();\n }\n};\nModesHoverController.ID = 'editor.contrib.hover';\nModesHoverController = __decorate([\n __param(1, IInstantiationService),\n __param(2, IOpenerService),\n __param(3, ILanguageService),\n __param(4, IContextKeyService)\n], ModesHoverController);\nexport { ModesHoverController };\nclass ShowHoverAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.showHover',\n label: nls.localize({\n key: 'showHover',\n comment: [\n 'Label for action that will trigger the showing of a hover in the editor.',\n 'This allows for users to show the hover without using the mouse.'\n ]\n }, \"Show Hover\"),\n alias: 'Show Hover',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const controller = ModesHoverController.get(editor);\n if (!controller) {\n return;\n }\n const position = editor.getPosition();\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n const focus = editor.getOption(2 /* EditorOption.accessibilitySupport */) === 2 /* AccessibilitySupport.Enabled */;\n controller.showContentHover(range, 1 /* HoverStartMode.Immediate */, focus);\n }\n}\nclass ShowDefinitionPreviewHoverAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.showDefinitionPreviewHover',\n label: nls.localize({\n key: 'showDefinitionPreviewHover',\n comment: [\n 'Label for action that will trigger the showing of definition preview hover in the editor.',\n 'This allows for users to show the definition preview hover without using the mouse.'\n ]\n }, \"Show Definition Preview Hover\"),\n alias: 'Show Definition Preview Hover',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n const controller = ModesHoverController.get(editor);\n if (!controller) {\n return;\n }\n const position = editor.getPosition();\n if (!position) {\n return;\n }\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n const goto = GotoDefinitionAtPositionEditorContribution.get(editor);\n if (!goto) {\n return;\n }\n const promise = goto.startFindDefinitionFromCursor(position);\n promise.then(() => {\n controller.showContentHover(range, 1 /* HoverStartMode.Immediate */, true);\n });\n }\n}\nregisterEditorContribution(ModesHoverController.ID, ModesHoverController);\nregisterEditorAction(ShowHoverAction);\nregisterEditorAction(ShowDefinitionPreviewHoverAction);\nHoverParticipantRegistry.register(MarkdownHoverParticipant);\nHoverParticipantRegistry.register(MarkerHoverParticipant);\n// theming\nregisterThemingParticipant((theme, collector) => {\n const editorHoverHighlightColor = theme.getColor(editorHoverHighlight);\n if (editorHoverHighlightColor) {\n collector.addRule(`.monaco-editor .hoverHighlight { background-color: ${editorHoverHighlightColor}; }`);\n }\n const hoverBackground = theme.getColor(editorHoverBackground);\n if (hoverBackground) {\n collector.addRule(`.monaco-editor .monaco-hover { background-color: ${hoverBackground}; }`);\n }\n const hoverBorder = theme.getColor(editorHoverBorder);\n if (hoverBorder) {\n collector.addRule(`.monaco-editor .monaco-hover { border: 1px solid ${hoverBorder}; }`);\n collector.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\n collector.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\n collector.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${hoverBorder.transparent(0.5)}; }`);\n }\n const link = theme.getColor(textLinkForeground);\n if (link) {\n collector.addRule(`.monaco-editor .monaco-hover a { color: ${link}; }`);\n }\n const linkHover = theme.getColor(textLinkActiveForeground);\n if (linkHover) {\n collector.addRule(`.monaco-editor .monaco-hover a:hover { color: ${linkHover}; }`);\n }\n const hoverForeground = theme.getColor(editorHoverForeground);\n if (hoverForeground) {\n collector.addRule(`.monaco-editor .monaco-hover { color: ${hoverForeground}; }`);\n }\n const actionsBackground = theme.getColor(editorHoverStatusBarBackground);\n if (actionsBackground) {\n collector.addRule(`.monaco-editor .monaco-hover .hover-row .actions { background-color: ${actionsBackground}; }`);\n }\n const codeBackground = theme.getColor(textCodeBlockBackground);\n if (codeBackground) {\n collector.addRule(`.monaco-editor .monaco-hover code { background-color: ${codeBackground}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class HoverRangeAnchor {\n constructor(priority, range) {\n this.priority = priority;\n this.range = range;\n this.type = 1 /* HoverAnchorType.Range */;\n }\n equals(other) {\n return (other.type === 1 /* HoverAnchorType.Range */ && this.range.equalsRange(other.range));\n }\n canAdoptVisibleHover(lastAnchor, showAtPosition) {\n return (lastAnchor.type === 1 /* HoverAnchorType.Range */ && showAtPosition.lineNumber === this.range.startLineNumber);\n }\n}\nexport class HoverForeignElementAnchor {\n constructor(priority, owner, range) {\n this.priority = priority;\n this.owner = owner;\n this.range = range;\n this.type = 2 /* HoverAnchorType.ForeignElement */;\n }\n equals(other) {\n return (other.type === 2 /* HoverAnchorType.ForeignElement */ && this.owner === other.owner);\n }\n canAdoptVisibleHover(lastAnchor, showAtPosition) {\n return (lastAnchor.type === 2 /* HoverAnchorType.ForeignElement */ && this.owner === lastAnchor.owner);\n }\n}\nexport const HoverParticipantRegistry = (new class HoverParticipantRegistry {\n constructor() {\n this._participants = [];\n }\n register(ctor) {\n this._participants.push(ctor);\n }\n getAll() {\n return this._participants;\n }\n}());\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { asArray } from '../../../../base/common/arrays.js';\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../markdownRenderer/browser/markdownRenderer.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { getHover } from './getHover.js';\nimport * as nls from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nconst $ = dom.$;\nexport class MarkdownHover {\n constructor(owner, range, contents, ordinal) {\n this.owner = owner;\n this.range = range;\n this.contents = contents;\n this.ordinal = ordinal;\n }\n isValidForHoverAnchor(anchor) {\n return (anchor.type === 1 /* HoverAnchorType.Range */\n && this.range.startColumn <= anchor.range.startColumn\n && this.range.endColumn >= anchor.range.endColumn);\n }\n}\nlet MarkdownHoverParticipant = class MarkdownHoverParticipant {\n constructor(_editor, _languageService, _openerService, _configurationService, _languageFeaturesService) {\n this._editor = _editor;\n this._languageService = _languageService;\n this._openerService = _openerService;\n this._configurationService = _configurationService;\n this._languageFeaturesService = _languageFeaturesService;\n this.hoverOrdinal = 2;\n }\n createLoadingMessage(anchor) {\n return new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))], 2000);\n }\n computeSync(anchor, lineDecorations) {\n if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */) {\n return [];\n }\n const model = this._editor.getModel();\n const lineNumber = anchor.range.startLineNumber;\n const maxColumn = model.getLineMaxColumn(lineNumber);\n const result = [];\n let index = 1000;\n const lineLength = model.getLineLength(lineNumber);\n const languageId = model.getLanguageIdAtPosition(anchor.range.startLineNumber, anchor.range.startColumn);\n const maxTokenizationLineLength = this._configurationService.getValue('editor.maxTokenizationLineLength', {\n overrideIdentifier: languageId\n });\n if (typeof maxTokenizationLineLength === 'number' && lineLength >= maxTokenizationLineLength) {\n result.push(new MarkdownHover(this, anchor.range, [{\n value: nls.localize('too many characters', \"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\")\n }], index++));\n }\n for (const d of lineDecorations) {\n const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n const hoverMessage = d.options.hoverMessage;\n if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n continue;\n }\n const range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n result.push(new MarkdownHover(this, range, asArray(hoverMessage), index++));\n }\n return result;\n }\n computeAsync(anchor, lineDecorations, token) {\n if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */) {\n return AsyncIterableObject.EMPTY;\n }\n const model = this._editor.getModel();\n if (!this._languageFeaturesService.hoverProvider.has(model)) {\n return AsyncIterableObject.EMPTY;\n }\n const position = new Position(anchor.range.startLineNumber, anchor.range.startColumn);\n return getHover(this._languageFeaturesService.hoverProvider, model, position, token)\n .filter(item => !isEmptyMarkdownString(item.hover.contents))\n .map(item => {\n const rng = item.hover.range ? Range.lift(item.hover.range) : anchor.range;\n return new MarkdownHover(this, rng, item.hover.contents, item.ordinal);\n });\n }\n renderHoverParts(context, hoverParts) {\n return renderMarkdownHovers(context, hoverParts, this._editor, this._languageService, this._openerService);\n }\n};\nMarkdownHoverParticipant = __decorate([\n __param(1, ILanguageService),\n __param(2, IOpenerService),\n __param(3, IConfigurationService),\n __param(4, ILanguageFeaturesService)\n], MarkdownHoverParticipant);\nexport { MarkdownHoverParticipant };\nexport function renderMarkdownHovers(context, hoverParts, editor, languageService, openerService) {\n // Sort hover parts to keep them stable since they might come in async, out-of-order\n hoverParts.sort((a, b) => a.ordinal - b.ordinal);\n const disposables = new DisposableStore();\n for (const hoverPart of hoverParts) {\n for (const contents of hoverPart.contents) {\n if (isEmptyMarkdownString(contents)) {\n continue;\n }\n const markdownHoverElement = $('div.hover-row.markdown-hover');\n const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n const renderer = disposables.add(new MarkdownRenderer({ editor }, languageService, openerService));\n disposables.add(renderer.onDidRenderAsync(() => {\n hoverContentsElement.className = 'hover-contents code-hover-contents';\n context.onContentsChanged();\n }));\n const renderedContents = disposables.add(renderer.render(contents));\n hoverContentsElement.appendChild(renderedContents.element);\n context.fragment.appendChild(markdownHoverElement);\n }\n }\n return disposables;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Selection } from '../../../common/core/selection.js';\nexport class InPlaceReplaceCommand {\n constructor(editRange, originalSelection, text) {\n this._editRange = editRange;\n this._originalSelection = originalSelection;\n this._text = text;\n }\n getEditOperations(model, builder) {\n builder.addTrackedEditOperation(this._editRange, this._text);\n }\n computeCursorState(model, helper) {\n const inverseEditOperations = helper.getInverseEditOperations();\n const srcRange = inverseEditOperations[0].range;\n if (!this._originalSelection.isEmpty()) {\n // Preserve selection and extends to typed text\n return new Selection(srcRange.endLineNumber, srcRange.endColumn - this._text.length, srcRange.endLineNumber, srcRange.endColumn);\n }\n return new Selection(srcRange.endLineNumber, Math.min(this._originalSelection.positionColumn, srcRange.endColumn), srcRange.endLineNumber, Math.min(this._originalSelection.positionColumn, srcRange.endColumn));\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createCancelablePromise, timeout } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { EditorState } from '../../editorState/browser/editorState.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { editorBracketMatchBorder } from '../../../common/core/editorColorRegistry.js';\nimport * as nls from '../../../../nls.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { InPlaceReplaceCommand } from './inPlaceReplaceCommand.js';\nlet InPlaceReplaceController = class InPlaceReplaceController {\n constructor(editor, editorWorkerService) {\n this.editor = editor;\n this.editorWorkerService = editorWorkerService;\n this.decorations = this.editor.createDecorationsCollection();\n }\n static get(editor) {\n return editor.getContribution(InPlaceReplaceController.ID);\n }\n dispose() {\n }\n run(source, up) {\n // cancel any pending request\n if (this.currentRequest) {\n this.currentRequest.cancel();\n }\n const editorSelection = this.editor.getSelection();\n const model = this.editor.getModel();\n if (!model || !editorSelection) {\n return undefined;\n }\n let selection = editorSelection;\n if (selection.startLineNumber !== selection.endLineNumber) {\n // Can't accept multiline selection\n return undefined;\n }\n const state = new EditorState(this.editor, 1 /* CodeEditorStateFlag.Value */ | 4 /* CodeEditorStateFlag.Position */);\n const modelURI = model.uri;\n if (!this.editorWorkerService.canNavigateValueSet(modelURI)) {\n return Promise.resolve(undefined);\n }\n this.currentRequest = createCancelablePromise(token => this.editorWorkerService.navigateValueSet(modelURI, selection, up));\n return this.currentRequest.then(result => {\n if (!result || !result.range || !result.value) {\n // No proper result\n return;\n }\n if (!state.validate(this.editor)) {\n // state has changed\n return;\n }\n // Selection\n const editRange = Range.lift(result.range);\n let highlightRange = result.range;\n const diff = result.value.length - (selection.endColumn - selection.startColumn);\n // highlight\n highlightRange = {\n startLineNumber: highlightRange.startLineNumber,\n startColumn: highlightRange.startColumn,\n endLineNumber: highlightRange.endLineNumber,\n endColumn: highlightRange.startColumn + result.value.length\n };\n if (diff > 1) {\n selection = new Selection(selection.startLineNumber, selection.startColumn, selection.endLineNumber, selection.endColumn + diff - 1);\n }\n // Insert new text\n const command = new InPlaceReplaceCommand(editRange, selection, result.value);\n this.editor.pushUndoStop();\n this.editor.executeCommand(source, command);\n this.editor.pushUndoStop();\n // add decoration\n this.decorations.set([{\n range: highlightRange,\n options: InPlaceReplaceController.DECORATION\n }]);\n // remove decoration after delay\n if (this.decorationRemover) {\n this.decorationRemover.cancel();\n }\n this.decorationRemover = timeout(350);\n this.decorationRemover.then(() => this.decorations.clear()).catch(onUnexpectedError);\n }).catch(onUnexpectedError);\n }\n};\nInPlaceReplaceController.ID = 'editor.contrib.inPlaceReplaceController';\nInPlaceReplaceController.DECORATION = ModelDecorationOptions.register({\n description: 'in-place-replace',\n className: 'valueSetReplacement'\n});\nInPlaceReplaceController = __decorate([\n __param(1, IEditorWorkerService)\n], InPlaceReplaceController);\nclass InPlaceReplaceUp extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.inPlaceReplace.up',\n label: nls.localize('InPlaceReplaceAction.previous.label', \"Replace with Previous Value\"),\n alias: 'Replace with Previous Value',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 82 /* KeyCode.Comma */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n const controller = InPlaceReplaceController.get(editor);\n if (!controller) {\n return Promise.resolve(undefined);\n }\n return controller.run(this.id, true);\n }\n}\nclass InPlaceReplaceDown extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.inPlaceReplace.down',\n label: nls.localize('InPlaceReplaceAction.next.label', \"Replace with Next Value\"),\n alias: 'Replace with Next Value',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 84 /* KeyCode.Period */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n const controller = InPlaceReplaceController.get(editor);\n if (!controller) {\n return Promise.resolve(undefined);\n }\n return controller.run(this.id, false);\n }\n}\nregisterEditorContribution(InPlaceReplaceController.ID, InPlaceReplaceController);\nregisterEditorAction(InPlaceReplaceUp);\nregisterEditorAction(InPlaceReplaceDown);\nregisterThemingParticipant((theme, collector) => {\n const border = theme.getColor(editorBracketMatchBorder);\n if (border) {\n collector.addRule(`.monaco-editor.vs .valueSetReplacement { outline: solid 2px ${border}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport function getSpaceCnt(str, tabSize) {\n let spacesCnt = 0;\n for (let i = 0; i < str.length; i++) {\n if (str.charAt(i) === '\\t') {\n spacesCnt += tabSize;\n }\n else {\n spacesCnt++;\n }\n }\n return spacesCnt;\n}\nexport function generateIndent(spacesCnt, tabSize, insertSpaces) {\n spacesCnt = spacesCnt < 0 ? 0 : spacesCnt;\n let result = '';\n if (!insertSpaces) {\n const tabsCnt = Math.floor(spacesCnt / tabSize);\n spacesCnt = spacesCnt % tabSize;\n for (let i = 0; i < tabsCnt; i++) {\n result += '\\t';\n }\n }\n for (let i = 0; i < spacesCnt; i++) {\n result += ' ';\n }\n return result;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ShiftCommand } from '../../../common/commands/shiftCommand.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport * as indentUtils from './indentUtils.js';\nimport * as nls from '../../../../nls.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { normalizeIndentation } from '../../../common/core/indentation.js';\nimport { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';\nexport function getReindentEditOperations(model, languageConfigurationService, startLineNumber, endLineNumber, inheritedIndent) {\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n // Model is empty\n return [];\n }\n const indentationRules = languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).indentationRules;\n if (!indentationRules) {\n return [];\n }\n endLineNumber = Math.min(endLineNumber, model.getLineCount());\n // Skip `unIndentedLinePattern` lines\n while (startLineNumber <= endLineNumber) {\n if (!indentationRules.unIndentedLinePattern) {\n break;\n }\n const text = model.getLineContent(startLineNumber);\n if (!indentationRules.unIndentedLinePattern.test(text)) {\n break;\n }\n startLineNumber++;\n }\n if (startLineNumber > endLineNumber - 1) {\n return [];\n }\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\n const shiftIndent = (indentation, count) => {\n count = count || 1;\n return ShiftCommand.shiftIndent(indentation, indentation.length + count, tabSize, indentSize, insertSpaces);\n };\n const unshiftIndent = (indentation, count) => {\n count = count || 1;\n return ShiftCommand.unshiftIndent(indentation, indentation.length + count, tabSize, indentSize, insertSpaces);\n };\n const indentEdits = [];\n // indentation being passed to lines below\n let globalIndent;\n // Calculate indentation for the first line\n // If there is no passed-in indentation, we use the indentation of the first line as base.\n const currentLineText = model.getLineContent(startLineNumber);\n let adjustedLineContent = currentLineText;\n if (inheritedIndent !== undefined && inheritedIndent !== null) {\n globalIndent = inheritedIndent;\n const oldIndentation = strings.getLeadingWhitespace(currentLineText);\n adjustedLineContent = globalIndent + currentLineText.substring(oldIndentation.length);\n if (indentationRules.decreaseIndentPattern && indentationRules.decreaseIndentPattern.test(adjustedLineContent)) {\n globalIndent = unshiftIndent(globalIndent);\n adjustedLineContent = globalIndent + currentLineText.substring(oldIndentation.length);\n }\n if (currentLineText !== adjustedLineContent) {\n indentEdits.push(EditOperation.replaceMove(new Selection(startLineNumber, 1, startLineNumber, oldIndentation.length + 1), normalizeIndentation(globalIndent, indentSize, insertSpaces)));\n }\n }\n else {\n globalIndent = strings.getLeadingWhitespace(currentLineText);\n }\n // idealIndentForNextLine doesn't equal globalIndent when there is a line matching `indentNextLinePattern`.\n let idealIndentForNextLine = globalIndent;\n if (indentationRules.increaseIndentPattern && indentationRules.increaseIndentPattern.test(adjustedLineContent)) {\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n globalIndent = shiftIndent(globalIndent);\n }\n else if (indentationRules.indentNextLinePattern && indentationRules.indentNextLinePattern.test(adjustedLineContent)) {\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n }\n startLineNumber++;\n // Calculate indentation adjustment for all following lines\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\n const text = model.getLineContent(lineNumber);\n const oldIndentation = strings.getLeadingWhitespace(text);\n const adjustedLineContent = idealIndentForNextLine + text.substring(oldIndentation.length);\n if (indentationRules.decreaseIndentPattern && indentationRules.decreaseIndentPattern.test(adjustedLineContent)) {\n idealIndentForNextLine = unshiftIndent(idealIndentForNextLine);\n globalIndent = unshiftIndent(globalIndent);\n }\n if (oldIndentation !== idealIndentForNextLine) {\n indentEdits.push(EditOperation.replaceMove(new Selection(lineNumber, 1, lineNumber, oldIndentation.length + 1), normalizeIndentation(idealIndentForNextLine, indentSize, insertSpaces)));\n }\n // calculate idealIndentForNextLine\n if (indentationRules.unIndentedLinePattern && indentationRules.unIndentedLinePattern.test(text)) {\n // In reindent phase, if the line matches `unIndentedLinePattern` we inherit indentation from above lines\n // but don't change globalIndent and idealIndentForNextLine.\n continue;\n }\n else if (indentationRules.increaseIndentPattern && indentationRules.increaseIndentPattern.test(adjustedLineContent)) {\n globalIndent = shiftIndent(globalIndent);\n idealIndentForNextLine = globalIndent;\n }\n else if (indentationRules.indentNextLinePattern && indentationRules.indentNextLinePattern.test(adjustedLineContent)) {\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\n }\n else {\n idealIndentForNextLine = globalIndent;\n }\n }\n return indentEdits;\n}\nexport class IndentationToSpacesAction extends EditorAction {\n constructor() {\n super({\n id: IndentationToSpacesAction.ID,\n label: nls.localize('indentationToSpaces', \"Convert Indentation to Spaces\"),\n alias: 'Convert Indentation to Spaces',\n precondition: EditorContextKeys.writable\n });\n }\n run(accessor, editor) {\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const modelOpts = model.getOptions();\n const selection = editor.getSelection();\n if (!selection) {\n return;\n }\n const command = new IndentationToSpacesCommand(selection, modelOpts.tabSize);\n editor.pushUndoStop();\n editor.executeCommands(this.id, [command]);\n editor.pushUndoStop();\n model.updateOptions({\n insertSpaces: true\n });\n }\n}\nIndentationToSpacesAction.ID = 'editor.action.indentationToSpaces';\nexport class IndentationToTabsAction extends EditorAction {\n constructor() {\n super({\n id: IndentationToTabsAction.ID,\n label: nls.localize('indentationToTabs', \"Convert Indentation to Tabs\"),\n alias: 'Convert Indentation to Tabs',\n precondition: EditorContextKeys.writable\n });\n }\n run(accessor, editor) {\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const modelOpts = model.getOptions();\n const selection = editor.getSelection();\n if (!selection) {\n return;\n }\n const command = new IndentationToTabsCommand(selection, modelOpts.tabSize);\n editor.pushUndoStop();\n editor.executeCommands(this.id, [command]);\n editor.pushUndoStop();\n model.updateOptions({\n insertSpaces: false\n });\n }\n}\nIndentationToTabsAction.ID = 'editor.action.indentationToTabs';\nexport class ChangeIndentationSizeAction extends EditorAction {\n constructor(insertSpaces, opts) {\n super(opts);\n this.insertSpaces = insertSpaces;\n }\n run(accessor, editor) {\n const quickInputService = accessor.get(IQuickInputService);\n const modelService = accessor.get(IModelService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n const picks = [1, 2, 3, 4, 5, 6, 7, 8].map(n => ({\n id: n.toString(),\n label: n.toString(),\n // add description for tabSize value set in the configuration\n description: n === creationOpts.tabSize ? nls.localize('configuredTabSize', \"Configured Tab Size\") : undefined\n }));\n // auto focus the tabSize set for the current editor\n const autoFocusIndex = Math.min(model.getOptions().tabSize - 1, 7);\n setTimeout(() => {\n quickInputService.pick(picks, { placeHolder: nls.localize({ key: 'selectTabWidth', comment: ['Tab corresponds to the tab key'] }, \"Select Tab Size for Current File\"), activeItem: picks[autoFocusIndex] }).then(pick => {\n if (pick) {\n if (model && !model.isDisposed()) {\n model.updateOptions({\n tabSize: parseInt(pick.label, 10),\n insertSpaces: this.insertSpaces\n });\n }\n }\n });\n }, 50 /* quick input is sensitive to being opened so soon after another */);\n }\n}\nexport class IndentUsingTabs extends ChangeIndentationSizeAction {\n constructor() {\n super(false, {\n id: IndentUsingTabs.ID,\n label: nls.localize('indentUsingTabs', \"Indent Using Tabs\"),\n alias: 'Indent Using Tabs',\n precondition: undefined\n });\n }\n}\nIndentUsingTabs.ID = 'editor.action.indentUsingTabs';\nexport class IndentUsingSpaces extends ChangeIndentationSizeAction {\n constructor() {\n super(true, {\n id: IndentUsingSpaces.ID,\n label: nls.localize('indentUsingSpaces', \"Indent Using Spaces\"),\n alias: 'Indent Using Spaces',\n precondition: undefined\n });\n }\n}\nIndentUsingSpaces.ID = 'editor.action.indentUsingSpaces';\nexport class DetectIndentation extends EditorAction {\n constructor() {\n super({\n id: DetectIndentation.ID,\n label: nls.localize('detectIndentation', \"Detect Indentation from Content\"),\n alias: 'Detect Indentation from Content',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n const modelService = accessor.get(IModelService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n model.detectIndentation(creationOpts.insertSpaces, creationOpts.tabSize);\n }\n}\nDetectIndentation.ID = 'editor.action.detectIndentation';\nexport class ReindentLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.reindentlines',\n label: nls.localize('editor.reindentlines', \"Reindent Lines\"),\n alias: 'Reindent Lines',\n precondition: EditorContextKeys.writable\n });\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const edits = getReindentEditOperations(model, languageConfigurationService, 1, model.getLineCount());\n if (edits.length > 0) {\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits);\n editor.pushUndoStop();\n }\n }\n}\nexport class ReindentSelectedLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.reindentselectedlines',\n label: nls.localize('editor.reindentselectedlines', \"Reindent Selected Lines\"),\n alias: 'Reindent Selected Lines',\n precondition: EditorContextKeys.writable\n });\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n const model = editor.getModel();\n if (!model) {\n return;\n }\n const selections = editor.getSelections();\n if (selections === null) {\n return;\n }\n const edits = [];\n for (const selection of selections) {\n let startLineNumber = selection.startLineNumber;\n let endLineNumber = selection.endLineNumber;\n if (startLineNumber !== endLineNumber && selection.endColumn === 1) {\n endLineNumber--;\n }\n if (startLineNumber === 1) {\n if (startLineNumber === endLineNumber) {\n continue;\n }\n }\n else {\n startLineNumber--;\n }\n const editOperations = getReindentEditOperations(model, languageConfigurationService, startLineNumber, endLineNumber);\n edits.push(...editOperations);\n }\n if (edits.length > 0) {\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits);\n editor.pushUndoStop();\n }\n }\n}\nexport class AutoIndentOnPasteCommand {\n constructor(edits, initialSelection) {\n this._initialSelection = initialSelection;\n this._edits = [];\n this._selectionId = null;\n for (const edit of edits) {\n if (edit.range && typeof edit.text === 'string') {\n this._edits.push(edit);\n }\n }\n }\n getEditOperations(model, builder) {\n for (const edit of this._edits) {\n builder.addEditOperation(Range.lift(edit.range), edit.text);\n }\n let selectionIsSet = false;\n if (Array.isArray(this._edits) && this._edits.length === 1 && this._initialSelection.isEmpty()) {\n if (this._edits[0].range.startColumn === this._initialSelection.endColumn &&\n this._edits[0].range.startLineNumber === this._initialSelection.endLineNumber) {\n selectionIsSet = true;\n this._selectionId = builder.trackSelection(this._initialSelection, true);\n }\n else if (this._edits[0].range.endColumn === this._initialSelection.startColumn &&\n this._edits[0].range.endLineNumber === this._initialSelection.startLineNumber) {\n selectionIsSet = true;\n this._selectionId = builder.trackSelection(this._initialSelection, false);\n }\n }\n if (!selectionIsSet) {\n this._selectionId = builder.trackSelection(this._initialSelection);\n }\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this._selectionId);\n }\n}\nlet AutoIndentOnPaste = class AutoIndentOnPaste {\n constructor(editor, _languageConfigurationService) {\n this.editor = editor;\n this._languageConfigurationService = _languageConfigurationService;\n this.callOnDispose = new DisposableStore();\n this.callOnModel = new DisposableStore();\n this.callOnDispose.add(editor.onDidChangeConfiguration(() => this.update()));\n this.callOnDispose.add(editor.onDidChangeModel(() => this.update()));\n this.callOnDispose.add(editor.onDidChangeModelLanguage(() => this.update()));\n }\n update() {\n // clean up\n this.callOnModel.clear();\n // we are disabled\n if (this.editor.getOption(9 /* EditorOption.autoIndent */) < 4 /* EditorAutoIndentStrategy.Full */ || this.editor.getOption(50 /* EditorOption.formatOnPaste */)) {\n return;\n }\n // no model\n if (!this.editor.hasModel()) {\n return;\n }\n this.callOnModel.add(this.editor.onDidPaste(({ range }) => {\n this.trigger(range);\n }));\n }\n trigger(range) {\n const selections = this.editor.getSelections();\n if (selections === null || selections.length > 1) {\n return;\n }\n const model = this.editor.getModel();\n if (!model) {\n return;\n }\n if (!model.tokenization.isCheapToTokenize(range.getStartPosition().lineNumber)) {\n return;\n }\n const autoIndent = this.editor.getOption(9 /* EditorOption.autoIndent */);\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\n const textEdits = [];\n const indentConverter = {\n shiftIndent: (indentation) => {\n return ShiftCommand.shiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n },\n unshiftIndent: (indentation) => {\n return ShiftCommand.unshiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n }\n };\n let startLineNumber = range.startLineNumber;\n while (startLineNumber <= range.endLineNumber) {\n if (this.shouldIgnoreLine(model, startLineNumber)) {\n startLineNumber++;\n continue;\n }\n break;\n }\n if (startLineNumber > range.endLineNumber) {\n return;\n }\n let firstLineText = model.getLineContent(startLineNumber);\n if (!/\\S/.test(firstLineText.substring(0, range.startColumn - 1))) {\n const indentOfFirstLine = getGoodIndentForLine(autoIndent, model, model.getLanguageId(), startLineNumber, indentConverter, this._languageConfigurationService);\n if (indentOfFirstLine !== null) {\n const oldIndentation = strings.getLeadingWhitespace(firstLineText);\n const newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\n const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n if (newSpaceCnt !== oldSpaceCnt) {\n const newIndent = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n textEdits.push({\n range: new Range(startLineNumber, 1, startLineNumber, oldIndentation.length + 1),\n text: newIndent\n });\n firstLineText = newIndent + firstLineText.substr(oldIndentation.length);\n }\n else {\n const indentMetadata = getIndentMetadata(model, startLineNumber, this._languageConfigurationService);\n if (indentMetadata === 0 || indentMetadata === 8 /* IndentConsts.UNINDENT_MASK */) {\n // we paste content into a line where only contains whitespaces\n // after pasting, the indentation of the first line is already correct\n // the first line doesn't match any indentation rule\n // then no-op.\n return;\n }\n }\n }\n }\n const firstLineNumber = startLineNumber;\n // ignore empty or ignored lines\n while (startLineNumber < range.endLineNumber) {\n if (!/\\S/.test(model.getLineContent(startLineNumber + 1))) {\n startLineNumber++;\n continue;\n }\n break;\n }\n if (startLineNumber !== range.endLineNumber) {\n const virtualModel = {\n tokenization: {\n getLineTokens: (lineNumber) => {\n return model.tokenization.getLineTokens(lineNumber);\n },\n getLanguageId: () => {\n return model.getLanguageId();\n },\n getLanguageIdAtPosition: (lineNumber, column) => {\n return model.getLanguageIdAtPosition(lineNumber, column);\n },\n },\n getLineContent: (lineNumber) => {\n if (lineNumber === firstLineNumber) {\n return firstLineText;\n }\n else {\n return model.getLineContent(lineNumber);\n }\n }\n };\n const indentOfSecondLine = getGoodIndentForLine(autoIndent, virtualModel, model.getLanguageId(), startLineNumber + 1, indentConverter, this._languageConfigurationService);\n if (indentOfSecondLine !== null) {\n const newSpaceCntOfSecondLine = indentUtils.getSpaceCnt(indentOfSecondLine, tabSize);\n const oldSpaceCntOfSecondLine = indentUtils.getSpaceCnt(strings.getLeadingWhitespace(model.getLineContent(startLineNumber + 1)), tabSize);\n if (newSpaceCntOfSecondLine !== oldSpaceCntOfSecondLine) {\n const spaceCntOffset = newSpaceCntOfSecondLine - oldSpaceCntOfSecondLine;\n for (let i = startLineNumber + 1; i <= range.endLineNumber; i++) {\n const lineContent = model.getLineContent(i);\n const originalIndent = strings.getLeadingWhitespace(lineContent);\n const originalSpacesCnt = indentUtils.getSpaceCnt(originalIndent, tabSize);\n const newSpacesCnt = originalSpacesCnt + spaceCntOffset;\n const newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\n if (newIndent !== originalIndent) {\n textEdits.push({\n range: new Range(i, 1, i, originalIndent.length + 1),\n text: newIndent\n });\n }\n }\n }\n }\n }\n if (textEdits.length > 0) {\n this.editor.pushUndoStop();\n const cmd = new AutoIndentOnPasteCommand(textEdits, this.editor.getSelection());\n this.editor.executeCommand('autoIndentOnPaste', cmd);\n this.editor.pushUndoStop();\n }\n }\n shouldIgnoreLine(model, lineNumber) {\n model.tokenization.forceTokenization(lineNumber);\n const nonWhitespaceColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\n if (nonWhitespaceColumn === 0) {\n return true;\n }\n const tokens = model.tokenization.getLineTokens(lineNumber);\n if (tokens.getCount() > 0) {\n const firstNonWhitespaceTokenIndex = tokens.findTokenIndexAtOffset(nonWhitespaceColumn);\n if (firstNonWhitespaceTokenIndex >= 0 && tokens.getStandardTokenType(firstNonWhitespaceTokenIndex) === 1 /* StandardTokenType.Comment */) {\n return true;\n }\n }\n return false;\n }\n dispose() {\n this.callOnDispose.dispose();\n this.callOnModel.dispose();\n }\n};\nAutoIndentOnPaste.ID = 'editor.contrib.autoIndentOnPaste';\nAutoIndentOnPaste = __decorate([\n __param(1, ILanguageConfigurationService)\n], AutoIndentOnPaste);\nexport { AutoIndentOnPaste };\nfunction getIndentationEditOperations(model, builder, tabSize, tabsToSpaces) {\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n // Model is empty\n return;\n }\n let spaces = '';\n for (let i = 0; i < tabSize; i++) {\n spaces += ' ';\n }\n const spacesRegExp = new RegExp(spaces, 'gi');\n for (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\n let lastIndentationColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\n if (lastIndentationColumn === 0) {\n lastIndentationColumn = model.getLineMaxColumn(lineNumber);\n }\n if (lastIndentationColumn === 1) {\n continue;\n }\n const originalIndentationRange = new Range(lineNumber, 1, lineNumber, lastIndentationColumn);\n const originalIndentation = model.getValueInRange(originalIndentationRange);\n const newIndentation = (tabsToSpaces\n ? originalIndentation.replace(/\\t/ig, spaces)\n : originalIndentation.replace(spacesRegExp, '\\t'));\n builder.addEditOperation(originalIndentationRange, newIndentation);\n }\n}\nexport class IndentationToSpacesCommand {\n constructor(selection, tabSize) {\n this.selection = selection;\n this.tabSize = tabSize;\n this.selectionId = null;\n }\n getEditOperations(model, builder) {\n this.selectionId = builder.trackSelection(this.selection);\n getIndentationEditOperations(model, builder, this.tabSize, true);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this.selectionId);\n }\n}\nexport class IndentationToTabsCommand {\n constructor(selection, tabSize) {\n this.selection = selection;\n this.tabSize = tabSize;\n this.selectionId = null;\n }\n getEditOperations(model, builder) {\n this.selectionId = builder.trackSelection(this.selection);\n getIndentationEditOperations(model, builder, this.tabSize, false);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this.selectionId);\n }\n}\nregisterEditorContribution(AutoIndentOnPaste.ID, AutoIndentOnPaste);\nregisterEditorAction(IndentationToSpacesAction);\nregisterEditorAction(IndentationToTabsAction);\nregisterEditorAction(IndentUsingTabs);\nregisterEditorAction(IndentUsingSpaces);\nregisterEditorAction(DetectIndentation);\nregisterEditorAction(ReindentLinesAction);\nregisterEditorAction(ReindentSelectedLinesAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport { URI } from '../../../../base/common/uri.js';\nexport class InlayHintAnchor {\n constructor(range, direction) {\n this.range = range;\n this.direction = direction;\n }\n}\nexport class InlayHintItem {\n constructor(hint, anchor, provider) {\n this.hint = hint;\n this.anchor = anchor;\n this.provider = provider;\n this._isResolved = false;\n }\n with(delta) {\n const result = new InlayHintItem(this.hint, delta.anchor, this.provider);\n result._isResolved = this._isResolved;\n result._currentResolve = this._currentResolve;\n return result;\n }\n resolve(token) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof this.provider.resolveInlayHint !== 'function') {\n return;\n }\n if (this._currentResolve) {\n // wait for an active resolve operation and try again\n // when that's done.\n yield this._currentResolve;\n if (token.isCancellationRequested) {\n return;\n }\n return this.resolve(token);\n }\n if (!this._isResolved) {\n this._currentResolve = this._doResolve(token)\n .finally(() => this._currentResolve = undefined);\n }\n yield this._currentResolve;\n });\n }\n _doResolve(token) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const newHint = yield Promise.resolve(this.provider.resolveInlayHint(this.hint, token));\n this.hint.tooltip = (_a = newHint === null || newHint === void 0 ? void 0 : newHint.tooltip) !== null && _a !== void 0 ? _a : this.hint.tooltip;\n this.hint.label = (_b = newHint === null || newHint === void 0 ? void 0 : newHint.label) !== null && _b !== void 0 ? _b : this.hint.label;\n this._isResolved = true;\n }\n catch (err) {\n onUnexpectedExternalError(err);\n this._isResolved = false;\n }\n });\n }\n}\nexport class InlayHintsFragments {\n constructor(ranges, data, model) {\n this._disposables = new DisposableStore();\n this.ranges = ranges;\n this.provider = new Set();\n const items = [];\n for (const [list, provider] of data) {\n this._disposables.add(list);\n this.provider.add(provider);\n for (const hint of list.hints) {\n // compute the range to which the item should be attached to\n const position = model.validatePosition(hint.position);\n let direction = 'before';\n const wordRange = InlayHintsFragments._getRangeAtPosition(model, position);\n let range;\n if (wordRange.getStartPosition().isBefore(position)) {\n range = Range.fromPositions(wordRange.getStartPosition(), position);\n direction = 'after';\n }\n else {\n range = Range.fromPositions(position, wordRange.getEndPosition());\n direction = 'before';\n }\n items.push(new InlayHintItem(hint, new InlayHintAnchor(range, direction), provider));\n }\n }\n this.items = items.sort((a, b) => Position.compare(a.hint.position, b.hint.position));\n }\n static create(registry, model, ranges, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = [];\n const promises = registry.ordered(model).reverse().map(provider => ranges.map((range) => __awaiter(this, void 0, void 0, function* () {\n try {\n const result = yield provider.provideInlayHints(model, range, token);\n if (result === null || result === void 0 ? void 0 : result.hints.length) {\n data.push([result, provider]);\n }\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n })));\n yield Promise.all(promises.flat());\n if (token.isCancellationRequested || model.isDisposed()) {\n throw new CancellationError();\n }\n return new InlayHintsFragments(ranges, data, model);\n });\n }\n dispose() {\n this._disposables.dispose();\n }\n static _getRangeAtPosition(model, position) {\n const line = position.lineNumber;\n const word = model.getWordAtPosition(position);\n if (word) {\n // always prefer the word range\n return new Range(line, word.startColumn, line, word.endColumn);\n }\n model.tokenization.tokenizeIfCheap(line);\n const tokens = model.tokenization.getLineTokens(line);\n const offset = position.column - 1;\n const idx = tokens.findTokenIndexAtOffset(offset);\n let start = tokens.getStartOffset(idx);\n let end = tokens.getEndOffset(idx);\n if (end - start === 1) {\n // single character token, when at its end try leading/trailing token instead\n if (start === offset && idx > 1) {\n // leading token\n start = tokens.getStartOffset(idx - 1);\n end = tokens.getEndOffset(idx - 1);\n }\n else if (end === offset && idx < tokens.getCount() - 1) {\n // trailing token\n start = tokens.getStartOffset(idx + 1);\n end = tokens.getEndOffset(idx + 1);\n }\n }\n return new Range(line, start + 1, line, end + 1);\n }\n}\nexport function asCommandLink(command) {\n return URI.from({\n scheme: Schemas.command,\n path: command.id,\n query: command.arguments && encodeURIComponent(JSON.stringify(command.arguments))\n }).toString();\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Action, Separator } from '../../../../base/common/actions.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { EditorExtensionsRegistry } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { DefinitionAction, SymbolNavigationAction, SymbolNavigationAnchor } from '../../gotoSymbol/browser/goToCommands.js';\nimport { PeekContext } from '../../peekView/browser/peekView.js';\nimport { isIMenuItem, MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nexport function showGoToContextMenu(accessor, editor, anchor, part) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const resolverService = accessor.get(ITextModelService);\n const contextMenuService = accessor.get(IContextMenuService);\n const commandService = accessor.get(ICommandService);\n const instaService = accessor.get(IInstantiationService);\n const notificationService = accessor.get(INotificationService);\n yield part.item.resolve(CancellationToken.None);\n if (!part.part.location) {\n return;\n }\n const location = part.part.location;\n const menuActions = [];\n // from all registered (not active) context menu actions select those\n // that are a symbol navigation action\n const filter = new Set(MenuRegistry.getMenuItems(MenuId.EditorContext)\n .map(item => isIMenuItem(item) ? item.command.id : ''));\n for (const delegate of EditorExtensionsRegistry.getEditorActions()) {\n if (delegate instanceof SymbolNavigationAction && filter.has(delegate.id)) {\n menuActions.push(new Action(delegate.id, delegate.label, undefined, true, () => __awaiter(this, void 0, void 0, function* () {\n const ref = yield resolverService.createModelReference(location.uri);\n try {\n yield instaService.invokeFunction(delegate.run.bind(delegate), editor, new SymbolNavigationAnchor(ref.object.textEditorModel, Range.getStartPosition(location.range)));\n }\n finally {\n ref.dispose();\n }\n })));\n }\n }\n if (part.part.command) {\n const { command } = part.part;\n menuActions.push(new Separator());\n menuActions.push(new Action(command.id, command.title, undefined, true, () => __awaiter(this, void 0, void 0, function* () {\n var _b;\n try {\n yield commandService.executeCommand(command.id, ...((_b = command.arguments) !== null && _b !== void 0 ? _b : []));\n }\n catch (err) {\n notificationService.notify({\n severity: Severity.Error,\n source: part.item.provider.displayName,\n message: err\n });\n }\n })));\n }\n // show context menu\n const useShadowDOM = editor.getOption(117 /* EditorOption.useShadowDOM */);\n contextMenuService.showContextMenu({\n domForShadowRoot: useShadowDOM ? (_a = editor.getDomNode()) !== null && _a !== void 0 ? _a : undefined : undefined,\n getAnchor: () => {\n const box = dom.getDomNodePagePosition(anchor);\n return { x: box.left, y: box.top + box.height + 8 };\n },\n getActions: () => menuActions,\n onHide: () => {\n editor.focus();\n },\n autoSelectFirstItem: true,\n });\n });\n}\nexport function goToDefinitionWithLocation(accessor, event, editor, location) {\n return __awaiter(this, void 0, void 0, function* () {\n const resolverService = accessor.get(ITextModelService);\n const ref = yield resolverService.createModelReference(location.uri);\n yield editor.invokeWithinContext((accessor) => __awaiter(this, void 0, void 0, function* () {\n const openToSide = event.hasSideBySideModifier;\n const contextKeyService = accessor.get(IContextKeyService);\n const isInPeek = PeekContext.inPeekEditor.getValue(contextKeyService);\n const canPeek = !openToSide && editor.getOption(80 /* EditorOption.definitionLinkOpensInPeek */) && !isInPeek;\n const action = new DefinitionAction({ openToSide, openInPeek: canPeek, muteMessage: true }, { alias: '', label: '', id: '', precondition: undefined });\n return action.run(accessor, editor, { model: ref.object.textEditorModel, position: Range.getStartPosition(location.range) });\n }));\n ref.dispose();\n });\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { ModifierKeyEmitter } from '../../../../base/browser/dom.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { LRUCache } from '../../../../base/common/map.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { DynamicCssRules } from '../../../browser/editorDom.js';\nimport { EDITOR_FONT_DEFAULTS } from '../../../common/config/editorOptions.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nimport * as languages from '../../../common/languages.js';\nimport { InjectedTextCursorStops } from '../../../common/model.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { ClickLinkGesture } from '../../gotoSymbol/browser/link/clickLinkGesture.js';\nimport { InlayHintAnchor, InlayHintsFragments } from './inlayHints.js';\nimport { goToDefinitionWithLocation, showGoToContextMenu } from './inlayHintsLocations.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator, IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService, Severity } from '../../../../platform/notification/common/notification.js';\nimport * as colors from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\n// --- hint caching service (per session)\nclass InlayHintsCache {\n constructor() {\n this._entries = new LRUCache(50);\n }\n get(model) {\n const key = InlayHintsCache._key(model);\n return this._entries.get(key);\n }\n set(model, value) {\n const key = InlayHintsCache._key(model);\n this._entries.set(key, value);\n }\n static _key(model) {\n return `${model.uri.toString()}/${model.getVersionId()}`;\n }\n}\nconst IInlayHintsCache = createDecorator('IInlayHintsCache');\nregisterSingleton(IInlayHintsCache, InlayHintsCache, true);\n// --- rendered label\nexport class RenderedInlayHintLabelPart {\n constructor(item, index) {\n this.item = item;\n this.index = index;\n }\n get part() {\n const label = this.item.hint.label;\n if (typeof label === 'string') {\n return { label };\n }\n else {\n return label[this.index];\n }\n }\n}\nclass ActiveInlayHintInfo {\n constructor(part, hasTriggerModifier) {\n this.part = part;\n this.hasTriggerModifier = hasTriggerModifier;\n }\n}\n// --- controller\nlet InlayHintsController = class InlayHintsController {\n constructor(_editor, _languageFeaturesService, _featureDebounce, _inlayHintsCache, _commandService, _notificationService, _instaService) {\n this._editor = _editor;\n this._languageFeaturesService = _languageFeaturesService;\n this._inlayHintsCache = _inlayHintsCache;\n this._commandService = _commandService;\n this._notificationService = _notificationService;\n this._instaService = _instaService;\n this._disposables = new DisposableStore();\n this._sessionDisposables = new DisposableStore();\n this._decorationsMetadata = new Map();\n this._ruleFactory = new DynamicCssRules(this._editor);\n this._activeRenderMode = 0 /* RenderMode.Normal */;\n this._debounceInfo = _featureDebounce.for(_languageFeaturesService.inlayHintsProvider, 'InlayHint', { min: 25 });\n this._disposables.add(_languageFeaturesService.inlayHintsProvider.onDidChange(() => this._update()));\n this._disposables.add(_editor.onDidChangeModel(() => this._update()));\n this._disposables.add(_editor.onDidChangeModelLanguage(() => this._update()));\n this._disposables.add(_editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(129 /* EditorOption.inlayHints */)) {\n this._update();\n }\n }));\n this._update();\n }\n static get(editor) {\n var _a;\n return (_a = editor.getContribution(InlayHintsController.ID)) !== null && _a !== void 0 ? _a : undefined;\n }\n dispose() {\n this._sessionDisposables.dispose();\n this._removeAllDecorations();\n this._disposables.dispose();\n }\n _update() {\n this._sessionDisposables.clear();\n this._removeAllDecorations();\n const options = this._editor.getOption(129 /* EditorOption.inlayHints */);\n if (options.enabled === 'off') {\n return;\n }\n const model = this._editor.getModel();\n if (!model || !this._languageFeaturesService.inlayHintsProvider.has(model)) {\n return;\n }\n // iff possible, quickly update from cache\n const cached = this._inlayHintsCache.get(model);\n if (cached) {\n this._updateHintsDecorators([model.getFullModelRange()], cached);\n }\n this._sessionDisposables.add(toDisposable(() => {\n // cache items when switching files etc\n if (!model.isDisposed()) {\n this._cacheHintsForFastRestore(model);\n }\n }));\n let cts;\n const watchedProviders = new Set();\n const scheduler = new RunOnceScheduler(() => __awaiter(this, void 0, void 0, function* () {\n const t1 = Date.now();\n cts === null || cts === void 0 ? void 0 : cts.dispose(true);\n cts = new CancellationTokenSource();\n const listener = model.onWillDispose(() => cts === null || cts === void 0 ? void 0 : cts.cancel());\n try {\n const myToken = cts.token;\n const inlayHints = yield InlayHintsFragments.create(this._languageFeaturesService.inlayHintsProvider, model, this._getHintsRanges(), myToken);\n scheduler.delay = this._debounceInfo.update(model, Date.now() - t1);\n if (myToken.isCancellationRequested) {\n inlayHints.dispose();\n return;\n }\n // listen to provider changes\n for (const provider of inlayHints.provider) {\n if (typeof provider.onDidChangeInlayHints === 'function' && !watchedProviders.has(provider)) {\n watchedProviders.add(provider);\n this._sessionDisposables.add(provider.onDidChangeInlayHints(() => {\n if (!scheduler.isScheduled()) { // ignore event when request is already scheduled\n scheduler.schedule();\n }\n }));\n }\n }\n this._sessionDisposables.add(inlayHints);\n this._updateHintsDecorators(inlayHints.ranges, inlayHints.items);\n this._cacheHintsForFastRestore(model);\n }\n catch (err) {\n onUnexpectedError(err);\n }\n finally {\n cts.dispose();\n listener.dispose();\n }\n }), this._debounceInfo.get(model));\n this._sessionDisposables.add(scheduler);\n this._sessionDisposables.add(toDisposable(() => cts === null || cts === void 0 ? void 0 : cts.dispose(true)));\n scheduler.schedule(0);\n this._sessionDisposables.add(this._editor.onDidScrollChange((e) => {\n // update when scroll position changes\n // uses scrollTopChanged has weak heuristic to differenatiate between scrolling due to\n // typing or due to \"actual\" scrolling\n if (e.scrollTopChanged || !scheduler.isScheduled()) {\n scheduler.schedule();\n }\n }));\n this._sessionDisposables.add(this._editor.onDidChangeModelContent((e) => {\n // update less aggressive when typing\n const delay = Math.max(scheduler.delay, 1250);\n scheduler.schedule(delay);\n }));\n if (options.enabled === 'on') {\n // different \"on\" modes: always\n this._activeRenderMode = 0 /* RenderMode.Normal */;\n }\n else {\n // different \"on\" modes: offUnlessPressed, or onUnlessPressed\n let defaultMode;\n let altMode;\n if (options.enabled === 'onUnlessPressed') {\n defaultMode = 0 /* RenderMode.Normal */;\n altMode = 1 /* RenderMode.Invisible */;\n }\n else {\n defaultMode = 1 /* RenderMode.Invisible */;\n altMode = 0 /* RenderMode.Normal */;\n }\n this._activeRenderMode = defaultMode;\n this._sessionDisposables.add(ModifierKeyEmitter.getInstance().event(e => {\n if (!this._editor.hasModel()) {\n return;\n }\n const newRenderMode = e.altKey && e.ctrlKey ? altMode : defaultMode;\n if (newRenderMode !== this._activeRenderMode) {\n this._activeRenderMode = newRenderMode;\n const model = this._editor.getModel();\n const copies = this._copyInlayHintsWithCurrentAnchor(model);\n this._updateHintsDecorators([model.getFullModelRange()], copies);\n scheduler.schedule(0);\n }\n }));\n }\n // mouse gestures\n this._sessionDisposables.add(this._installDblClickGesture(() => scheduler.schedule(0)));\n this._sessionDisposables.add(this._installLinkGesture());\n this._sessionDisposables.add(this._installContextMenu());\n }\n _installLinkGesture() {\n const store = new DisposableStore();\n const gesture = store.add(new ClickLinkGesture(this._editor));\n // let removeHighlight = () => { };\n const sessionStore = new DisposableStore();\n store.add(sessionStore);\n store.add(gesture.onMouseMoveOrRelevantKeyDown(e => {\n const [mouseEvent] = e;\n const labelPart = this._getInlayHintLabelPart(mouseEvent);\n const model = this._editor.getModel();\n if (!labelPart || !model) {\n sessionStore.clear();\n return;\n }\n // resolve the item\n const cts = new CancellationTokenSource();\n sessionStore.add(toDisposable(() => cts.dispose(true)));\n labelPart.item.resolve(cts.token);\n // render link => when the modifier is pressed and when there is a command or location\n this._activeInlayHintPart = labelPart.part.command || labelPart.part.location\n ? new ActiveInlayHintInfo(labelPart, mouseEvent.hasTriggerModifier)\n : undefined;\n const lineNumber = labelPart.item.hint.position.lineNumber;\n const range = new Range(lineNumber, 1, lineNumber, model.getLineMaxColumn(lineNumber));\n const lineHints = this._getInlineHintsForRange(range);\n this._updateHintsDecorators([range], lineHints);\n sessionStore.add(toDisposable(() => {\n this._activeInlayHintPart = undefined;\n this._updateHintsDecorators([range], lineHints);\n }));\n }));\n store.add(gesture.onCancel(() => sessionStore.clear()));\n store.add(gesture.onExecute((e) => __awaiter(this, void 0, void 0, function* () {\n const label = this._getInlayHintLabelPart(e);\n if (label) {\n const part = label.part;\n if (part.location) {\n // location -> execute go to def\n this._instaService.invokeFunction(goToDefinitionWithLocation, e, this._editor, part.location);\n }\n else if (languages.Command.is(part.command)) {\n // command -> execute it\n yield this._invokeCommand(part.command, label.item);\n }\n }\n })));\n return store;\n }\n _getInlineHintsForRange(range) {\n const lineHints = new Set();\n for (const data of this._decorationsMetadata.values()) {\n if (range.containsRange(data.item.anchor.range)) {\n lineHints.add(data.item);\n }\n }\n return Array.from(lineHints);\n }\n _installDblClickGesture(updateInlayHints) {\n return this._editor.onMouseUp((e) => __awaiter(this, void 0, void 0, function* () {\n if (e.event.detail !== 2) {\n return;\n }\n const part = this._getInlayHintLabelPart(e);\n if (!part) {\n return;\n }\n e.event.preventDefault();\n yield part.item.resolve(CancellationToken.None);\n if (isNonEmptyArray(part.item.hint.textEdits)) {\n const edits = part.item.hint.textEdits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text));\n this._editor.executeEdits('inlayHint.default', edits);\n updateInlayHints();\n }\n }));\n }\n _installContextMenu() {\n return this._editor.onContextMenu((e) => __awaiter(this, void 0, void 0, function* () {\n if (!(e.event.target instanceof HTMLElement)) {\n return;\n }\n const part = this._getInlayHintLabelPart(e);\n if (part) {\n yield this._instaService.invokeFunction(showGoToContextMenu, this._editor, e.event.target, part);\n }\n }));\n }\n _getInlayHintLabelPart(e) {\n var _a;\n if (e.target.type !== 6 /* MouseTargetType.CONTENT_TEXT */) {\n return undefined;\n }\n const options = (_a = e.target.detail.injectedText) === null || _a === void 0 ? void 0 : _a.options;\n if (options instanceof ModelDecorationInjectedTextOptions && (options === null || options === void 0 ? void 0 : options.attachedData) instanceof RenderedInlayHintLabelPart) {\n return options.attachedData;\n }\n return undefined;\n }\n _invokeCommand(command, item) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield this._commandService.executeCommand(command.id, ...((_a = command.arguments) !== null && _a !== void 0 ? _a : []));\n }\n catch (err) {\n this._notificationService.notify({\n severity: Severity.Error,\n source: item.provider.displayName,\n message: err\n });\n }\n });\n }\n _cacheHintsForFastRestore(model) {\n const hints = this._copyInlayHintsWithCurrentAnchor(model);\n this._inlayHintsCache.set(model, hints);\n }\n // return inlay hints but with an anchor that reflects \"updates\"\n // that happened after receiving them, e.g adding new lines before a hint\n _copyInlayHintsWithCurrentAnchor(model) {\n const items = new Map();\n for (const [id, obj] of this._decorationsMetadata) {\n if (items.has(obj.item)) {\n // an inlay item can be rendered as multiple decorations\n // but they will all uses the same range\n continue;\n }\n const range = model.getDecorationRange(id);\n if (range) {\n // update range with whatever the editor has tweaked it to\n const anchor = new InlayHintAnchor(range, obj.item.anchor.direction);\n const copy = obj.item.with({ anchor });\n items.set(obj.item, copy);\n }\n }\n return Array.from(items.values());\n }\n _getHintsRanges() {\n const extra = 30;\n const model = this._editor.getModel();\n const visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n const result = [];\n for (const range of visibleRanges.sort(Range.compareRangesUsingStarts)) {\n const extendedRange = model.validateRange(new Range(range.startLineNumber - extra, range.startColumn, range.endLineNumber + extra, range.endColumn));\n if (result.length === 0 || !Range.areIntersectingOrTouching(result[result.length - 1], extendedRange)) {\n result.push(extendedRange);\n }\n else {\n result[result.length - 1] = Range.plusRange(result[result.length - 1], extendedRange);\n }\n }\n return result;\n }\n _updateHintsDecorators(ranges, items) {\n var _a, _b;\n // utils to collect/create injected text decorations\n const newDecorationsData = [];\n const addInjectedText = (item, ref, content, cursorStops, attachedData) => {\n const opts = {\n content,\n inlineClassNameAffectsLetterSpacing: true,\n inlineClassName: ref.className,\n cursorStops,\n attachedData\n };\n newDecorationsData.push({\n item,\n classNameRef: ref,\n decoration: {\n range: item.anchor.range,\n options: {\n // className: \"rangeHighlight\", // DEBUG highlight to see to what range a hint is attached\n description: 'InlayHint',\n showIfCollapsed: item.anchor.range.isEmpty(),\n collapseOnReplaceEdit: !item.anchor.range.isEmpty(),\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n [item.anchor.direction]: this._activeRenderMode === 0 /* RenderMode.Normal */ ? opts : undefined\n }\n }\n });\n };\n const addInjectedWhitespace = (item, isLast) => {\n const marginRule = this._ruleFactory.createClassNameRef({\n width: `${(fontSize / 3) | 0}px`,\n display: 'inline-block'\n });\n addInjectedText(item, marginRule, '\\u200a', isLast ? InjectedTextCursorStops.Right : InjectedTextCursorStops.None);\n };\n //\n const { fontSize, fontFamily, padding, isUniform } = this._getLayoutInfo();\n const fontFamilyVar = '--code-editorInlayHintsFontFamily';\n this._editor.getContainerDomNode().style.setProperty(fontFamilyVar, fontFamily);\n for (const item of items) {\n // whitespace leading the actual label\n if (item.hint.paddingLeft) {\n addInjectedWhitespace(item, false);\n }\n // the label with its parts\n const parts = typeof item.hint.label === 'string'\n ? [{ label: item.hint.label }]\n : item.hint.label;\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const isFirst = i === 0;\n const isLast = i === parts.length - 1;\n const cssProperties = {\n fontSize: `${fontSize}px`,\n fontFamily: `var(${fontFamilyVar}), ${EDITOR_FONT_DEFAULTS.fontFamily}`,\n verticalAlign: isUniform ? 'baseline' : 'middle',\n };\n if (isNonEmptyArray(item.hint.textEdits)) {\n cssProperties.cursor = 'default';\n }\n this._fillInColors(cssProperties, item.hint);\n if ((part.command || part.location) && ((_a = this._activeInlayHintPart) === null || _a === void 0 ? void 0 : _a.part.item) === item && this._activeInlayHintPart.part.index === i) {\n // active link!\n cssProperties.textDecoration = 'underline';\n if (this._activeInlayHintPart.hasTriggerModifier) {\n cssProperties.color = themeColorFromId(colors.editorActiveLinkForeground);\n cssProperties.cursor = 'pointer';\n }\n }\n if (padding) {\n if (isFirst && isLast) {\n // only element\n cssProperties.padding = `1px ${Math.max(1, fontSize / 4) | 0}px`;\n cssProperties.borderRadius = `${(fontSize / 4) | 0}px`;\n }\n else if (isFirst) {\n // first element\n cssProperties.padding = `1px 0 1px ${Math.max(1, fontSize / 4) | 0}px`;\n cssProperties.borderRadius = `${(fontSize / 4) | 0}px 0 0 ${(fontSize / 4) | 0}px`;\n }\n else if (isLast) {\n // last element\n cssProperties.padding = `1px ${Math.max(1, fontSize / 4) | 0}px 1px 0`;\n cssProperties.borderRadius = `0 ${(fontSize / 4) | 0}px ${(fontSize / 4) | 0}px 0`;\n }\n else {\n cssProperties.padding = `1px 0 1px 0`;\n }\n }\n addInjectedText(item, this._ruleFactory.createClassNameRef(cssProperties), fixSpace(part.label), isLast && !item.hint.paddingRight ? InjectedTextCursorStops.Right : InjectedTextCursorStops.None, new RenderedInlayHintLabelPart(item, i));\n }\n // whitespace trailing the actual label\n if (item.hint.paddingRight) {\n addInjectedWhitespace(item, true);\n }\n if (newDecorationsData.length > InlayHintsController._MAX_DECORATORS) {\n break;\n }\n }\n // collect all decoration ids that are affected by the ranges\n // and only update those decorations\n const decorationIdsToReplace = [];\n for (const range of ranges) {\n for (const { id } of (_b = this._editor.getDecorationsInRange(range)) !== null && _b !== void 0 ? _b : []) {\n const metadata = this._decorationsMetadata.get(id);\n if (metadata) {\n decorationIdsToReplace.push(id);\n metadata.classNameRef.dispose();\n this._decorationsMetadata.delete(id);\n }\n }\n }\n this._editor.changeDecorations(accessor => {\n const newDecorationIds = accessor.deltaDecorations(decorationIdsToReplace, newDecorationsData.map(d => d.decoration));\n for (let i = 0; i < newDecorationIds.length; i++) {\n const data = newDecorationsData[i];\n this._decorationsMetadata.set(newDecorationIds[i], data);\n }\n });\n }\n _fillInColors(props, hint) {\n if (hint.kind === languages.InlayHintKind.Parameter) {\n props.backgroundColor = themeColorFromId(colors.editorInlayHintParameterBackground);\n props.color = themeColorFromId(colors.editorInlayHintParameterForeground);\n }\n else if (hint.kind === languages.InlayHintKind.Type) {\n props.backgroundColor = themeColorFromId(colors.editorInlayHintTypeBackground);\n props.color = themeColorFromId(colors.editorInlayHintTypeForeground);\n }\n else {\n props.backgroundColor = themeColorFromId(colors.editorInlayHintBackground);\n props.color = themeColorFromId(colors.editorInlayHintForeground);\n }\n }\n _getLayoutInfo() {\n const options = this._editor.getOption(129 /* EditorOption.inlayHints */);\n const padding = options.padding;\n const editorFontSize = this._editor.getOption(48 /* EditorOption.fontSize */);\n const editorFontFamily = this._editor.getOption(45 /* EditorOption.fontFamily */);\n let fontSize = options.fontSize;\n if (!fontSize || fontSize < 5 || fontSize > editorFontSize) {\n fontSize = editorFontSize;\n }\n const fontFamily = options.fontFamily || editorFontFamily;\n const isUniform = !padding\n && fontFamily === editorFontFamily\n && fontSize === editorFontSize;\n return { fontSize, fontFamily, padding, isUniform };\n }\n _removeAllDecorations() {\n this._editor.removeDecorations(Array.from(this._decorationsMetadata.keys()));\n for (const obj of this._decorationsMetadata.values()) {\n obj.classNameRef.dispose();\n }\n this._decorationsMetadata.clear();\n }\n};\nInlayHintsController.ID = 'editor.contrib.InlayHints';\nInlayHintsController._MAX_DECORATORS = 1500;\nInlayHintsController = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, ILanguageFeatureDebounceService),\n __param(3, IInlayHintsCache),\n __param(4, ICommandService),\n __param(5, INotificationService),\n __param(6, IInstantiationService)\n], InlayHintsController);\nexport { InlayHintsController };\n// Prevents the view from potentially visible whitespace\nfunction fixSpace(str) {\n const noBreakWhitespace = '\\xa0';\n return str.replace(/[ \\t]/g, noBreakWhitespace);\n}\nCommandsRegistry.registerCommand('_executeInlayHintProvider', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\n const [uri, range] = args;\n assertType(URI.isUri(uri));\n assertType(Range.isIRange(range));\n const { inlayHintsProvider } = accessor.get(ILanguageFeaturesService);\n const ref = yield accessor.get(ITextModelService).createModelReference(uri);\n try {\n const model = yield InlayHintsFragments.create(inlayHintsProvider, ref.object.textEditorModel, [Range.lift(range)], CancellationToken.None);\n const result = model.items.map(i => i.hint);\n setTimeout(() => model.dispose(), 0); // dispose after sending to ext host\n return result;\n }\n finally {\n ref.dispose();\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nimport { AsyncIterableObject } from '../../../../base/common/async.js';\nimport { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Position } from '../../../common/core/position.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { HoverForeignElementAnchor } from '../../hover/browser/hoverTypes.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { getHover } from '../../hover/browser/getHover.js';\nimport { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';\nimport { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { localize } from '../../../../nls.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { asCommandLink } from './inlayHints.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nclass InlayHintsHoverAnchor extends HoverForeignElementAnchor {\n constructor(part, owner) {\n super(10, owner, part.item.anchor.range);\n this.part = part;\n }\n}\nlet InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {\n constructor(editor, languageService, openerService, configurationService, _resolverService, languageFeaturesService) {\n super(editor, languageService, openerService, configurationService, languageFeaturesService);\n this._resolverService = _resolverService;\n this.hoverOrdinal = 6;\n }\n suggestHoverAnchor(mouseEvent) {\n var _a;\n const controller = InlayHintsController.get(this._editor);\n if (!controller) {\n return null;\n }\n if (mouseEvent.target.type !== 6 /* MouseTargetType.CONTENT_TEXT */) {\n return null;\n }\n const options = (_a = mouseEvent.target.detail.injectedText) === null || _a === void 0 ? void 0 : _a.options;\n if (!(options instanceof ModelDecorationInjectedTextOptions && options.attachedData instanceof RenderedInlayHintLabelPart)) {\n return null;\n }\n return new InlayHintsHoverAnchor(options.attachedData, this);\n }\n computeSync() {\n return [];\n }\n computeAsync(anchor, _lineDecorations, token) {\n if (!(anchor instanceof InlayHintsHoverAnchor)) {\n return AsyncIterableObject.EMPTY;\n }\n return new AsyncIterableObject((executor) => __awaiter(this, void 0, void 0, function* () {\n var e_1, _a;\n const { part } = anchor;\n yield part.item.resolve(token);\n if (token.isCancellationRequested) {\n return;\n }\n // (1) Inlay Tooltip\n let itemTooltip;\n if (typeof part.item.hint.tooltip === 'string') {\n itemTooltip = new MarkdownString().appendText(part.item.hint.tooltip);\n }\n else if (part.item.hint.tooltip) {\n itemTooltip = part.item.hint.tooltip;\n }\n if (itemTooltip) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [itemTooltip], 0));\n }\n // (1.2) Inlay dbl-click gesture\n if (isNonEmptyArray(part.item.hint.textEdits)) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize('hint.dbl', \"Double click to insert\"))], 10001));\n }\n // (2) Inlay Label Part Tooltip\n let partTooltip;\n if (typeof part.part.tooltip === 'string') {\n partTooltip = new MarkdownString().appendText(part.part.tooltip);\n }\n else if (part.part.tooltip) {\n partTooltip = part.part.tooltip;\n }\n if (partTooltip) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [partTooltip], 1));\n }\n // (2.2) Inlay Label Part Help Hover\n if (part.part.location || part.part.command) {\n let linkHint;\n const useMetaKey = this._editor.getOption(72 /* EditorOption.multiCursorModifier */) === 'altKey';\n const kb = useMetaKey\n ? platform.isMacintosh\n ? localize('links.navigate.kb.meta.mac', \"cmd + click\")\n : localize('links.navigate.kb.meta', \"ctrl + click\")\n : platform.isMacintosh\n ? localize('links.navigate.kb.alt.mac', \"option + click\")\n : localize('links.navigate.kb.alt', \"alt + click\");\n if (part.part.location && part.part.command) {\n linkHint = new MarkdownString().appendText(localize('hint.defAndCommand', 'Go to Definition ({0}), right click for more', kb));\n }\n else if (part.part.location) {\n linkHint = new MarkdownString().appendText(localize('hint.def', 'Go to Definition ({0})', kb));\n }\n else if (part.part.command) {\n linkHint = new MarkdownString(`[${localize('hint.cmd', \"Execute Command\")}](${asCommandLink(part.part.command)} \"${part.part.command.title}\") (${kb})`, { isTrusted: true });\n }\n if (linkHint) {\n executor.emitOne(new MarkdownHover(this, anchor.range, [linkHint], 10000));\n }\n }\n // (3) Inlay Label Part Location tooltip\n const iterable = yield this._resolveInlayHintLabelPartHover(part, token);\n try {\n for (var iterable_1 = __asyncValues(iterable), iterable_1_1; iterable_1_1 = yield iterable_1.next(), !iterable_1_1.done;) {\n const item = iterable_1_1.value;\n executor.emitOne(item);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) yield _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }));\n }\n _resolveInlayHintLabelPartHover(part, token) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!part.part.location) {\n return AsyncIterableObject.EMPTY;\n }\n const { uri, range } = part.part.location;\n const ref = yield this._resolverService.createModelReference(uri);\n try {\n const model = ref.object.textEditorModel;\n if (!this._languageFeaturesService.hoverProvider.has(model)) {\n return AsyncIterableObject.EMPTY;\n }\n return getHover(this._languageFeaturesService.hoverProvider, model, new Position(range.startLineNumber, range.startColumn), token)\n .filter(item => !isEmptyMarkdownString(item.hover.contents))\n .map(item => new MarkdownHover(this, part.item.anchor.range, item.hover.contents, 2 + item.ordinal));\n }\n finally {\n ref.dispose();\n }\n });\n }\n};\nInlayHintsHover = __decorate([\n __param(1, ILanguageService),\n __param(2, IOpenerService),\n __param(3, IConfigurationService),\n __param(4, ITextModelService),\n __param(5, ILanguageFeaturesService)\n], InlayHintsHover);\nexport { InlayHintsHover };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { InlayHintsController } from './inlayHintsController.js';\nimport { InlayHintsHover } from './inlayHintsHover.js';\nregisterEditorContribution(InlayHintsController.ID, InlayHintsController);\nHoverParticipantRegistry.register(InlayHintsHover);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport const inlineSuggestCommitId = 'editor.action.inlineSuggest.commit';\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nexport function createDisposableRef(object, disposable) {\n return {\n object,\n dispose: () => disposable === null || disposable === void 0 ? void 0 : disposable.dispose(),\n };\n}\nexport function applyEdits(text, edits) {\n const transformer = new PositionOffsetTransformer(text);\n const offsetEdits = edits.map(e => {\n const range = Range.lift(e.range);\n return ({\n startOffset: transformer.getOffset(range.getStartPosition()),\n endOffset: transformer.getOffset(range.getEndPosition()),\n text: e.text\n });\n });\n offsetEdits.sort((a, b) => b.startOffset - a.startOffset);\n for (const edit of offsetEdits) {\n text = text.substring(0, edit.startOffset) + edit.text + text.substring(edit.endOffset);\n }\n return text;\n}\nclass PositionOffsetTransformer {\n constructor(text) {\n this.lineStartOffsetByLineIdx = [];\n this.lineStartOffsetByLineIdx.push(0);\n for (let i = 0; i < text.length; i++) {\n if (text.charAt(i) === '\\n') {\n this.lineStartOffsetByLineIdx.push(i + 1);\n }\n }\n }\n getOffset(position) {\n return this.lineStartOffsetByLineIdx[position.lineNumber - 1] + position.column - 1;\n }\n}\nconst array = [];\nexport function getReadonlyEmptyArray() {\n return array;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { applyEdits } from './utils.js';\nexport class GhostText {\n constructor(lineNumber, parts, additionalReservedLineCount = 0) {\n this.lineNumber = lineNumber;\n this.parts = parts;\n this.additionalReservedLineCount = additionalReservedLineCount;\n }\n renderForScreenReader(lineText) {\n if (this.parts.length === 0) {\n return '';\n }\n const lastPart = this.parts[this.parts.length - 1];\n const cappedLineText = lineText.substr(0, lastPart.column - 1);\n const text = applyEdits(cappedLineText, this.parts.map(p => ({\n range: { startLineNumber: 1, endLineNumber: 1, startColumn: p.column, endColumn: p.column },\n text: p.lines.join('\\n')\n })));\n return text.substring(this.parts[0].column - 1);\n }\n isEmpty() {\n return this.parts.every(p => p.lines.length === 0);\n }\n}\nexport class GhostTextPart {\n constructor(column, lines, \n /**\n * Indicates if this part is a preview of an inline suggestion when a suggestion is previewed.\n */\n preview) {\n this.column = column;\n this.lines = lines;\n this.preview = preview;\n }\n}\nexport class GhostTextReplacement {\n constructor(lineNumber, columnStart, length, newLines, additionalReservedLineCount = 0) {\n this.lineNumber = lineNumber;\n this.columnStart = columnStart;\n this.length = length;\n this.newLines = newLines;\n this.additionalReservedLineCount = additionalReservedLineCount;\n this.parts = [\n new GhostTextPart(this.columnStart + this.length, this.newLines, false),\n ];\n }\n renderForScreenReader(_lineText) {\n return this.newLines.join('\\n');\n }\n}\nexport class BaseGhostTextWidgetModel extends Disposable {\n constructor(editor) {\n super();\n this.editor = editor;\n this._expanded = undefined;\n this.onDidChangeEmitter = new Emitter();\n this.onDidChange = this.onDidChangeEmitter.event;\n this._register(editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(108 /* EditorOption.suggest */) && this._expanded === undefined) {\n this.onDidChangeEmitter.fire();\n }\n }));\n }\n setExpanded(expanded) {\n this._expanded = true;\n this.onDidChangeEmitter.fire();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { LcsDiff } from '../../../../base/common/diff/diff.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nimport { GhostText, GhostTextPart } from './ghostText.js';\nexport function minimizeInlineCompletion(model, inlineCompletion) {\n if (!inlineCompletion) {\n return inlineCompletion;\n }\n const valueToReplace = model.getValueInRange(inlineCompletion.range);\n const commonPrefixLen = strings.commonPrefixLength(valueToReplace, inlineCompletion.insertText);\n const startOffset = model.getOffsetAt(inlineCompletion.range.getStartPosition()) + commonPrefixLen;\n const start = model.getPositionAt(startOffset);\n const remainingValueToReplace = valueToReplace.substr(commonPrefixLen);\n const commonSuffixLen = strings.commonSuffixLength(remainingValueToReplace, inlineCompletion.insertText);\n const end = model.getPositionAt(Math.max(startOffset, model.getOffsetAt(inlineCompletion.range.getEndPosition()) - commonSuffixLen));\n return {\n range: Range.fromPositions(start, end),\n insertText: inlineCompletion.insertText.substr(commonPrefixLen, inlineCompletion.insertText.length - commonPrefixLen - commonSuffixLen),\n snippetInfo: inlineCompletion.snippetInfo,\n filterText: inlineCompletion.filterText,\n additionalTextEdits: inlineCompletion.additionalTextEdits,\n };\n}\nexport function normalizedInlineCompletionsEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return a.range.equalsRange(b.range) && a.insertText === b.insertText && a.command === b.command;\n}\n/**\n * @param previewSuffixLength Sets where to split `inlineCompletion.text`.\n * \tIf the text is `hello` and the suffix length is 2, the non-preview part is `hel` and the preview-part is `lo`.\n*/\nexport function inlineCompletionToGhostText(inlineCompletion, textModel, mode, cursorPosition, previewSuffixLength = 0) {\n if (inlineCompletion.range.startLineNumber !== inlineCompletion.range.endLineNumber) {\n // Only single line replacements are supported.\n return undefined;\n }\n const sourceLine = textModel.getLineContent(inlineCompletion.range.startLineNumber);\n const sourceIndentationLength = strings.getLeadingWhitespace(sourceLine).length;\n const suggestionTouchesIndentation = inlineCompletion.range.startColumn - 1 <= sourceIndentationLength;\n if (suggestionTouchesIndentation) {\n // source: ··········[······abc]\n // ^^^^^^^^^ inlineCompletion.range\n // ^^^^^^^^^^ ^^^^^^ sourceIndentationLength\n // ^^^^^^ replacedIndentation.length\n // ^^^ rangeThatDoesNotReplaceIndentation\n // inlineCompletion.text: '··foo'\n // ^^ suggestionAddedIndentationLength\n const suggestionAddedIndentationLength = strings.getLeadingWhitespace(inlineCompletion.insertText).length;\n const replacedIndentation = sourceLine.substring(inlineCompletion.range.startColumn - 1, sourceIndentationLength);\n const rangeThatDoesNotReplaceIndentation = Range.fromPositions(inlineCompletion.range.getStartPosition().delta(0, replacedIndentation.length), inlineCompletion.range.getEndPosition());\n const suggestionWithoutIndentationChange = inlineCompletion.insertText.startsWith(replacedIndentation)\n // Adds more indentation without changing existing indentation: We can add ghost text for this\n ? inlineCompletion.insertText.substring(replacedIndentation.length)\n // Changes or removes existing indentation. Only add ghost text for the non-indentation part.\n : inlineCompletion.insertText.substring(suggestionAddedIndentationLength);\n inlineCompletion = {\n range: rangeThatDoesNotReplaceIndentation,\n insertText: suggestionWithoutIndentationChange,\n command: inlineCompletion.command,\n snippetInfo: undefined,\n filterText: inlineCompletion.filterText,\n additionalTextEdits: inlineCompletion.additionalTextEdits,\n };\n }\n // This is a single line string\n const valueToBeReplaced = textModel.getValueInRange(inlineCompletion.range);\n const changes = cachingDiff(valueToBeReplaced, inlineCompletion.insertText);\n if (!changes) {\n // No ghost text in case the diff would be too slow to compute\n return undefined;\n }\n const lineNumber = inlineCompletion.range.startLineNumber;\n const parts = new Array();\n if (mode === 'prefix') {\n const filteredChanges = changes.filter(c => c.originalLength === 0);\n if (filteredChanges.length > 1 || filteredChanges.length === 1 && filteredChanges[0].originalStart !== valueToBeReplaced.length) {\n // Prefixes only have a single change.\n return undefined;\n }\n }\n const previewStartInCompletionText = inlineCompletion.insertText.length - previewSuffixLength;\n for (const c of changes) {\n const insertColumn = inlineCompletion.range.startColumn + c.originalStart + c.originalLength;\n if (mode === 'subwordSmart' && cursorPosition && cursorPosition.lineNumber === inlineCompletion.range.startLineNumber && insertColumn < cursorPosition.column) {\n // No ghost text before cursor\n return undefined;\n }\n if (c.originalLength > 0) {\n return undefined;\n }\n if (c.modifiedLength === 0) {\n continue;\n }\n const modifiedEnd = c.modifiedStart + c.modifiedLength;\n const nonPreviewTextEnd = Math.max(c.modifiedStart, Math.min(modifiedEnd, previewStartInCompletionText));\n const nonPreviewText = inlineCompletion.insertText.substring(c.modifiedStart, nonPreviewTextEnd);\n const italicText = inlineCompletion.insertText.substring(nonPreviewTextEnd, Math.max(c.modifiedStart, modifiedEnd));\n if (nonPreviewText.length > 0) {\n const lines = strings.splitLines(nonPreviewText);\n parts.push(new GhostTextPart(insertColumn, lines, false));\n }\n if (italicText.length > 0) {\n const lines = strings.splitLines(italicText);\n parts.push(new GhostTextPart(insertColumn, lines, true));\n }\n }\n return new GhostText(lineNumber, parts, 0);\n}\nlet lastRequest = undefined;\nfunction cachingDiff(originalValue, newValue) {\n if ((lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.originalValue) === originalValue && (lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.newValue) === newValue) {\n return lastRequest === null || lastRequest === void 0 ? void 0 : lastRequest.changes;\n }\n else {\n let changes = smartDiff(originalValue, newValue, true);\n if (changes) {\n const deletedChars = deletedCharacters(changes);\n if (deletedChars > 0) {\n // For performance reasons, don't compute diff if there is nothing to improve\n const newChanges = smartDiff(originalValue, newValue, false);\n if (newChanges && deletedCharacters(newChanges) < deletedChars) {\n // Disabling smartness seems to be better here\n changes = newChanges;\n }\n }\n }\n lastRequest = {\n originalValue,\n newValue,\n changes\n };\n return changes;\n }\n}\nfunction deletedCharacters(changes) {\n let sum = 0;\n for (const c of changes) {\n sum += Math.max(c.originalLength - c.modifiedLength, 0);\n }\n return sum;\n}\n/**\n * When matching `if ()` with `if (f() = 1) { g(); }`,\n * align it like this: `if ( )`\n * Not like this:\t\t\t `if ( )`\n * Also not like this:\t\t `if ( )`.\n *\n * The parenthesis are preprocessed to ensure that they match correctly.\n */\nfunction smartDiff(originalValue, newValue, smartBracketMatching) {\n if (originalValue.length > 5000 || newValue.length > 5000) {\n // We don't want to work on strings that are too big\n return undefined;\n }\n function getMaxCharCode(val) {\n let maxCharCode = 0;\n for (let i = 0, len = val.length; i < len; i++) {\n const charCode = val.charCodeAt(i);\n if (charCode > maxCharCode) {\n maxCharCode = charCode;\n }\n }\n return maxCharCode;\n }\n const maxCharCode = Math.max(getMaxCharCode(originalValue), getMaxCharCode(newValue));\n function getUniqueCharCode(id) {\n if (id < 0) {\n throw new Error('unexpected');\n }\n return maxCharCode + id + 1;\n }\n function getElements(source) {\n let level = 0;\n let group = 0;\n const characters = new Int32Array(source.length);\n for (let i = 0, len = source.length; i < len; i++) {\n // TODO support more brackets\n if (smartBracketMatching && source[i] === '(') {\n const id = group * 100 + level;\n characters[i] = getUniqueCharCode(2 * id);\n level++;\n }\n else if (smartBracketMatching && source[i] === ')') {\n level = Math.max(level - 1, 0);\n const id = group * 100 + level;\n characters[i] = getUniqueCharCode(2 * id + 1);\n if (level === 0) {\n group++;\n }\n }\n else {\n characters[i] = source.charCodeAt(i);\n }\n }\n return characters;\n }\n const elements1 = getElements(originalValue);\n const elements2 = getElements(newValue);\n return new LcsDiff({ getElements: () => elements1 }, { getElements: () => elements2 }).ComputeDiff(false).changes;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { LanguageAgnosticBracketTokens } from './bracketPairsTree/brackets.js';\nimport { lengthAdd, lengthGetColumnCountIfZeroLineCount, lengthZero } from './bracketPairsTree/length.js';\nimport { parseDocument } from './bracketPairsTree/parser.js';\nimport { DenseKeyProvider } from './bracketPairsTree/smallImmutableSet.js';\nimport { TextBufferTokenizer } from './bracketPairsTree/tokenizer.js';\nexport function fixBracketsInLine(tokens, languageConfigurationService) {\n const denseKeyProvider = new DenseKeyProvider();\n const bracketTokens = new LanguageAgnosticBracketTokens(denseKeyProvider, (languageId) => languageConfigurationService.getLanguageConfiguration(languageId));\n const tokenizer = new TextBufferTokenizer(new StaticTokenizerSource([tokens]), bracketTokens);\n const node = parseDocument(tokenizer, [], undefined, true);\n let str = '';\n const line = tokens.getLineContent();\n function processNode(node, offset) {\n if (node.kind === 2 /* AstNodeKind.Pair */) {\n processNode(node.openingBracket, offset);\n offset = lengthAdd(offset, node.openingBracket.length);\n if (node.child) {\n processNode(node.child, offset);\n offset = lengthAdd(offset, node.child.length);\n }\n if (node.closingBracket) {\n processNode(node.closingBracket, offset);\n offset = lengthAdd(offset, node.closingBracket.length);\n }\n else {\n const singleLangBracketTokens = bracketTokens.getSingleLanguageBracketTokens(node.openingBracket.languageId);\n const closingTokenText = singleLangBracketTokens.findClosingTokenText(node.openingBracket.bracketIds);\n str += closingTokenText;\n }\n }\n else if (node.kind === 3 /* AstNodeKind.UnexpectedClosingBracket */) {\n // remove the bracket\n }\n else if (node.kind === 0 /* AstNodeKind.Text */ || node.kind === 1 /* AstNodeKind.Bracket */) {\n str += line.substring(lengthGetColumnCountIfZeroLineCount(offset), lengthGetColumnCountIfZeroLineCount(lengthAdd(offset, node.length)));\n }\n else if (node.kind === 4 /* AstNodeKind.List */) {\n for (const child of node.children) {\n processNode(child, offset);\n offset = lengthAdd(offset, child.length);\n }\n }\n }\n processNode(node, lengthZero);\n return str;\n}\nclass StaticTokenizerSource {\n constructor(lines) {\n this.lines = lines;\n this.tokenization = {\n getLineTokens: (lineNumber) => {\n return this.lines[lineNumber - 1];\n }\n };\n }\n getLineCount() {\n return this.lines.length;\n }\n getLineLength(lineNumber) {\n return this.lines[lineNumber - 1].getLineContent().length;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { CoreEditingCommands } from '../../../browser/coreCommands.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nimport { InlineCompletionTriggerKind } from '../../../common/languages.js';\nimport { BaseGhostTextWidgetModel, GhostTextReplacement } from './ghostText.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { inlineSuggestCommitId } from './consts.js';\nimport { inlineCompletionToGhostText } from './inlineCompletionToGhostText.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { fixBracketsInLine } from '../../../common/model/bracketPairsTextModelPart/fixBrackets.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { assertNever } from '../../../../base/common/types.js';\nimport { matchesSubString } from '../../../../base/common/filters.js';\nimport { getReadonlyEmptyArray } from './utils.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nlet InlineCompletionsModel = class InlineCompletionsModel extends Disposable {\n constructor(editor, cache, commandService, languageConfigurationService, languageFeaturesService, debounceService, configurationService) {\n super();\n this.editor = editor;\n this.cache = cache;\n this.commandService = commandService;\n this.languageConfigurationService = languageConfigurationService;\n this.languageFeaturesService = languageFeaturesService;\n this.debounceService = debounceService;\n this.onDidChangeEmitter = new Emitter();\n this.onDidChange = this.onDidChangeEmitter.event;\n this.completionSession = this._register(new MutableDisposable());\n this.active = false;\n this.disposed = false;\n this.debounceValue = this.debounceService.for(this.languageFeaturesService.inlineCompletionsProvider, 'InlineCompletionsDebounce', { min: 50, max: 50 });\n this._register(commandService.onDidExecuteCommand((e) => {\n // These commands don't trigger onDidType.\n const commands = new Set([\n CoreEditingCommands.Tab.id,\n CoreEditingCommands.DeleteLeft.id,\n CoreEditingCommands.DeleteRight.id,\n inlineSuggestCommitId,\n 'acceptSelectedSuggestion',\n ]);\n if (commands.has(e.commandId) && editor.hasTextFocus()) {\n this.handleUserInput();\n }\n }));\n this._register(this.editor.onDidType((e) => {\n this.handleUserInput();\n }));\n this._register(this.editor.onDidChangeCursorPosition((e) => {\n if (e.reason === 3 /* CursorChangeReason.Explicit */ ||\n this.session && !this.session.isValid) {\n this.hide();\n }\n }));\n this._register(toDisposable(() => {\n this.disposed = true;\n }));\n this._register(this.editor.onDidBlurEditorWidget(() => {\n // This is a hidden setting very useful for debugging\n if (configurationService.getValue('editor.inlineSuggest.hideOnBlur')) {\n return;\n }\n this.hide();\n }));\n }\n handleUserInput() {\n if (this.session && !this.session.isValid) {\n this.hide();\n }\n setTimeout(() => {\n if (this.disposed) {\n return;\n }\n // Wait for the cursor update that happens in the same iteration loop iteration\n this.startSessionIfTriggered();\n }, 0);\n }\n get session() {\n return this.completionSession.value;\n }\n get ghostText() {\n var _a;\n return (_a = this.session) === null || _a === void 0 ? void 0 : _a.ghostText;\n }\n get minReservedLineCount() {\n return this.session ? this.session.minReservedLineCount : 0;\n }\n setExpanded(expanded) {\n var _a;\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.setExpanded(expanded);\n }\n setActive(active) {\n var _a;\n this.active = active;\n if (active) {\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.scheduleAutomaticUpdate();\n }\n }\n startSessionIfTriggered() {\n const suggestOptions = this.editor.getOption(57 /* EditorOption.inlineSuggest */);\n if (!suggestOptions.enabled) {\n return;\n }\n if (this.session && this.session.isValid) {\n return;\n }\n this.trigger(InlineCompletionTriggerKind.Automatic);\n }\n trigger(triggerKind) {\n if (this.completionSession.value) {\n if (triggerKind === InlineCompletionTriggerKind.Explicit) {\n void this.completionSession.value.ensureUpdateWithExplicitContext();\n }\n return;\n }\n this.completionSession.value = new InlineCompletionsSession(this.editor, this.editor.getPosition(), () => this.active, this.commandService, this.cache, triggerKind, this.languageConfigurationService, this.languageFeaturesService.inlineCompletionsProvider, this.debounceValue);\n this.completionSession.value.takeOwnership(this.completionSession.value.onDidChange(() => {\n this.onDidChangeEmitter.fire();\n }));\n }\n hide() {\n this.completionSession.clear();\n this.onDidChangeEmitter.fire();\n }\n commitCurrentSuggestion() {\n var _a;\n // Don't dispose the session, so that after committing, more suggestions are shown.\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.commitCurrentCompletion();\n }\n showNext() {\n var _a;\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.showNextInlineCompletion();\n }\n showPrevious() {\n var _a;\n (_a = this.session) === null || _a === void 0 ? void 0 : _a.showPreviousInlineCompletion();\n }\n hasMultipleInlineCompletions() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield ((_a = this.session) === null || _a === void 0 ? void 0 : _a.hasMultipleInlineCompletions());\n return result !== undefined ? result : false;\n });\n }\n};\nInlineCompletionsModel = __decorate([\n __param(2, ICommandService),\n __param(3, ILanguageConfigurationService),\n __param(4, ILanguageFeaturesService),\n __param(5, ILanguageFeatureDebounceService),\n __param(6, IConfigurationService)\n], InlineCompletionsModel);\nexport { InlineCompletionsModel };\nexport class InlineCompletionsSession extends BaseGhostTextWidgetModel {\n constructor(editor, triggerPosition, shouldUpdate, commandService, cache, initialTriggerKind, languageConfigurationService, registry, debounce) {\n super(editor);\n this.triggerPosition = triggerPosition;\n this.shouldUpdate = shouldUpdate;\n this.commandService = commandService;\n this.cache = cache;\n this.initialTriggerKind = initialTriggerKind;\n this.languageConfigurationService = languageConfigurationService;\n this.registry = registry;\n this.debounce = debounce;\n this.minReservedLineCount = 0;\n this.updateOperation = this._register(new MutableDisposable());\n this.updateSoon = this._register(new RunOnceScheduler(() => {\n const triggerKind = this.initialTriggerKind;\n // All subsequent triggers are automatic.\n this.initialTriggerKind = InlineCompletionTriggerKind.Automatic;\n return this.update(triggerKind);\n }, 50));\n this.filteredCompletions = [];\n //#region Selection\n // We use a semantic id to track the selection even if the cache changes.\n this.currentlySelectedCompletionId = undefined;\n let lastCompletionItem = undefined;\n this._register(this.onDidChange(() => {\n var _a;\n const currentCompletion = this.currentCompletion;\n if (currentCompletion && currentCompletion.sourceInlineCompletion !== lastCompletionItem) {\n lastCompletionItem = currentCompletion.sourceInlineCompletion;\n const provider = currentCompletion.sourceProvider;\n (_a = provider.handleItemDidShow) === null || _a === void 0 ? void 0 : _a.call(provider, currentCompletion.sourceInlineCompletions, lastCompletionItem);\n }\n }));\n this._register(toDisposable(() => {\n this.cache.clear();\n }));\n this._register(this.editor.onDidChangeCursorPosition((e) => {\n var _a;\n if (e.reason === 3 /* CursorChangeReason.Explicit */) {\n return;\n }\n // Ghost text depends on the cursor position\n (_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.updateRanges();\n if (this.cache.value) {\n this.updateFilteredInlineCompletions();\n this.onDidChangeEmitter.fire();\n }\n }));\n this._register(this.editor.onDidChangeModelContent((e) => {\n var _a;\n // Call this in case `onDidChangeModelContent` calls us first.\n (_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.updateRanges();\n this.updateFilteredInlineCompletions();\n this.scheduleAutomaticUpdate();\n }));\n this._register(this.registry.onDidChange(() => {\n this.updateSoon.schedule(this.debounce.get(this.editor.getModel()));\n }));\n this.scheduleAutomaticUpdate();\n }\n updateFilteredInlineCompletions() {\n if (!this.cache.value) {\n this.filteredCompletions = [];\n return;\n }\n const model = this.editor.getModel();\n const cursorPosition = model.validatePosition(this.editor.getPosition());\n this.filteredCompletions = this.cache.value.completions.filter(c => {\n const originalValue = model.getValueInRange(c.synchronizedRange).toLowerCase();\n const filterText = c.inlineCompletion.filterText.toLowerCase();\n const indent = model.getLineIndentColumn(c.synchronizedRange.startLineNumber);\n const cursorPosIndex = Math.max(0, cursorPosition.column - c.synchronizedRange.startColumn);\n let filterTextBefore = filterText.substring(0, cursorPosIndex);\n let filterTextAfter = filterText.substring(cursorPosIndex);\n let originalValueBefore = originalValue.substring(0, cursorPosIndex);\n let originalValueAfter = originalValue.substring(cursorPosIndex);\n if (c.synchronizedRange.startColumn <= indent) {\n // Remove indentation\n originalValueBefore = originalValueBefore.trimStart();\n if (originalValueBefore.length === 0) {\n originalValueAfter = originalValueAfter.trimStart();\n }\n filterTextBefore = filterTextBefore.trimStart();\n if (filterTextBefore.length === 0) {\n filterTextAfter = filterTextAfter.trimStart();\n }\n }\n return filterTextBefore.startsWith(originalValueBefore)\n && matchesSubString(originalValueAfter, filterTextAfter);\n });\n }\n fixAndGetIndexOfCurrentSelection() {\n if (!this.currentlySelectedCompletionId || !this.cache.value) {\n return 0;\n }\n if (this.cache.value.completions.length === 0) {\n // don't reset the selection in this case\n return 0;\n }\n const idx = this.filteredCompletions.findIndex(v => v.semanticId === this.currentlySelectedCompletionId);\n if (idx === -1) {\n // Reset the selection so that the selection does not jump back when it appears again\n this.currentlySelectedCompletionId = undefined;\n return 0;\n }\n return idx;\n }\n get currentCachedCompletion() {\n if (!this.cache.value) {\n return undefined;\n }\n return this.filteredCompletions[this.fixAndGetIndexOfCurrentSelection()];\n }\n showNextInlineCompletion() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.ensureUpdateWithExplicitContext();\n const completions = this.filteredCompletions || [];\n if (completions.length > 0) {\n const newIdx = (this.fixAndGetIndexOfCurrentSelection() + 1) % completions.length;\n this.currentlySelectedCompletionId = completions[newIdx].semanticId;\n }\n else {\n this.currentlySelectedCompletionId = undefined;\n }\n this.onDidChangeEmitter.fire();\n });\n }\n showPreviousInlineCompletion() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.ensureUpdateWithExplicitContext();\n const completions = this.filteredCompletions || [];\n if (completions.length > 0) {\n const newIdx = (this.fixAndGetIndexOfCurrentSelection() + completions.length - 1) % completions.length;\n this.currentlySelectedCompletionId = completions[newIdx].semanticId;\n }\n else {\n this.currentlySelectedCompletionId = undefined;\n }\n this.onDidChangeEmitter.fire();\n });\n }\n ensureUpdateWithExplicitContext() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (this.updateOperation.value) {\n // Restart or wait for current update operation\n if (this.updateOperation.value.triggerKind === InlineCompletionTriggerKind.Explicit) {\n yield this.updateOperation.value.promise;\n }\n else {\n yield this.update(InlineCompletionTriggerKind.Explicit);\n }\n }\n else if (((_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.triggerKind) !== InlineCompletionTriggerKind.Explicit) {\n // Refresh cache\n yield this.update(InlineCompletionTriggerKind.Explicit);\n }\n });\n }\n hasMultipleInlineCompletions() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n yield this.ensureUpdateWithExplicitContext();\n return (((_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.completions.length) || 0) > 1;\n });\n }\n //#endregion\n get ghostText() {\n const currentCompletion = this.currentCompletion;\n if (!currentCompletion) {\n return undefined;\n }\n const cursorPosition = this.editor.getPosition();\n if (currentCompletion.range.getEndPosition().isBefore(cursorPosition)) {\n return undefined;\n }\n const mode = this.editor.getOptions().get(57 /* EditorOption.inlineSuggest */).mode;\n const ghostText = inlineCompletionToGhostText(currentCompletion, this.editor.getModel(), mode, cursorPosition);\n if (ghostText) {\n if (ghostText.isEmpty()) {\n return undefined;\n }\n return ghostText;\n }\n return new GhostTextReplacement(currentCompletion.range.startLineNumber, currentCompletion.range.startColumn, currentCompletion.range.endColumn - currentCompletion.range.startColumn, currentCompletion.insertText.split('\\n'), 0);\n }\n get currentCompletion() {\n const completion = this.currentCachedCompletion;\n if (!completion) {\n return undefined;\n }\n return completion.toLiveInlineCompletion();\n }\n get isValid() {\n return this.editor.getPosition().lineNumber === this.triggerPosition.lineNumber;\n }\n scheduleAutomaticUpdate() {\n // Since updateSoon debounces, starvation can happen.\n // To prevent stale cache, we clear the current update operation.\n this.updateOperation.clear();\n this.updateSoon.schedule(this.debounce.get(this.editor.getModel()));\n }\n update(triggerKind) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.shouldUpdate()) {\n return;\n }\n const position = this.editor.getPosition();\n const startTime = new Date();\n const promise = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\n let result;\n try {\n result = yield provideInlineCompletions(this.registry, position, this.editor.getModel(), { triggerKind, selectedSuggestionInfo: undefined }, token, this.languageConfigurationService);\n const endTime = new Date();\n this.debounce.update(this.editor.getModel(), endTime.getTime() - startTime.getTime());\n }\n catch (e) {\n onUnexpectedError(e);\n return;\n }\n if (token.isCancellationRequested) {\n return;\n }\n this.cache.setValue(this.editor, result, triggerKind);\n this.updateFilteredInlineCompletions();\n this.onDidChangeEmitter.fire();\n }));\n const operation = new UpdateOperation(promise, triggerKind);\n this.updateOperation.value = operation;\n yield promise;\n if (this.updateOperation.value === operation) {\n this.updateOperation.clear();\n }\n });\n }\n takeOwnership(disposable) {\n this._register(disposable);\n }\n commitCurrentCompletion() {\n const ghostText = this.ghostText;\n if (!ghostText) {\n // No ghost text was shown for this completion.\n // Thus, we don't want to commit anything.\n return;\n }\n const completion = this.currentCompletion;\n if (completion) {\n this.commit(completion);\n }\n }\n commit(completion) {\n var _a;\n // Mark the cache as stale, but don't dispose it yet,\n // otherwise command args might get disposed.\n const cache = this.cache.clearAndLeak();\n if (completion.snippetInfo) {\n this.editor.executeEdits('inlineSuggestion.accept', [\n EditOperation.replaceMove(completion.range, ''),\n ...completion.additionalTextEdits\n ]);\n this.editor.setPosition(completion.snippetInfo.range.getStartPosition());\n (_a = SnippetController2.get(this.editor)) === null || _a === void 0 ? void 0 : _a.insert(completion.snippetInfo.snippet);\n }\n else {\n this.editor.executeEdits('inlineSuggestion.accept', [\n EditOperation.replaceMove(completion.range, completion.insertText),\n ...completion.additionalTextEdits\n ]);\n }\n if (completion.command) {\n this.commandService\n .executeCommand(completion.command.id, ...(completion.command.arguments || []))\n .finally(() => {\n cache === null || cache === void 0 ? void 0 : cache.dispose();\n })\n .then(undefined, onUnexpectedExternalError);\n }\n else {\n cache === null || cache === void 0 ? void 0 : cache.dispose();\n }\n this.onDidChangeEmitter.fire();\n }\n get commands() {\n var _a;\n const lists = new Set(((_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.completions.map(c => c.inlineCompletion.sourceInlineCompletions)) || []);\n return [...lists].flatMap(l => l.commands || []);\n }\n}\nexport class UpdateOperation {\n constructor(promise, triggerKind) {\n this.promise = promise;\n this.triggerKind = triggerKind;\n }\n dispose() {\n this.promise.cancel();\n }\n}\n/**\n * The cache keeps itself in sync with the editor.\n * It also owns the completions result and disposes it when the cache is diposed.\n*/\nexport class SynchronizedInlineCompletionsCache extends Disposable {\n constructor(completionsSource, editor, onChange, triggerKind) {\n super();\n this.editor = editor;\n this.onChange = onChange;\n this.triggerKind = triggerKind;\n this.isDisposing = false;\n const decorationIds = editor.changeDecorations((changeAccessor) => {\n return changeAccessor.deltaDecorations([], completionsSource.items.map(i => ({\n range: i.range,\n options: {\n description: 'inline-completion-tracking-range'\n },\n })));\n });\n this._register(toDisposable(() => {\n this.isDisposing = true;\n editor.removeDecorations(decorationIds);\n }));\n this.completions = completionsSource.items.map((c, idx) => new CachedInlineCompletion(c, decorationIds[idx]));\n this._register(editor.onDidChangeModelContent(() => {\n this.updateRanges();\n }));\n this._register(completionsSource);\n }\n updateRanges() {\n if (this.isDisposing) {\n return;\n }\n let hasChanged = false;\n const model = this.editor.getModel();\n for (const c of this.completions) {\n const newRange = model.getDecorationRange(c.decorationId);\n if (!newRange) {\n onUnexpectedError(new Error('Decoration has no range'));\n continue;\n }\n if (!c.synchronizedRange.equalsRange(newRange)) {\n hasChanged = true;\n c.synchronizedRange = newRange;\n }\n }\n if (hasChanged) {\n this.onChange();\n }\n }\n}\nclass CachedInlineCompletion {\n constructor(inlineCompletion, decorationId) {\n this.inlineCompletion = inlineCompletion;\n this.decorationId = decorationId;\n this.semanticId = JSON.stringify({\n text: this.inlineCompletion.insertText,\n abbreviation: this.inlineCompletion.filterText,\n startLine: this.inlineCompletion.range.startLineNumber,\n startColumn: this.inlineCompletion.range.startColumn,\n command: this.inlineCompletion.command\n });\n this.synchronizedRange = inlineCompletion.range;\n }\n toLiveInlineCompletion() {\n return {\n insertText: this.inlineCompletion.insertText,\n range: this.synchronizedRange,\n command: this.inlineCompletion.command,\n sourceProvider: this.inlineCompletion.sourceProvider,\n sourceInlineCompletions: this.inlineCompletion.sourceInlineCompletions,\n sourceInlineCompletion: this.inlineCompletion.sourceInlineCompletion,\n snippetInfo: this.inlineCompletion.snippetInfo,\n filterText: this.inlineCompletion.filterText,\n additionalTextEdits: this.inlineCompletion.additionalTextEdits,\n };\n }\n}\nexport function provideInlineCompletions(registry, position, model, context, token = CancellationToken.None, languageConfigurationService) {\n return __awaiter(this, void 0, void 0, function* () {\n const defaultReplaceRange = getDefaultRange(position, model);\n const providers = registry.all(model);\n const results = yield Promise.all(providers.map((provider) => __awaiter(this, void 0, void 0, function* () {\n const completions = yield Promise.resolve(provider.provideInlineCompletions(model, position, context, token)).catch(onUnexpectedExternalError);\n return ({\n completions,\n provider,\n dispose: () => {\n if (completions) {\n provider.freeInlineCompletions(completions);\n }\n }\n });\n })));\n const itemsByHash = new Map();\n for (const result of results) {\n const completions = result.completions;\n if (!completions) {\n continue;\n }\n for (const item of completions.items) {\n let range = item.range ? Range.lift(item.range) : defaultReplaceRange;\n if (range.startLineNumber !== range.endLineNumber) {\n // Ignore invalid ranges.\n continue;\n }\n let insertText;\n let snippetInfo;\n if (typeof item.insertText === 'string') {\n insertText = item.insertText;\n if (languageConfigurationService && item.completeBracketPairs) {\n insertText = closeBrackets(insertText, range.getStartPosition(), model, languageConfigurationService);\n // Modify range depending on if brackets are added or removed\n const diff = insertText.length - item.insertText.length;\n if (diff !== 0) {\n range = new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn + diff);\n }\n }\n snippetInfo = undefined;\n }\n else if ('snippet' in item.insertText) {\n const snippet = new SnippetParser().parse(item.insertText.snippet);\n insertText = snippet.toString();\n snippetInfo = {\n snippet: item.insertText.snippet,\n range: range\n };\n }\n else {\n assertNever(item.insertText);\n }\n const trackedItem = ({\n insertText,\n snippetInfo,\n range,\n command: item.command,\n sourceProvider: result.provider,\n sourceInlineCompletions: completions,\n sourceInlineCompletion: item,\n filterText: item.filterText || insertText,\n additionalTextEdits: item.additionalTextEdits || getReadonlyEmptyArray()\n });\n itemsByHash.set(JSON.stringify({ insertText, range: item.range }), trackedItem);\n }\n }\n return {\n items: [...itemsByHash.values()],\n dispose: () => {\n for (const result of results) {\n result.dispose();\n }\n },\n };\n });\n}\nfunction getDefaultRange(position, model) {\n const word = model.getWordAtPosition(position);\n const maxColumn = model.getLineMaxColumn(position.lineNumber);\n // By default, always replace up until the end of the current line.\n // This default might be subject to change!\n return word\n ? new Range(position.lineNumber, word.startColumn, position.lineNumber, maxColumn)\n : Range.fromPositions(position, position.with(undefined, maxColumn));\n}\nfunction closeBrackets(text, position, model, languageConfigurationService) {\n const lineStart = model.getLineContent(position.lineNumber).substring(0, position.column - 1);\n const newLine = lineStart + text;\n const newTokens = model.tokenization.tokenizeLineWithEdit(position, newLine.length - (position.column - 1), text);\n const slicedTokens = newTokens === null || newTokens === void 0 ? void 0 : newTokens.sliceAndInflate(position.column - 1, newLine.length, 0);\n if (!slicedTokens) {\n return text;\n }\n const newText = fixBracketsInLine(slicedTokens, languageConfigurationService);\n return newText;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { compareBy, findMaxBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { SnippetSession } from '../../snippet/browser/snippetSession.js';\nimport { SuggestController } from '../../suggest/browser/suggestController.js';\nimport { minimizeInlineCompletion, normalizedInlineCompletionsEquals } from './inlineCompletionToGhostText.js';\nexport class SuggestWidgetInlineCompletionProvider extends Disposable {\n constructor(editor, suggestControllerPreselector) {\n super();\n this.editor = editor;\n this.suggestControllerPreselector = suggestControllerPreselector;\n this.isSuggestWidgetVisible = false;\n this.isShiftKeyPressed = false;\n this._isActive = false;\n this._currentSuggestItemInfo = undefined;\n this.onDidChangeEmitter = new Emitter();\n this.onDidChange = this.onDidChangeEmitter.event;\n // This delay fixes a suggest widget issue when typing \".\" immediately restarts the suggestion session.\n this.setInactiveDelayed = this._register(new RunOnceScheduler(() => {\n if (!this.isSuggestWidgetVisible) {\n if (this._isActive) {\n this._isActive = false;\n this.onDidChangeEmitter.fire();\n }\n }\n }, 100));\n // See the command acceptAlternativeSelectedSuggestion that is bound to shift+tab\n this._register(editor.onKeyDown(e => {\n if (e.shiftKey && !this.isShiftKeyPressed) {\n this.isShiftKeyPressed = true;\n this.update(this._isActive);\n }\n }));\n this._register(editor.onKeyUp(e => {\n if (e.shiftKey && this.isShiftKeyPressed) {\n this.isShiftKeyPressed = false;\n this.update(this._isActive);\n }\n }));\n const suggestController = SuggestController.get(this.editor);\n if (suggestController) {\n this._register(suggestController.registerSelector({\n priority: 100,\n select: (model, pos, suggestItems) => {\n const textModel = this.editor.getModel();\n const normalizedItemToPreselect = minimizeInlineCompletion(textModel, this.suggestControllerPreselector());\n if (!normalizedItemToPreselect) {\n return -1;\n }\n const position = Position.lift(pos);\n const candidates = suggestItems\n .map((suggestItem, index) => {\n const inlineSuggestItem = suggestionToSuggestItemInfo(suggestController, position, suggestItem, this.isShiftKeyPressed);\n const normalizedSuggestItem = minimizeInlineCompletion(textModel, inlineSuggestItem === null || inlineSuggestItem === void 0 ? void 0 : inlineSuggestItem.normalizedInlineCompletion);\n if (!normalizedSuggestItem) {\n return undefined;\n }\n const valid = rangeStartsWith(normalizedItemToPreselect.range, normalizedSuggestItem.range) &&\n normalizedItemToPreselect.insertText.startsWith(normalizedSuggestItem.insertText);\n return { index, valid, prefixLength: normalizedSuggestItem.insertText.length, suggestItem };\n })\n .filter(item => item && item.valid);\n const result = findMaxBy(candidates, compareBy(s => s.prefixLength, numberComparator));\n return result ? result.index : -1;\n }\n }));\n let isBoundToSuggestWidget = false;\n const bindToSuggestWidget = () => {\n if (isBoundToSuggestWidget) {\n return;\n }\n isBoundToSuggestWidget = true;\n this._register(suggestController.widget.value.onDidShow(() => {\n this.isSuggestWidgetVisible = true;\n this.update(true);\n }));\n this._register(suggestController.widget.value.onDidHide(() => {\n this.isSuggestWidgetVisible = false;\n this.setInactiveDelayed.schedule();\n this.update(this._isActive);\n }));\n this._register(suggestController.widget.value.onDidFocus(() => {\n this.isSuggestWidgetVisible = true;\n this.update(true);\n }));\n };\n this._register(Event.once(suggestController.model.onDidTrigger)(e => {\n bindToSuggestWidget();\n }));\n }\n this.update(this._isActive);\n }\n /**\n * Returns undefined if the suggest widget is not active.\n */\n get state() {\n if (!this._isActive) {\n return undefined;\n }\n return { selectedItem: this._currentSuggestItemInfo };\n }\n update(newActive) {\n const newInlineCompletion = this.getSuggestItemInfo();\n let shouldFire = false;\n if (!suggestItemInfoEquals(this._currentSuggestItemInfo, newInlineCompletion)) {\n this._currentSuggestItemInfo = newInlineCompletion;\n shouldFire = true;\n }\n if (this._isActive !== newActive) {\n this._isActive = newActive;\n shouldFire = true;\n }\n if (shouldFire) {\n this.onDidChangeEmitter.fire();\n }\n }\n getSuggestItemInfo() {\n const suggestController = SuggestController.get(this.editor);\n if (!suggestController) {\n return undefined;\n }\n if (!this.isSuggestWidgetVisible) {\n return undefined;\n }\n const focusedItem = suggestController.widget.value.getFocusedItem();\n if (!focusedItem) {\n return undefined;\n }\n // TODO: item.isResolved\n return suggestionToSuggestItemInfo(suggestController, this.editor.getPosition(), focusedItem.item, this.isShiftKeyPressed);\n }\n stopForceRenderingAbove() {\n const suggestController = SuggestController.get(this.editor);\n if (suggestController) {\n suggestController.stopForceRenderingAbove();\n }\n }\n forceRenderingAbove() {\n const suggestController = SuggestController.get(this.editor);\n if (suggestController) {\n suggestController.forceRenderingAbove();\n }\n }\n}\nexport function rangeStartsWith(rangeToTest, prefix) {\n return (prefix.startLineNumber === rangeToTest.startLineNumber &&\n prefix.startColumn === rangeToTest.startColumn &&\n (prefix.endLineNumber < rangeToTest.endLineNumber ||\n (prefix.endLineNumber === rangeToTest.endLineNumber &&\n prefix.endColumn <= rangeToTest.endColumn)));\n}\nfunction suggestItemInfoEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return a.completionItemKind === b.completionItemKind &&\n a.isSnippetText === b.isSnippetText &&\n normalizedInlineCompletionsEquals(a.normalizedInlineCompletion, b.normalizedInlineCompletion);\n}\nfunction suggestionToSuggestItemInfo(suggestController, position, item, toggleMode) {\n // additionalTextEdits might not be resolved here, this could be problematic.\n if (Array.isArray(item.completion.additionalTextEdits) && item.completion.additionalTextEdits.length > 0) {\n // cannot represent additional text edits. TODO: Now we can.\n return {\n completionItemKind: item.completion.kind,\n isSnippetText: false,\n normalizedInlineCompletion: {\n // Dummy element, so that space is reserved, but no text is shown\n range: Range.fromPositions(position, position),\n insertText: '',\n filterText: '',\n snippetInfo: undefined,\n additionalTextEdits: [],\n },\n };\n }\n let { insertText } = item.completion;\n let isSnippetText = false;\n if (item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */) {\n const snippet = new SnippetParser().parse(insertText);\n const model = suggestController.editor.getModel();\n // Ignore snippets that are too large.\n // Adjust whitespace is expensive for them.\n if (snippet.children.length > 100) {\n return undefined;\n }\n SnippetSession.adjustWhitespace(model, position, snippet, true, true);\n insertText = snippet.toString();\n isSnippetText = true;\n }\n const info = suggestController.getOverwriteInfo(item, toggleMode);\n return {\n isSnippetText,\n completionItemKind: item.completion.kind,\n normalizedInlineCompletion: {\n insertText: insertText,\n filterText: insertText,\n range: Range.fromPositions(position.delta(0, -info.overwriteBefore), position.delta(0, Math.max(info.overwriteAfter, 0))),\n snippetInfo: undefined,\n additionalTextEdits: [],\n }\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { InlineCompletionTriggerKind } from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { BaseGhostTextWidgetModel, GhostText } from './ghostText.js';\nimport { provideInlineCompletions, UpdateOperation } from './inlineCompletionsModel.js';\nimport { inlineCompletionToGhostText, minimizeInlineCompletion } from './inlineCompletionToGhostText.js';\nimport { SuggestWidgetInlineCompletionProvider } from './suggestWidgetInlineCompletionProvider.js';\nlet SuggestWidgetPreviewModel = class SuggestWidgetPreviewModel extends BaseGhostTextWidgetModel {\n constructor(editor, cache, languageFeaturesService) {\n super(editor);\n this.cache = cache;\n this.languageFeaturesService = languageFeaturesService;\n this.suggestionInlineCompletionSource = this._register(new SuggestWidgetInlineCompletionProvider(this.editor, \n // Use the first cache item (if any) as preselection.\n () => { var _a, _b; return (_b = (_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.completions[0]) === null || _b === void 0 ? void 0 : _b.toLiveInlineCompletion(); }));\n this.updateOperation = this._register(new MutableDisposable());\n this.updateCacheSoon = this._register(new RunOnceScheduler(() => this.updateCache(), 50));\n this.minReservedLineCount = 0;\n this._register(this.suggestionInlineCompletionSource.onDidChange(() => {\n if (!this.editor.hasModel()) {\n // onDidChange might be called when calling setModel on the editor, before we are disposed.\n return;\n }\n this.updateCacheSoon.schedule();\n const suggestWidgetState = this.suggestionInlineCompletionSource.state;\n if (!suggestWidgetState) {\n this.minReservedLineCount = 0;\n }\n const newGhostText = this.ghostText;\n if (newGhostText) {\n this.minReservedLineCount = Math.max(this.minReservedLineCount, sum(newGhostText.parts.map(p => p.lines.length - 1)));\n }\n if (this.minReservedLineCount >= 1) {\n this.suggestionInlineCompletionSource.forceRenderingAbove();\n }\n else {\n this.suggestionInlineCompletionSource.stopForceRenderingAbove();\n }\n this.onDidChangeEmitter.fire();\n }));\n this._register(this.cache.onDidChange(() => {\n this.onDidChangeEmitter.fire();\n }));\n this._register(this.editor.onDidChangeCursorPosition((e) => {\n this.minReservedLineCount = 0;\n this.updateCacheSoon.schedule();\n this.onDidChangeEmitter.fire();\n }));\n this._register(toDisposable(() => this.suggestionInlineCompletionSource.stopForceRenderingAbove()));\n }\n get isActive() {\n return this.suggestionInlineCompletionSource.state !== undefined;\n }\n isSuggestionPreviewEnabled() {\n const suggestOptions = this.editor.getOption(108 /* EditorOption.suggest */);\n return suggestOptions.preview;\n }\n updateCache() {\n return __awaiter(this, void 0, void 0, function* () {\n const state = this.suggestionInlineCompletionSource.state;\n if (!state || !state.selectedItem) {\n return;\n }\n const info = {\n text: state.selectedItem.normalizedInlineCompletion.insertText,\n range: state.selectedItem.normalizedInlineCompletion.range,\n isSnippetText: state.selectedItem.isSnippetText,\n completionKind: state.selectedItem.completionItemKind,\n };\n const position = this.editor.getPosition();\n if (state.selectedItem.isSnippetText ||\n state.selectedItem.completionItemKind === 27 /* CompletionItemKind.Snippet */ ||\n state.selectedItem.completionItemKind === 20 /* CompletionItemKind.File */ ||\n state.selectedItem.completionItemKind === 23 /* CompletionItemKind.Folder */) {\n // Don't ask providers for these types of suggestions.\n this.cache.clear();\n return;\n }\n const promise = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\n let result;\n try {\n result = yield provideInlineCompletions(this.languageFeaturesService.inlineCompletionsProvider, position, this.editor.getModel(), { triggerKind: InlineCompletionTriggerKind.Automatic, selectedSuggestionInfo: info }, token);\n }\n catch (e) {\n onUnexpectedError(e);\n return;\n }\n if (token.isCancellationRequested) {\n result.dispose();\n return;\n }\n this.cache.setValue(this.editor, result, InlineCompletionTriggerKind.Automatic);\n this.onDidChangeEmitter.fire();\n }));\n const operation = new UpdateOperation(promise, InlineCompletionTriggerKind.Automatic);\n this.updateOperation.value = operation;\n yield promise;\n if (this.updateOperation.value === operation) {\n this.updateOperation.clear();\n }\n });\n }\n get ghostText() {\n var _a, _b, _c;\n const isSuggestionPreviewEnabled = this.isSuggestionPreviewEnabled();\n const model = this.editor.getModel();\n const augmentedCompletion = minimizeInlineCompletion(model, (_b = (_a = this.cache.value) === null || _a === void 0 ? void 0 : _a.completions[0]) === null || _b === void 0 ? void 0 : _b.toLiveInlineCompletion());\n const suggestWidgetState = this.suggestionInlineCompletionSource.state;\n const suggestInlineCompletion = minimizeInlineCompletion(model, (_c = suggestWidgetState === null || suggestWidgetState === void 0 ? void 0 : suggestWidgetState.selectedItem) === null || _c === void 0 ? void 0 : _c.normalizedInlineCompletion);\n const isAugmentedCompletionValid = augmentedCompletion\n && suggestInlineCompletion\n && augmentedCompletion.insertText.startsWith(suggestInlineCompletion.insertText)\n && augmentedCompletion.range.equalsRange(suggestInlineCompletion.range);\n if (!isSuggestionPreviewEnabled && !isAugmentedCompletionValid) {\n return undefined;\n }\n // If the augmented completion is not valid and there is no suggest inline completion, we still show the augmented completion.\n const finalCompletion = isAugmentedCompletionValid ? augmentedCompletion : (suggestInlineCompletion || augmentedCompletion);\n const inlineCompletionPreviewLength = isAugmentedCompletionValid ? finalCompletion.insertText.length - suggestInlineCompletion.insertText.length : 0;\n const newGhostText = this.toGhostText(finalCompletion, inlineCompletionPreviewLength);\n return newGhostText;\n }\n toGhostText(completion, inlineCompletionPreviewLength) {\n const mode = this.editor.getOptions().get(108 /* EditorOption.suggest */).previewMode;\n return completion\n ? (inlineCompletionToGhostText(completion, this.editor.getModel(), mode, this.editor.getPosition(), inlineCompletionPreviewLength) ||\n // Show an invisible ghost text to reserve space\n new GhostText(completion.range.endLineNumber, [], this.minReservedLineCount))\n : undefined;\n }\n};\nSuggestWidgetPreviewModel = __decorate([\n __param(2, ILanguageFeaturesService)\n], SuggestWidgetPreviewModel);\nexport { SuggestWidgetPreviewModel };\nfunction sum(arr) {\n return arr.reduce((a, b) => a + b, 0);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { Position } from '../../../common/core/position.js';\nimport { InlineCompletionTriggerKind } from '../../../common/languages.js';\nimport { InlineCompletionsModel, SynchronizedInlineCompletionsCache } from './inlineCompletionsModel.js';\nimport { SuggestWidgetPreviewModel } from './suggestWidgetPreviewModel.js';\nimport { createDisposableRef } from './utils.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nexport class DelegatingModel extends Disposable {\n constructor() {\n super(...arguments);\n this.onDidChangeEmitter = new Emitter();\n this.onDidChange = this.onDidChangeEmitter.event;\n this.hasCachedGhostText = false;\n this.currentModelRef = this._register(new MutableDisposable());\n }\n get targetModel() {\n var _a;\n return (_a = this.currentModelRef.value) === null || _a === void 0 ? void 0 : _a.object;\n }\n setTargetModel(model) {\n var _a;\n if (((_a = this.currentModelRef.value) === null || _a === void 0 ? void 0 : _a.object) === model) {\n return;\n }\n this.currentModelRef.clear();\n this.currentModelRef.value = model ? createDisposableRef(model, model.onDidChange(() => {\n this.hasCachedGhostText = false;\n this.onDidChangeEmitter.fire();\n })) : undefined;\n this.hasCachedGhostText = false;\n this.onDidChangeEmitter.fire();\n }\n get ghostText() {\n var _a, _b;\n if (!this.hasCachedGhostText) {\n this.cachedGhostText = (_b = (_a = this.currentModelRef.value) === null || _a === void 0 ? void 0 : _a.object) === null || _b === void 0 ? void 0 : _b.ghostText;\n this.hasCachedGhostText = true;\n }\n return this.cachedGhostText;\n }\n setExpanded(expanded) {\n var _a;\n (_a = this.targetModel) === null || _a === void 0 ? void 0 : _a.setExpanded(expanded);\n }\n get minReservedLineCount() {\n return this.targetModel ? this.targetModel.minReservedLineCount : 0;\n }\n}\n/**\n * A ghost text model that is both driven by inline completions and the suggest widget.\n*/\nlet GhostTextModel = class GhostTextModel extends DelegatingModel {\n constructor(editor, instantiationService) {\n super();\n this.editor = editor;\n this.instantiationService = instantiationService;\n this.sharedCache = this._register(new SharedInlineCompletionCache());\n this.suggestWidgetAdapterModel = this._register(this.instantiationService.createInstance(SuggestWidgetPreviewModel, this.editor, this.sharedCache));\n this.inlineCompletionsModel = this._register(this.instantiationService.createInstance(InlineCompletionsModel, this.editor, this.sharedCache));\n this._register(this.suggestWidgetAdapterModel.onDidChange(() => {\n this.updateModel();\n }));\n this.updateModel();\n }\n get activeInlineCompletionsModel() {\n if (this.targetModel === this.inlineCompletionsModel) {\n return this.inlineCompletionsModel;\n }\n return undefined;\n }\n updateModel() {\n this.setTargetModel(this.suggestWidgetAdapterModel.isActive\n ? this.suggestWidgetAdapterModel\n : this.inlineCompletionsModel);\n this.inlineCompletionsModel.setActive(this.targetModel === this.inlineCompletionsModel);\n }\n shouldShowHoverAt(hoverRange) {\n var _a;\n const ghostText = (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.ghostText;\n if (ghostText) {\n return ghostText.parts.some(p => hoverRange.containsPosition(new Position(ghostText.lineNumber, p.column)));\n }\n return false;\n }\n triggerInlineCompletion() {\n var _a;\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.trigger(InlineCompletionTriggerKind.Explicit);\n }\n commitInlineCompletion() {\n var _a;\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.commitCurrentSuggestion();\n }\n hideInlineCompletion() {\n var _a;\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.hide();\n }\n showNextInlineCompletion() {\n var _a;\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.showNext();\n }\n showPreviousInlineCompletion() {\n var _a;\n (_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.showPrevious();\n }\n hasMultipleInlineCompletions() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield ((_a = this.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.hasMultipleInlineCompletions());\n return result !== undefined ? result : false;\n });\n }\n};\nGhostTextModel = __decorate([\n __param(1, IInstantiationService)\n], GhostTextModel);\nexport { GhostTextModel };\nexport class SharedInlineCompletionCache extends Disposable {\n constructor() {\n super(...arguments);\n this.onDidChangeEmitter = new Emitter();\n this.onDidChange = this.onDidChangeEmitter.event;\n this.cache = this._register(new MutableDisposable());\n }\n get value() {\n return this.cache.value;\n }\n setValue(editor, completionsSource, triggerKind) {\n this.cache.value = new SynchronizedInlineCompletionsCache(completionsSource, editor, () => this.onDidChangeEmitter.fire(), triggerKind);\n }\n clearAndLeak() {\n return this.cache.clearAndLeak();\n }\n clear() {\n this.cache.clear();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './ghostText.css';\nimport { applyFontInfo } from '../../../browser/config/domFontInfo.js';\nimport { EditorFontLigatures } from '../../../common/config/editorOptions.js';\nimport { LineTokens } from '../../../common/tokens/lineTokens.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { createStringBuilder } from '../../../common/core/stringBuilder.js';\nimport { InjectedTextCursorStops } from '../../../common/model.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { ghostTextBackground, ghostTextBorder, ghostTextForeground } from '../../../common/core/editorColorRegistry.js';\nimport { LineDecoration } from '../../../common/viewLayout/lineDecorations.js';\nimport { RenderLineInput, renderViewLine } from '../../../common/viewLayout/viewLineRenderer.js';\nimport { GhostTextReplacement } from './ghostText.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('editorGhostText', { createHTML: value => value });\nlet GhostTextWidget = class GhostTextWidget extends Disposable {\n constructor(editor, model, instantiationService, languageService) {\n super();\n this.editor = editor;\n this.model = model;\n this.instantiationService = instantiationService;\n this.languageService = languageService;\n this.disposed = false;\n this.partsWidget = this._register(this.instantiationService.createInstance(DecorationsWidget, this.editor));\n this.additionalLinesWidget = this._register(new AdditionalLinesWidget(this.editor, this.languageService.languageIdCodec));\n this.viewMoreContentWidget = undefined;\n this.replacementDecoration = this._register(new DisposableDecorations(this.editor));\n this._register(this.editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(29 /* EditorOption.disableMonospaceOptimizations */)\n || e.hasChanged(107 /* EditorOption.stopRenderingLineAfter */)\n || e.hasChanged(90 /* EditorOption.renderWhitespace */)\n || e.hasChanged(85 /* EditorOption.renderControlCharacters */)\n || e.hasChanged(47 /* EditorOption.fontLigatures */)\n || e.hasChanged(46 /* EditorOption.fontInfo */)\n || e.hasChanged(61 /* EditorOption.lineHeight */)) {\n this.update();\n }\n }));\n this._register(toDisposable(() => {\n var _a;\n this.disposed = true;\n this.update();\n (_a = this.viewMoreContentWidget) === null || _a === void 0 ? void 0 : _a.dispose();\n this.viewMoreContentWidget = undefined;\n }));\n this._register(model.onDidChange(() => {\n this.update();\n }));\n this.update();\n }\n shouldShowHoverAtViewZone(viewZoneId) {\n return (this.additionalLinesWidget.viewZoneId === viewZoneId);\n }\n update() {\n var _a;\n const ghostText = this.model.ghostText;\n if (!this.editor.hasModel() || !ghostText || this.disposed) {\n this.partsWidget.clear();\n this.additionalLinesWidget.clear();\n this.replacementDecoration.clear();\n return;\n }\n const inlineTexts = new Array();\n const additionalLines = new Array();\n function addToAdditionalLines(lines, className) {\n if (additionalLines.length > 0) {\n const lastLine = additionalLines[additionalLines.length - 1];\n if (className) {\n lastLine.decorations.push(new LineDecoration(lastLine.content.length + 1, lastLine.content.length + 1 + lines[0].length, className, 0 /* InlineDecorationType.Regular */));\n }\n lastLine.content += lines[0];\n lines = lines.slice(1);\n }\n for (const line of lines) {\n additionalLines.push({\n content: line,\n decorations: className ? [new LineDecoration(1, line.length + 1, className, 0 /* InlineDecorationType.Regular */)] : []\n });\n }\n }\n if (ghostText instanceof GhostTextReplacement) {\n this.replacementDecoration.setDecorations([\n {\n range: new Range(ghostText.lineNumber, ghostText.columnStart, ghostText.lineNumber, ghostText.columnStart + ghostText.length),\n options: {\n inlineClassName: 'inline-completion-text-to-replace',\n description: 'GhostTextReplacement'\n }\n },\n ]);\n }\n else {\n this.replacementDecoration.setDecorations([]);\n }\n const textBufferLine = this.editor.getModel().getLineContent(ghostText.lineNumber);\n let hiddenTextStartColumn = undefined;\n let lastIdx = 0;\n for (const part of ghostText.parts) {\n let lines = part.lines;\n if (hiddenTextStartColumn === undefined) {\n inlineTexts.push({\n column: part.column,\n text: lines[0],\n preview: part.preview,\n });\n lines = lines.slice(1);\n }\n else {\n addToAdditionalLines([textBufferLine.substring(lastIdx, part.column - 1)], undefined);\n }\n if (lines.length > 0) {\n addToAdditionalLines(lines, 'ghost-text');\n if (hiddenTextStartColumn === undefined && part.column <= textBufferLine.length) {\n hiddenTextStartColumn = part.column;\n }\n }\n lastIdx = part.column - 1;\n }\n if (hiddenTextStartColumn !== undefined) {\n addToAdditionalLines([textBufferLine.substring(lastIdx)], undefined);\n }\n this.partsWidget.setParts(ghostText.lineNumber, inlineTexts, hiddenTextStartColumn !== undefined ? { column: hiddenTextStartColumn, length: textBufferLine.length + 1 - hiddenTextStartColumn } : undefined);\n this.additionalLinesWidget.updateLines(ghostText.lineNumber, additionalLines, ghostText.additionalReservedLineCount);\n if (0 < 0) {\n // Not supported at the moment, condition is always false.\n this.viewMoreContentWidget = this.renderViewMoreLines(new Position(ghostText.lineNumber, this.editor.getModel().getLineMaxColumn(ghostText.lineNumber)), '', 0);\n }\n else {\n (_a = this.viewMoreContentWidget) === null || _a === void 0 ? void 0 : _a.dispose();\n this.viewMoreContentWidget = undefined;\n }\n }\n renderViewMoreLines(position, firstLineText, remainingLinesLength) {\n const fontInfo = this.editor.getOption(46 /* EditorOption.fontInfo */);\n const domNode = document.createElement('div');\n domNode.className = 'suggest-preview-additional-widget';\n applyFontInfo(domNode, fontInfo);\n const spacer = document.createElement('span');\n spacer.className = 'content-spacer';\n spacer.append(firstLineText);\n domNode.append(spacer);\n const newline = document.createElement('span');\n newline.className = 'content-newline suggest-preview-text';\n newline.append('⏎ ');\n domNode.append(newline);\n const disposableStore = new DisposableStore();\n const button = document.createElement('div');\n button.className = 'button suggest-preview-text';\n button.append(`+${remainingLinesLength} lines…`);\n disposableStore.add(dom.addStandardDisposableListener(button, 'mousedown', (e) => {\n var _a;\n (_a = this.model) === null || _a === void 0 ? void 0 : _a.setExpanded(true);\n e.preventDefault();\n this.editor.focus();\n }));\n domNode.append(button);\n return new ViewMoreLinesContentWidget(this.editor, position, domNode, disposableStore);\n }\n};\nGhostTextWidget = __decorate([\n __param(2, IInstantiationService),\n __param(3, ILanguageService)\n], GhostTextWidget);\nexport { GhostTextWidget };\nclass DisposableDecorations {\n constructor(editor) {\n this.editor = editor;\n this.decorationIds = [];\n }\n setDecorations(decorations) {\n // Using change decorations ensures that we update the id's before some event handler is called.\n this.editor.changeDecorations(accessor => {\n this.decorationIds = accessor.deltaDecorations(this.decorationIds, decorations);\n });\n }\n clear() {\n this.setDecorations([]);\n }\n dispose() {\n this.clear();\n }\n}\nclass DecorationsWidget {\n constructor(editor) {\n this.editor = editor;\n this.decorationIds = [];\n }\n dispose() {\n this.clear();\n }\n clear() {\n // Using change decorations ensures that we update the id's before some event handler is called.\n this.editor.changeDecorations(accessor => {\n this.decorationIds = accessor.deltaDecorations(this.decorationIds, []);\n });\n }\n setParts(lineNumber, parts, hiddenText) {\n const textModel = this.editor.getModel();\n if (!textModel) {\n return;\n }\n const hiddenTextDecorations = new Array();\n if (hiddenText) {\n hiddenTextDecorations.push({\n range: Range.fromPositions(new Position(lineNumber, hiddenText.column), new Position(lineNumber, hiddenText.column + hiddenText.length)),\n options: {\n inlineClassName: 'ghost-text-hidden',\n description: 'ghost-text-hidden',\n }\n });\n }\n // Using change decorations ensures that we update the id's before some event handler is called.\n this.editor.changeDecorations(accessor => {\n this.decorationIds = accessor.deltaDecorations(this.decorationIds, parts.map(p => {\n return ({\n range: Range.fromPositions(new Position(lineNumber, p.column)),\n options: {\n description: 'ghost-text',\n after: { content: p.text, inlineClassName: p.preview ? 'ghost-text-decoration-preview' : 'ghost-text-decoration', cursorStops: InjectedTextCursorStops.Left },\n showIfCollapsed: true,\n }\n });\n }).concat(hiddenTextDecorations));\n });\n }\n}\nclass AdditionalLinesWidget {\n constructor(editor, languageIdCodec) {\n this.editor = editor;\n this.languageIdCodec = languageIdCodec;\n this._viewZoneId = undefined;\n }\n get viewZoneId() { return this._viewZoneId; }\n dispose() {\n this.clear();\n }\n clear() {\n this.editor.changeViewZones((changeAccessor) => {\n if (this._viewZoneId) {\n changeAccessor.removeZone(this._viewZoneId);\n this._viewZoneId = undefined;\n }\n });\n }\n updateLines(lineNumber, additionalLines, minReservedLineCount) {\n const textModel = this.editor.getModel();\n if (!textModel) {\n return;\n }\n const { tabSize } = textModel.getOptions();\n this.editor.changeViewZones((changeAccessor) => {\n if (this._viewZoneId) {\n changeAccessor.removeZone(this._viewZoneId);\n this._viewZoneId = undefined;\n }\n const heightInLines = Math.max(additionalLines.length, minReservedLineCount);\n if (heightInLines > 0) {\n const domNode = document.createElement('div');\n renderLines(domNode, tabSize, additionalLines, this.editor.getOptions(), this.languageIdCodec);\n this._viewZoneId = changeAccessor.addZone({\n afterLineNumber: lineNumber,\n heightInLines: heightInLines,\n domNode,\n afterColumnAffinity: 1 /* PositionAffinity.Right */\n });\n }\n });\n }\n}\nfunction renderLines(domNode, tabSize, lines, opts, languageIdCodec) {\n const disableMonospaceOptimizations = opts.get(29 /* EditorOption.disableMonospaceOptimizations */);\n const stopRenderingLineAfter = opts.get(107 /* EditorOption.stopRenderingLineAfter */);\n // To avoid visual confusion, we don't want to render visible whitespace\n const renderWhitespace = 'none';\n const renderControlCharacters = opts.get(85 /* EditorOption.renderControlCharacters */);\n const fontLigatures = opts.get(47 /* EditorOption.fontLigatures */);\n const fontInfo = opts.get(46 /* EditorOption.fontInfo */);\n const lineHeight = opts.get(61 /* EditorOption.lineHeight */);\n const sb = createStringBuilder(10000);\n sb.appendASCIIString('
');\n for (let i = 0, len = lines.length; i < len; i++) {\n const lineData = lines[i];\n const line = lineData.content;\n sb.appendASCIIString('
');\n const isBasicASCII = strings.isBasicASCII(line);\n const containsRTL = strings.containsRTL(line);\n const lineTokens = LineTokens.createEmpty(line, languageIdCodec);\n renderViewLine(new RenderLineInput((fontInfo.isMonospace && !disableMonospaceOptimizations), fontInfo.canUseHalfwidthRightwardsArrow, line, false, isBasicASCII, containsRTL, 0, lineTokens, lineData.decorations, tabSize, 0, fontInfo.spaceWidth, fontInfo.middotWidth, fontInfo.wsmiddotWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures !== EditorFontLigatures.OFF, null), sb);\n sb.appendASCIIString('
');\n }\n sb.appendASCIIString('
');\n applyFontInfo(domNode, fontInfo);\n const html = sb.build();\n const trustedhtml = ttPolicy ? ttPolicy.createHTML(html) : html;\n domNode.innerHTML = trustedhtml;\n}\nclass ViewMoreLinesContentWidget extends Disposable {\n constructor(editor, position, domNode, disposableStore) {\n super();\n this.editor = editor;\n this.position = position;\n this.domNode = domNode;\n this.allowEditorOverflow = false;\n this.suppressMouseDown = false;\n this._register(disposableStore);\n this._register(toDisposable(() => {\n this.editor.removeContentWidget(this);\n }));\n this.editor.addContentWidget(this);\n }\n getId() {\n return 'editor.widget.viewMoreLinesWidget';\n }\n getDomNode() {\n return this.domNode;\n }\n getPosition() {\n return {\n position: this.position,\n preference: [0 /* ContentWidgetPositionPreference.EXACT */]\n };\n }\n}\nregisterThemingParticipant((theme, collector) => {\n const foreground = theme.getColor(ghostTextForeground);\n if (foreground) {\n // `!important` ensures that other decorations don't cause a style conflict (#132017).\n collector.addRule(`.monaco-editor .ghost-text-decoration { color: ${foreground.toString()} !important; }`);\n collector.addRule(`.monaco-editor .ghost-text-decoration-preview { color: ${foreground.toString()} !important; }`);\n collector.addRule(`.monaco-editor .suggest-preview-text .ghost-text { color: ${foreground.toString()} !important; }`);\n }\n const background = theme.getColor(ghostTextBackground);\n if (background) {\n collector.addRule(`.monaco-editor .ghost-text-decoration { background-color: ${background.toString()}; }`);\n collector.addRule(`.monaco-editor .ghost-text-decoration-preview { background-color: ${background.toString()}; }`);\n collector.addRule(`.monaco-editor .suggest-preview-text .ghost-text { background-color: ${background.toString()}; }`);\n }\n const border = theme.getColor(ghostTextBorder);\n if (border) {\n collector.addRule(`.monaco-editor .suggest-preview-text .ghost-text { border: 1px solid ${border}; }`);\n collector.addRule(`.monaco-editor .ghost-text-decoration { border: 1px solid ${border}; }`);\n collector.addRule(`.monaco-editor .ghost-text-decoration-preview { border: 1px solid ${border}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { firstNonWhitespaceIndex } from '../../../../base/common/strings.js';\nimport { EditorAction } from '../../../browser/editorExtensions.js';\nimport { CursorColumns } from '../../../common/core/cursorColumns.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { GhostTextModel } from './ghostTextModel.js';\nimport { GhostTextWidget } from './ghostTextWidget.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nlet GhostTextController = class GhostTextController extends Disposable {\n constructor(editor, instantiationService) {\n super();\n this.editor = editor;\n this.instantiationService = instantiationService;\n this.triggeredExplicitly = false;\n this.activeController = this._register(new MutableDisposable());\n this.activeModelDidChangeEmitter = this._register(new Emitter());\n this._register(this.editor.onDidChangeModel(() => {\n this.updateModelController();\n }));\n this._register(this.editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(108 /* EditorOption.suggest */)) {\n this.updateModelController();\n }\n if (e.hasChanged(57 /* EditorOption.inlineSuggest */)) {\n this.updateModelController();\n }\n }));\n this.updateModelController();\n }\n static get(editor) {\n return editor.getContribution(GhostTextController.ID);\n }\n get activeModel() {\n var _a;\n return (_a = this.activeController.value) === null || _a === void 0 ? void 0 : _a.model;\n }\n // Don't call this method when not necessary. It will recreate the activeController.\n updateModelController() {\n const suggestOptions = this.editor.getOption(108 /* EditorOption.suggest */);\n const inlineSuggestOptions = this.editor.getOption(57 /* EditorOption.inlineSuggest */);\n this.activeController.value = undefined;\n // ActiveGhostTextController is only created if one of those settings is set or if the inline completions are triggered explicitly.\n this.activeController.value =\n this.editor.hasModel() && (suggestOptions.preview || inlineSuggestOptions.enabled || this.triggeredExplicitly)\n ? this.instantiationService.createInstance(ActiveGhostTextController, this.editor)\n : undefined;\n this.activeModelDidChangeEmitter.fire();\n }\n shouldShowHoverAt(hoverRange) {\n var _a;\n return ((_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.shouldShowHoverAt(hoverRange)) || false;\n }\n shouldShowHoverAtViewZone(viewZoneId) {\n var _a, _b;\n return ((_b = (_a = this.activeController.value) === null || _a === void 0 ? void 0 : _a.widget) === null || _b === void 0 ? void 0 : _b.shouldShowHoverAtViewZone(viewZoneId)) || false;\n }\n trigger() {\n var _a;\n this.triggeredExplicitly = true;\n if (!this.activeController.value) {\n this.updateModelController();\n }\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.triggerInlineCompletion();\n }\n commit() {\n var _a;\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.commitInlineCompletion();\n }\n hide() {\n var _a;\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.hideInlineCompletion();\n }\n showNextInlineCompletion() {\n var _a;\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.showNextInlineCompletion();\n }\n showPreviousInlineCompletion() {\n var _a;\n (_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.showPreviousInlineCompletion();\n }\n hasMultipleInlineCompletions() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield ((_a = this.activeModel) === null || _a === void 0 ? void 0 : _a.hasMultipleInlineCompletions());\n return result !== undefined ? result : false;\n });\n }\n};\nGhostTextController.inlineSuggestionVisible = new RawContextKey('inlineSuggestionVisible', false, nls.localize('inlineSuggestionVisible', \"Whether an inline suggestion is visible\"));\nGhostTextController.inlineSuggestionHasIndentation = new RawContextKey('inlineSuggestionHasIndentation', false, nls.localize('inlineSuggestionHasIndentation', \"Whether the inline suggestion starts with whitespace\"));\nGhostTextController.inlineSuggestionHasIndentationLessThanTabSize = new RawContextKey('inlineSuggestionHasIndentationLessThanTabSize', true, nls.localize('inlineSuggestionHasIndentationLessThanTabSize', \"Whether the inline suggestion starts with whitespace that is less than what would be inserted by tab\"));\nGhostTextController.ID = 'editor.contrib.ghostTextController';\nGhostTextController = __decorate([\n __param(1, IInstantiationService)\n], GhostTextController);\nexport { GhostTextController };\nclass GhostTextContextKeys {\n constructor(contextKeyService) {\n this.contextKeyService = contextKeyService;\n this.inlineCompletionVisible = GhostTextController.inlineSuggestionVisible.bindTo(this.contextKeyService);\n this.inlineCompletionSuggestsIndentation = GhostTextController.inlineSuggestionHasIndentation.bindTo(this.contextKeyService);\n this.inlineCompletionSuggestsIndentationLessThanTabSize = GhostTextController.inlineSuggestionHasIndentationLessThanTabSize.bindTo(this.contextKeyService);\n }\n}\n/**\n * The controller for a text editor with an initialized text model.\n * Must be disposed as soon as the model detaches from the editor.\n*/\nlet ActiveGhostTextController = class ActiveGhostTextController extends Disposable {\n constructor(editor, instantiationService, contextKeyService) {\n super();\n this.editor = editor;\n this.instantiationService = instantiationService;\n this.contextKeyService = contextKeyService;\n this.contextKeys = new GhostTextContextKeys(this.contextKeyService);\n this.model = this._register(this.instantiationService.createInstance(GhostTextModel, this.editor));\n this.widget = this._register(this.instantiationService.createInstance(GhostTextWidget, this.editor, this.model));\n this._register(toDisposable(() => {\n this.contextKeys.inlineCompletionVisible.set(false);\n this.contextKeys.inlineCompletionSuggestsIndentation.set(false);\n this.contextKeys.inlineCompletionSuggestsIndentationLessThanTabSize.set(true);\n }));\n this._register(this.model.onDidChange(() => {\n this.updateContextKeys();\n }));\n this.updateContextKeys();\n }\n updateContextKeys() {\n var _a;\n this.contextKeys.inlineCompletionVisible.set(((_a = this.model.activeInlineCompletionsModel) === null || _a === void 0 ? void 0 : _a.ghostText) !== undefined);\n let startsWithIndentation = false;\n let startsWithIndentationLessThanTabSize = true;\n const ghostText = this.model.inlineCompletionsModel.ghostText;\n if (!!this.model.activeInlineCompletionsModel && ghostText && ghostText.parts.length > 0) {\n const { column, lines } = ghostText.parts[0];\n const firstLine = lines[0];\n const indentationEndColumn = this.editor.getModel().getLineIndentColumn(ghostText.lineNumber);\n const inIndentation = column <= indentationEndColumn;\n if (inIndentation) {\n let firstNonWsIdx = firstNonWhitespaceIndex(firstLine);\n if (firstNonWsIdx === -1) {\n firstNonWsIdx = firstLine.length - 1;\n }\n startsWithIndentation = firstNonWsIdx > 0;\n const tabSize = this.editor.getModel().getOptions().tabSize;\n const visibleColumnIndentation = CursorColumns.visibleColumnFromColumn(firstLine, firstNonWsIdx + 1, tabSize);\n startsWithIndentationLessThanTabSize = visibleColumnIndentation < tabSize;\n }\n }\n this.contextKeys.inlineCompletionSuggestsIndentation.set(startsWithIndentation);\n this.contextKeys.inlineCompletionSuggestsIndentationLessThanTabSize.set(startsWithIndentationLessThanTabSize);\n }\n};\nActiveGhostTextController = __decorate([\n __param(1, IInstantiationService),\n __param(2, IContextKeyService)\n], ActiveGhostTextController);\nexport { ActiveGhostTextController };\nexport class ShowNextInlineSuggestionAction extends EditorAction {\n constructor() {\n super({\n id: ShowNextInlineSuggestionAction.ID,\n label: nls.localize('action.inlineSuggest.showNext', \"Show Next Inline Suggestion\"),\n alias: 'Show Next Inline Suggestion',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, GhostTextController.inlineSuggestionVisible),\n kbOpts: {\n weight: 100,\n primary: 512 /* KeyMod.Alt */ | 89 /* KeyCode.BracketRight */,\n },\n });\n }\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = GhostTextController.get(editor);\n if (controller) {\n controller.showNextInlineCompletion();\n editor.focus();\n }\n });\n }\n}\nShowNextInlineSuggestionAction.ID = 'editor.action.inlineSuggest.showNext';\nexport class ShowPreviousInlineSuggestionAction extends EditorAction {\n constructor() {\n super({\n id: ShowPreviousInlineSuggestionAction.ID,\n label: nls.localize('action.inlineSuggest.showPrevious', \"Show Previous Inline Suggestion\"),\n alias: 'Show Previous Inline Suggestion',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, GhostTextController.inlineSuggestionVisible),\n kbOpts: {\n weight: 100,\n primary: 512 /* KeyMod.Alt */ | 87 /* KeyCode.BracketLeft */,\n },\n });\n }\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = GhostTextController.get(editor);\n if (controller) {\n controller.showPreviousInlineCompletion();\n editor.focus();\n }\n });\n }\n}\nShowPreviousInlineSuggestionAction.ID = 'editor.action.inlineSuggest.showPrevious';\nexport class TriggerInlineSuggestionAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.inlineSuggest.trigger',\n label: nls.localize('action.inlineSuggest.trigger', \"Trigger Inline Suggestion\"),\n alias: 'Trigger Inline Suggestion',\n precondition: EditorContextKeys.writable\n });\n }\n run(accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = GhostTextController.get(editor);\n if (controller) {\n controller.trigger();\n }\n });\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../markdownRenderer/browser/markdownRenderer.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { HoverForeignElementAnchor } from '../../hover/browser/hoverTypes.js';\nimport { GhostTextController, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction } from './ghostTextController.js';\nimport * as nls from '../../../../nls.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { IMenuService, MenuId, MenuItemAction } from '../../../../platform/actions/common/actions.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { inlineSuggestCommitId } from './consts.js';\nexport class InlineCompletionsHover {\n constructor(owner, range, controller) {\n this.owner = owner;\n this.range = range;\n this.controller = controller;\n }\n isValidForHoverAnchor(anchor) {\n return (anchor.type === 1 /* HoverAnchorType.Range */\n && this.range.startColumn <= anchor.range.startColumn\n && this.range.endColumn >= anchor.range.endColumn);\n }\n hasMultipleSuggestions() {\n return this.controller.hasMultipleInlineCompletions();\n }\n get commands() {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.controller.activeModel) === null || _a === void 0 ? void 0 : _a.activeInlineCompletionsModel) === null || _b === void 0 ? void 0 : _b.completionSession.value) === null || _c === void 0 ? void 0 : _c.commands) || [];\n }\n}\nlet InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant {\n constructor(_editor, _commandService, _menuService, _contextKeyService, _languageService, _openerService, accessibilityService) {\n this._editor = _editor;\n this._commandService = _commandService;\n this._menuService = _menuService;\n this._contextKeyService = _contextKeyService;\n this._languageService = _languageService;\n this._openerService = _openerService;\n this.accessibilityService = accessibilityService;\n this.hoverOrdinal = 3;\n }\n suggestHoverAnchor(mouseEvent) {\n const controller = GhostTextController.get(this._editor);\n if (!controller) {\n return null;\n }\n const target = mouseEvent.target;\n if (target.type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */) {\n // handle the case where the mouse is over the view zone\n const viewZoneData = target.detail;\n if (controller.shouldShowHoverAtViewZone(viewZoneData.viewZoneId)) {\n return new HoverForeignElementAnchor(1000, this, Range.fromPositions(viewZoneData.positionBefore || viewZoneData.position, viewZoneData.positionBefore || viewZoneData.position));\n }\n }\n if (target.type === 7 /* MouseTargetType.CONTENT_EMPTY */) {\n // handle the case where the mouse is over the empty portion of a line following ghost text\n if (controller.shouldShowHoverAt(target.range)) {\n return new HoverForeignElementAnchor(1000, this, target.range);\n }\n }\n if (target.type === 6 /* MouseTargetType.CONTENT_TEXT */) {\n // handle the case where the mouse is directly over ghost text\n const mightBeForeignElement = target.detail.mightBeForeignElement;\n if (mightBeForeignElement && controller.shouldShowHoverAt(target.range)) {\n return new HoverForeignElementAnchor(1000, this, target.range);\n }\n }\n return null;\n }\n computeSync(anchor, lineDecorations) {\n const controller = GhostTextController.get(this._editor);\n if (controller && controller.shouldShowHoverAt(anchor.range)) {\n return [new InlineCompletionsHover(this, anchor.range, controller)];\n }\n return [];\n }\n renderHoverParts(context, hoverParts) {\n const disposableStore = new DisposableStore();\n const part = hoverParts[0];\n if (this.accessibilityService.isScreenReaderOptimized()) {\n this.renderScreenReaderText(context, part, disposableStore);\n }\n // TODO@hediet: deprecate MenuId.InlineCompletionsActions\n const menu = disposableStore.add(this._menuService.createMenu(MenuId.InlineCompletionsActions, this._contextKeyService));\n const previousAction = context.statusBar.addAction({\n label: nls.localize('showNextInlineSuggestion', \"Next\"),\n commandId: ShowNextInlineSuggestionAction.ID,\n run: () => this._commandService.executeCommand(ShowNextInlineSuggestionAction.ID)\n });\n const nextAction = context.statusBar.addAction({\n label: nls.localize('showPreviousInlineSuggestion', \"Previous\"),\n commandId: ShowPreviousInlineSuggestionAction.ID,\n run: () => this._commandService.executeCommand(ShowPreviousInlineSuggestionAction.ID)\n });\n context.statusBar.addAction({\n label: nls.localize('acceptInlineSuggestion', \"Accept\"),\n commandId: inlineSuggestCommitId,\n run: () => this._commandService.executeCommand(inlineSuggestCommitId)\n });\n const actions = [previousAction, nextAction];\n for (const action of actions) {\n action.setEnabled(false);\n }\n part.hasMultipleSuggestions().then(hasMore => {\n for (const action of actions) {\n action.setEnabled(hasMore);\n }\n });\n for (const command of part.commands) {\n context.statusBar.addAction({\n label: command.title,\n commandId: command.id,\n run: () => this._commandService.executeCommand(command.id, ...(command.arguments || []))\n });\n }\n for (const [_, group] of menu.getActions()) {\n for (const action of group) {\n if (action instanceof MenuItemAction) {\n context.statusBar.addAction({\n label: action.label,\n commandId: action.item.id,\n run: () => this._commandService.executeCommand(action.item.id)\n });\n }\n }\n }\n return disposableStore;\n }\n renderScreenReaderText(context, part, disposableStore) {\n var _a, _b;\n const $ = dom.$;\n const markdownHoverElement = $('div.hover-row.markdown-hover');\n const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n const renderer = disposableStore.add(new MarkdownRenderer({ editor: this._editor }, this._languageService, this._openerService));\n const render = (code) => {\n disposableStore.add(renderer.onDidRenderAsync(() => {\n hoverContentsElement.className = 'hover-contents code-hover-contents';\n context.onContentsChanged();\n }));\n const inlineSuggestionAvailable = nls.localize('inlineSuggestionFollows', \"Suggestion:\");\n const renderedContents = disposableStore.add(renderer.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code)));\n hoverContentsElement.replaceChildren(renderedContents.element);\n };\n const ghostText = (_b = (_a = part.controller.activeModel) === null || _a === void 0 ? void 0 : _a.inlineCompletionsModel) === null || _b === void 0 ? void 0 : _b.ghostText;\n if (ghostText) {\n const lineText = this._editor.getModel().getLineContent(ghostText.lineNumber);\n render(ghostText.renderForScreenReader(lineText));\n }\n context.fragment.appendChild(markdownHoverElement);\n }\n};\nInlineCompletionsHoverParticipant = __decorate([\n __param(1, ICommandService),\n __param(2, IMenuService),\n __param(3, IContextKeyService),\n __param(4, ILanguageService),\n __param(5, IOpenerService),\n __param(6, IAccessibilityService)\n], InlineCompletionsHoverParticipant);\nexport { InlineCompletionsHoverParticipant };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { inlineSuggestCommitId } from './consts.js';\nimport { GhostTextController, ShowNextInlineSuggestionAction, ShowPreviousInlineSuggestionAction, TriggerInlineSuggestionAction } from './ghostTextController.js';\nimport { InlineCompletionsHoverParticipant } from './ghostTextHoverParticipant.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { KeybindingsRegistry } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nregisterEditorContribution(GhostTextController.ID, GhostTextController);\nregisterEditorAction(TriggerInlineSuggestionAction);\nregisterEditorAction(ShowNextInlineSuggestionAction);\nregisterEditorAction(ShowPreviousInlineSuggestionAction);\nHoverParticipantRegistry.register(InlineCompletionsHoverParticipant);\nconst GhostTextCommand = EditorCommand.bindToContribution(GhostTextController.get);\nexport const commitInlineSuggestionAction = new GhostTextCommand({\n id: inlineSuggestCommitId,\n precondition: GhostTextController.inlineSuggestionVisible,\n handler(x) {\n x.commit();\n x.editor.focus();\n }\n});\nregisterEditorCommand(commitInlineSuggestionAction);\nKeybindingsRegistry.registerKeybindingRule({\n primary: 2 /* KeyCode.Tab */,\n weight: 200,\n id: commitInlineSuggestionAction.id,\n when: ContextKeyExpr.and(commitInlineSuggestionAction.precondition, EditorContextKeys.tabMovesFocus.toNegated(), GhostTextController.inlineSuggestionHasIndentationLessThanTabSize),\n});\nregisterEditorCommand(new GhostTextCommand({\n id: 'editor.action.inlineSuggest.hide',\n precondition: GhostTextController.inlineSuggestionVisible,\n kbOpts: {\n weight: 100,\n primary: 9 /* KeyCode.Escape */,\n },\n handler(x) {\n x.hide();\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { CursorMoveCommands } from '../../../common/cursor/cursorMoveCommands.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as nls from '../../../../nls.js';\nexport class ExpandLineSelectionAction extends EditorAction {\n constructor() {\n super({\n id: 'expandLineSelection',\n label: nls.localize('expandLineSelection', \"Expand Line Selection\"),\n alias: 'Expand Line Selection',\n precondition: undefined,\n kbOpts: {\n weight: 0 /* KeybindingWeight.EditorCore */,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 42 /* KeyCode.KeyL */\n },\n });\n }\n run(_accessor, editor, args) {\n args = args || {};\n if (!editor.hasModel()) {\n return;\n }\n const viewModel = editor._getViewModel();\n viewModel.model.pushStackElement();\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, CursorMoveCommands.expandLineSelection(viewModel, viewModel.getCursorStates()));\n viewModel.revealPrimaryCursor(args.source, true);\n }\n}\nregisterEditorAction(ExpandLineSelectionAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as strings from '../../../base/common/strings.js';\nimport { EditOperation } from '../core/editOperation.js';\nimport { Range } from '../core/range.js';\nexport class TrimTrailingWhitespaceCommand {\n constructor(selection, cursors) {\n this._selection = selection;\n this._cursors = cursors;\n this._selectionId = null;\n }\n getEditOperations(model, builder) {\n const ops = trimTrailingWhitespace(model, this._cursors);\n for (let i = 0, len = ops.length; i < len; i++) {\n const op = ops[i];\n builder.addEditOperation(op.range, op.text);\n }\n this._selectionId = builder.trackSelection(this._selection);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this._selectionId);\n }\n}\n/**\n * Generate commands for trimming trailing whitespace on a model and ignore lines on which cursors are sitting.\n */\nexport function trimTrailingWhitespace(model, cursors) {\n // Sort cursors ascending\n cursors.sort((a, b) => {\n if (a.lineNumber === b.lineNumber) {\n return a.column - b.column;\n }\n return a.lineNumber - b.lineNumber;\n });\n // Reduce multiple cursors on the same line and only keep the last one on the line\n for (let i = cursors.length - 2; i >= 0; i--) {\n if (cursors[i].lineNumber === cursors[i + 1].lineNumber) {\n // Remove cursor at `i`\n cursors.splice(i, 1);\n }\n }\n const r = [];\n let rLen = 0;\n let cursorIndex = 0;\n const cursorLen = cursors.length;\n for (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\n const lineContent = model.getLineContent(lineNumber);\n const maxLineColumn = lineContent.length + 1;\n let minEditColumn = 0;\n if (cursorIndex < cursorLen && cursors[cursorIndex].lineNumber === lineNumber) {\n minEditColumn = cursors[cursorIndex].column;\n cursorIndex++;\n if (minEditColumn === maxLineColumn) {\n // The cursor is at the end of the line => no edits for sure on this line\n continue;\n }\n }\n if (lineContent.length === 0) {\n continue;\n }\n const lastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\n let fromColumn = 0;\n if (lastNonWhitespaceIndex === -1) {\n // Entire line is whitespace\n fromColumn = 1;\n }\n else if (lastNonWhitespaceIndex !== lineContent.length - 1) {\n // There is trailing whitespace\n fromColumn = lastNonWhitespaceIndex + 2;\n }\n else {\n // There is no trailing whitespace\n continue;\n }\n fromColumn = Math.max(minEditColumn, fromColumn);\n r[rLen++] = EditOperation.delete(new Range(lineNumber, fromColumn, lineNumber, maxLineColumn));\n }\n return r;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nexport class CopyLinesCommand {\n constructor(selection, isCopyingDown, noop) {\n this._selection = selection;\n this._isCopyingDown = isCopyingDown;\n this._noop = noop || false;\n this._selectionDirection = 0 /* SelectionDirection.LTR */;\n this._selectionId = null;\n this._startLineNumberDelta = 0;\n this._endLineNumberDelta = 0;\n }\n getEditOperations(model, builder) {\n let s = this._selection;\n this._startLineNumberDelta = 0;\n this._endLineNumberDelta = 0;\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n this._endLineNumberDelta = 1;\n s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\n }\n const sourceLines = [];\n for (let i = s.startLineNumber; i <= s.endLineNumber; i++) {\n sourceLines.push(model.getLineContent(i));\n }\n const sourceText = sourceLines.join('\\n');\n if (sourceText === '') {\n // Duplicating empty line\n if (this._isCopyingDown) {\n this._startLineNumberDelta++;\n this._endLineNumberDelta++;\n }\n }\n if (this._noop) {\n builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber + 1, 1), s.endLineNumber === model.getLineCount() ? '' : '\\n');\n }\n else {\n if (!this._isCopyingDown) {\n builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), '\\n' + sourceText);\n }\n else {\n builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), sourceText + '\\n');\n }\n }\n this._selectionId = builder.trackSelection(s);\n this._selectionDirection = this._selection.getDirection();\n }\n computeCursorState(model, helper) {\n let result = helper.getTrackedSelection(this._selectionId);\n if (this._startLineNumberDelta !== 0 || this._endLineNumberDelta !== 0) {\n let startLineNumber = result.startLineNumber;\n let startColumn = result.startColumn;\n let endLineNumber = result.endLineNumber;\n let endColumn = result.endColumn;\n if (this._startLineNumberDelta !== 0) {\n startLineNumber = startLineNumber + this._startLineNumberDelta;\n startColumn = 1;\n }\n if (this._endLineNumberDelta !== 0) {\n endLineNumber = endLineNumber + this._endLineNumberDelta;\n endColumn = 1;\n }\n result = Selection.createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, this._selectionDirection);\n }\n return result;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as strings from '../../../../base/common/strings.js';\nimport { ShiftCommand } from '../../../common/commands/shiftCommand.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IndentAction } from '../../../common/languages/languageConfiguration.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport * as indentUtils from '../../indentation/browser/indentUtils.js';\nimport { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';\nimport { getEnterAction } from '../../../common/languages/enterAction.js';\nlet MoveLinesCommand = class MoveLinesCommand {\n constructor(selection, isMovingDown, autoIndent, _languageConfigurationService) {\n this._languageConfigurationService = _languageConfigurationService;\n this._selection = selection;\n this._isMovingDown = isMovingDown;\n this._autoIndent = autoIndent;\n this._selectionId = null;\n this._moveEndLineSelectionShrink = false;\n }\n getEditOperations(model, builder) {\n const modelLineCount = model.getLineCount();\n if (this._isMovingDown && this._selection.endLineNumber === modelLineCount) {\n this._selectionId = builder.trackSelection(this._selection);\n return;\n }\n if (!this._isMovingDown && this._selection.startLineNumber === 1) {\n this._selectionId = builder.trackSelection(this._selection);\n return;\n }\n this._moveEndPositionDown = false;\n let s = this._selection;\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n this._moveEndPositionDown = true;\n s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\n }\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\n const indentConverter = this.buildIndentConverter(tabSize, indentSize, insertSpaces);\n const virtualModel = {\n tokenization: {\n getLineTokens: (lineNumber) => {\n return model.tokenization.getLineTokens(lineNumber);\n },\n getLanguageId: () => {\n return model.getLanguageId();\n },\n getLanguageIdAtPosition: (lineNumber, column) => {\n return model.getLanguageIdAtPosition(lineNumber, column);\n },\n },\n getLineContent: null,\n };\n if (s.startLineNumber === s.endLineNumber && model.getLineMaxColumn(s.startLineNumber) === 1) {\n // Current line is empty\n const lineNumber = s.startLineNumber;\n const otherLineNumber = (this._isMovingDown ? lineNumber + 1 : lineNumber - 1);\n if (model.getLineMaxColumn(otherLineNumber) === 1) {\n // Other line number is empty too, so no editing is needed\n // Add a no-op to force running by the model\n builder.addEditOperation(new Range(1, 1, 1, 1), null);\n }\n else {\n // Type content from other line number on line number\n builder.addEditOperation(new Range(lineNumber, 1, lineNumber, 1), model.getLineContent(otherLineNumber));\n // Remove content from other line number\n builder.addEditOperation(new Range(otherLineNumber, 1, otherLineNumber, model.getLineMaxColumn(otherLineNumber)), null);\n }\n // Track selection at the other line number\n s = new Selection(otherLineNumber, 1, otherLineNumber, 1);\n }\n else {\n let movingLineNumber;\n let movingLineText;\n if (this._isMovingDown) {\n movingLineNumber = s.endLineNumber + 1;\n movingLineText = model.getLineContent(movingLineNumber);\n // Delete line that needs to be moved\n builder.addEditOperation(new Range(movingLineNumber - 1, model.getLineMaxColumn(movingLineNumber - 1), movingLineNumber, model.getLineMaxColumn(movingLineNumber)), null);\n let insertingText = movingLineText;\n if (this.shouldAutoIndent(model, s)) {\n const movingLineMatchResult = this.matchEnterRule(model, indentConverter, tabSize, movingLineNumber, s.startLineNumber - 1);\n // if s.startLineNumber - 1 matches onEnter rule, we still honor that.\n if (movingLineMatchResult !== null) {\n const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(movingLineNumber));\n const newSpaceCnt = movingLineMatchResult + indentUtils.getSpaceCnt(oldIndentation, tabSize);\n const newIndentation = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n insertingText = newIndentation + this.trimLeft(movingLineText);\n }\n else {\n // no enter rule matches, let's check indentatin rules then.\n virtualModel.getLineContent = (lineNumber) => {\n if (lineNumber === s.startLineNumber) {\n return model.getLineContent(movingLineNumber);\n }\n else {\n return model.getLineContent(lineNumber);\n }\n };\n const indentOfMovingLine = getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(movingLineNumber, 1), s.startLineNumber, indentConverter, this._languageConfigurationService);\n if (indentOfMovingLine !== null) {\n const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(movingLineNumber));\n const newSpaceCnt = indentUtils.getSpaceCnt(indentOfMovingLine, tabSize);\n const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n if (newSpaceCnt !== oldSpaceCnt) {\n const newIndentation = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n insertingText = newIndentation + this.trimLeft(movingLineText);\n }\n }\n }\n // add edit operations for moving line first to make sure it's executed after we make indentation change\n // to s.startLineNumber\n builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), insertingText + '\\n');\n const ret = this.matchEnterRuleMovingDown(model, indentConverter, tabSize, s.startLineNumber, movingLineNumber, insertingText);\n // check if the line being moved before matches onEnter rules, if so let's adjust the indentation by onEnter rules.\n if (ret !== null) {\n if (ret !== 0) {\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, ret);\n }\n }\n else {\n // it doesn't match onEnter rules, let's check indentation rules then.\n virtualModel.getLineContent = (lineNumber) => {\n if (lineNumber === s.startLineNumber) {\n return insertingText;\n }\n else if (lineNumber >= s.startLineNumber + 1 && lineNumber <= s.endLineNumber + 1) {\n return model.getLineContent(lineNumber - 1);\n }\n else {\n return model.getLineContent(lineNumber);\n }\n };\n const newIndentatOfMovingBlock = getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(movingLineNumber, 1), s.startLineNumber + 1, indentConverter, this._languageConfigurationService);\n if (newIndentatOfMovingBlock !== null) {\n const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(s.startLineNumber));\n const newSpaceCnt = indentUtils.getSpaceCnt(newIndentatOfMovingBlock, tabSize);\n const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n if (newSpaceCnt !== oldSpaceCnt) {\n const spaceCntOffset = newSpaceCnt - oldSpaceCnt;\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, spaceCntOffset);\n }\n }\n }\n }\n else {\n // Insert line that needs to be moved before\n builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), insertingText + '\\n');\n }\n }\n else {\n movingLineNumber = s.startLineNumber - 1;\n movingLineText = model.getLineContent(movingLineNumber);\n // Delete line that needs to be moved\n builder.addEditOperation(new Range(movingLineNumber, 1, movingLineNumber + 1, 1), null);\n // Insert line that needs to be moved after\n builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), '\\n' + movingLineText);\n if (this.shouldAutoIndent(model, s)) {\n virtualModel.getLineContent = (lineNumber) => {\n if (lineNumber === movingLineNumber) {\n return model.getLineContent(s.startLineNumber);\n }\n else {\n return model.getLineContent(lineNumber);\n }\n };\n const ret = this.matchEnterRule(model, indentConverter, tabSize, s.startLineNumber, s.startLineNumber - 2);\n // check if s.startLineNumber - 2 matches onEnter rules, if so adjust the moving block by onEnter rules.\n if (ret !== null) {\n if (ret !== 0) {\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, ret);\n }\n }\n else {\n // it doesn't match any onEnter rule, let's check indentation rules then.\n const indentOfFirstLine = getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(s.startLineNumber, 1), movingLineNumber, indentConverter, this._languageConfigurationService);\n if (indentOfFirstLine !== null) {\n // adjust the indentation of the moving block\n const oldIndent = strings.getLeadingWhitespace(model.getLineContent(s.startLineNumber));\n const newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\n const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndent, tabSize);\n if (newSpaceCnt !== oldSpaceCnt) {\n const spaceCntOffset = newSpaceCnt - oldSpaceCnt;\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, spaceCntOffset);\n }\n }\n }\n }\n }\n }\n this._selectionId = builder.trackSelection(s);\n }\n buildIndentConverter(tabSize, indentSize, insertSpaces) {\n return {\n shiftIndent: (indentation) => {\n return ShiftCommand.shiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n },\n unshiftIndent: (indentation) => {\n return ShiftCommand.unshiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n }\n };\n }\n parseEnterResult(model, indentConverter, tabSize, line, enter) {\n if (enter) {\n let enterPrefix = enter.indentation;\n if (enter.indentAction === IndentAction.None) {\n enterPrefix = enter.indentation + enter.appendText;\n }\n else if (enter.indentAction === IndentAction.Indent) {\n enterPrefix = enter.indentation + enter.appendText;\n }\n else if (enter.indentAction === IndentAction.IndentOutdent) {\n enterPrefix = enter.indentation;\n }\n else if (enter.indentAction === IndentAction.Outdent) {\n enterPrefix = indentConverter.unshiftIndent(enter.indentation) + enter.appendText;\n }\n const movingLineText = model.getLineContent(line);\n if (this.trimLeft(movingLineText).indexOf(this.trimLeft(enterPrefix)) >= 0) {\n const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(line));\n let newIndentation = strings.getLeadingWhitespace(enterPrefix);\n const indentMetadataOfMovelingLine = getIndentMetadata(model, line, this._languageConfigurationService);\n if (indentMetadataOfMovelingLine !== null && indentMetadataOfMovelingLine & 2 /* IndentConsts.DECREASE_MASK */) {\n newIndentation = indentConverter.unshiftIndent(newIndentation);\n }\n const newSpaceCnt = indentUtils.getSpaceCnt(newIndentation, tabSize);\n const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n return newSpaceCnt - oldSpaceCnt;\n }\n }\n return null;\n }\n /**\n *\n * @param model\n * @param indentConverter\n * @param tabSize\n * @param line the line moving down\n * @param futureAboveLineNumber the line which will be at the `line` position\n * @param futureAboveLineText\n */\n matchEnterRuleMovingDown(model, indentConverter, tabSize, line, futureAboveLineNumber, futureAboveLineText) {\n if (strings.lastNonWhitespaceIndex(futureAboveLineText) >= 0) {\n // break\n const maxColumn = model.getLineMaxColumn(futureAboveLineNumber);\n const enter = getEnterAction(this._autoIndent, model, new Range(futureAboveLineNumber, maxColumn, futureAboveLineNumber, maxColumn), this._languageConfigurationService);\n return this.parseEnterResult(model, indentConverter, tabSize, line, enter);\n }\n else {\n // go upwards, starting from `line - 1`\n let validPrecedingLine = line - 1;\n while (validPrecedingLine >= 1) {\n const lineContent = model.getLineContent(validPrecedingLine);\n const nonWhitespaceIdx = strings.lastNonWhitespaceIndex(lineContent);\n if (nonWhitespaceIdx >= 0) {\n break;\n }\n validPrecedingLine--;\n }\n if (validPrecedingLine < 1 || line > model.getLineCount()) {\n return null;\n }\n const maxColumn = model.getLineMaxColumn(validPrecedingLine);\n const enter = getEnterAction(this._autoIndent, model, new Range(validPrecedingLine, maxColumn, validPrecedingLine, maxColumn), this._languageConfigurationService);\n return this.parseEnterResult(model, indentConverter, tabSize, line, enter);\n }\n }\n matchEnterRule(model, indentConverter, tabSize, line, oneLineAbove, previousLineText) {\n let validPrecedingLine = oneLineAbove;\n while (validPrecedingLine >= 1) {\n // ship empty lines as empty lines just inherit indentation\n let lineContent;\n if (validPrecedingLine === oneLineAbove && previousLineText !== undefined) {\n lineContent = previousLineText;\n }\n else {\n lineContent = model.getLineContent(validPrecedingLine);\n }\n const nonWhitespaceIdx = strings.lastNonWhitespaceIndex(lineContent);\n if (nonWhitespaceIdx >= 0) {\n break;\n }\n validPrecedingLine--;\n }\n if (validPrecedingLine < 1 || line > model.getLineCount()) {\n return null;\n }\n const maxColumn = model.getLineMaxColumn(validPrecedingLine);\n const enter = getEnterAction(this._autoIndent, model, new Range(validPrecedingLine, maxColumn, validPrecedingLine, maxColumn), this._languageConfigurationService);\n return this.parseEnterResult(model, indentConverter, tabSize, line, enter);\n }\n trimLeft(str) {\n return str.replace(/^\\s+/, '');\n }\n shouldAutoIndent(model, selection) {\n if (this._autoIndent < 4 /* EditorAutoIndentStrategy.Full */) {\n return false;\n }\n // if it's not easy to tokenize, we stop auto indent.\n if (!model.tokenization.isCheapToTokenize(selection.startLineNumber)) {\n return false;\n }\n const languageAtSelectionStart = model.getLanguageIdAtPosition(selection.startLineNumber, 1);\n const languageAtSelectionEnd = model.getLanguageIdAtPosition(selection.endLineNumber, 1);\n if (languageAtSelectionStart !== languageAtSelectionEnd) {\n return false;\n }\n if (this._languageConfigurationService.getLanguageConfiguration(languageAtSelectionStart).indentRulesSupport === null) {\n return false;\n }\n return true;\n }\n getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, offset) {\n for (let i = s.startLineNumber; i <= s.endLineNumber; i++) {\n const lineContent = model.getLineContent(i);\n const originalIndent = strings.getLeadingWhitespace(lineContent);\n const originalSpacesCnt = indentUtils.getSpaceCnt(originalIndent, tabSize);\n const newSpacesCnt = originalSpacesCnt + offset;\n const newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\n if (newIndent !== originalIndent) {\n builder.addEditOperation(new Range(i, 1, i, originalIndent.length + 1), newIndent);\n if (i === s.endLineNumber && s.endColumn <= originalIndent.length + 1 && newIndent === '') {\n // as users select part of the original indent white spaces\n // when we adjust the indentation of endLine, we should adjust the cursor position as well.\n this._moveEndLineSelectionShrink = true;\n }\n }\n }\n }\n computeCursorState(model, helper) {\n let result = helper.getTrackedSelection(this._selectionId);\n if (this._moveEndPositionDown) {\n result = result.setEndPosition(result.endLineNumber + 1, 1);\n }\n if (this._moveEndLineSelectionShrink && result.startLineNumber < result.endLineNumber) {\n result = result.setEndPosition(result.endLineNumber, 2);\n }\n return result;\n }\n};\nMoveLinesCommand = __decorate([\n __param(3, ILanguageConfigurationService)\n], MoveLinesCommand);\nexport { MoveLinesCommand };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nexport class SortLinesCommand {\n constructor(selection, descending) {\n this.selection = selection;\n this.descending = descending;\n this.selectionId = null;\n }\n static getCollator() {\n if (!SortLinesCommand._COLLATOR) {\n SortLinesCommand._COLLATOR = new Intl.Collator();\n }\n return SortLinesCommand._COLLATOR;\n }\n getEditOperations(model, builder) {\n const op = sortLines(model, this.selection, this.descending);\n if (op) {\n builder.addEditOperation(op.range, op.text);\n }\n this.selectionId = builder.trackSelection(this.selection);\n }\n computeCursorState(model, helper) {\n return helper.getTrackedSelection(this.selectionId);\n }\n static canRun(model, selection, descending) {\n if (model === null) {\n return false;\n }\n const data = getSortData(model, selection, descending);\n if (!data) {\n return false;\n }\n for (let i = 0, len = data.before.length; i < len; i++) {\n if (data.before[i] !== data.after[i]) {\n return true;\n }\n }\n return false;\n }\n}\nSortLinesCommand._COLLATOR = null;\nfunction getSortData(model, selection, descending) {\n const startLineNumber = selection.startLineNumber;\n let endLineNumber = selection.endLineNumber;\n if (selection.endColumn === 1) {\n endLineNumber--;\n }\n // Nothing to sort if user didn't select anything.\n if (startLineNumber >= endLineNumber) {\n return null;\n }\n const linesToSort = [];\n // Get the contents of the selection to be sorted.\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\n linesToSort.push(model.getLineContent(lineNumber));\n }\n let sorted = linesToSort.slice(0);\n sorted.sort(SortLinesCommand.getCollator().compare);\n // If descending, reverse the order.\n if (descending === true) {\n sorted = sorted.reverse();\n }\n return {\n startLineNumber: startLineNumber,\n endLineNumber: endLineNumber,\n before: linesToSort,\n after: sorted\n };\n}\n/**\n * Generate commands for sorting lines on a model.\n */\nfunction sortLines(model, selection, descending) {\n const data = getSortData(model, selection, descending);\n if (!data) {\n return null;\n }\n return EditOperation.replace(new Range(data.startLineNumber, 1, data.endLineNumber, model.getLineMaxColumn(data.endLineNumber)), data.after.join('\\n'));\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { CoreEditingCommands } from '../../../browser/coreCommands.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection, ReplaceCommandThatSelectsText } from '../../../common/commands/replaceCommand.js';\nimport { TrimTrailingWhitespaceCommand } from '../../../common/commands/trimTrailingWhitespaceCommand.js';\nimport { TypeOperations } from '../../../common/cursor/cursorTypeOperations.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { CopyLinesCommand } from './copyLinesCommand.js';\nimport { MoveLinesCommand } from './moveLinesCommand.js';\nimport { SortLinesCommand } from './sortLinesCommand.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\n// copy lines\nclass AbstractCopyLinesAction extends EditorAction {\n constructor(down, opts) {\n super(opts);\n this.down = down;\n }\n run(_accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const selections = editor.getSelections().map((selection, index) => ({ selection, index, ignore: false }));\n selections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n // Remove selections that would result in copying the same line\n let prev = selections[0];\n for (let i = 1; i < selections.length; i++) {\n const curr = selections[i];\n if (prev.selection.endLineNumber === curr.selection.startLineNumber) {\n // these two selections would copy the same line\n if (prev.index < curr.index) {\n // prev wins\n curr.ignore = true;\n }\n else {\n // curr wins\n prev.ignore = true;\n prev = curr;\n }\n }\n }\n const commands = [];\n for (const selection of selections) {\n commands.push(new CopyLinesCommand(selection.selection, this.down, selection.ignore));\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nclass CopyLinesUpAction extends AbstractCopyLinesAction {\n constructor() {\n super(false, {\n id: 'editor.action.copyLinesUpAction',\n label: nls.localize('lines.copyUp', \"Copy Line Up\"),\n alias: 'Copy Line Up',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 16 /* KeyCode.UpArrow */,\n linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 16 /* KeyCode.UpArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '2_line',\n title: nls.localize({ key: 'miCopyLinesUp', comment: ['&& denotes a mnemonic'] }, \"&&Copy Line Up\"),\n order: 1\n }\n });\n }\n}\nclass CopyLinesDownAction extends AbstractCopyLinesAction {\n constructor() {\n super(true, {\n id: 'editor.action.copyLinesDownAction',\n label: nls.localize('lines.copyDown', \"Copy Line Down\"),\n alias: 'Copy Line Down',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 18 /* KeyCode.DownArrow */,\n linux: { primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 18 /* KeyCode.DownArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '2_line',\n title: nls.localize({ key: 'miCopyLinesDown', comment: ['&& denotes a mnemonic'] }, \"Co&&py Line Down\"),\n order: 2\n }\n });\n }\n}\nexport class DuplicateSelectionAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.duplicateSelection',\n label: nls.localize('duplicateSelection', \"Duplicate Selection\"),\n alias: 'Duplicate Selection',\n precondition: EditorContextKeys.writable,\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '2_line',\n title: nls.localize({ key: 'miDuplicateSelection', comment: ['&& denotes a mnemonic'] }, \"&&Duplicate Selection\"),\n order: 5\n }\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n const commands = [];\n const selections = editor.getSelections();\n const model = editor.getModel();\n for (const selection of selections) {\n if (selection.isEmpty()) {\n commands.push(new CopyLinesCommand(selection, true));\n }\n else {\n const insertSelection = new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn);\n commands.push(new ReplaceCommandThatSelectsText(insertSelection, model.getValueInRange(selection)));\n }\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\n// move lines\nclass AbstractMoveLinesAction extends EditorAction {\n constructor(down, opts) {\n super(opts);\n this.down = down;\n }\n run(accessor, editor) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n const commands = [];\n const selections = editor.getSelections() || [];\n const autoIndent = editor.getOption(9 /* EditorOption.autoIndent */);\n for (const selection of selections) {\n commands.push(new MoveLinesCommand(selection, this.down, autoIndent, languageConfigurationService));\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nclass MoveLinesUpAction extends AbstractMoveLinesAction {\n constructor() {\n super(false, {\n id: 'editor.action.moveLinesUpAction',\n label: nls.localize('lines.moveUp', \"Move Line Up\"),\n alias: 'Move Line Up',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */,\n linux: { primary: 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '2_line',\n title: nls.localize({ key: 'miMoveLinesUp', comment: ['&& denotes a mnemonic'] }, \"Mo&&ve Line Up\"),\n order: 3\n }\n });\n }\n}\nclass MoveLinesDownAction extends AbstractMoveLinesAction {\n constructor() {\n super(true, {\n id: 'editor.action.moveLinesDownAction',\n label: nls.localize('lines.moveDown', \"Move Line Down\"),\n alias: 'Move Line Down',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */,\n linux: { primary: 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '2_line',\n title: nls.localize({ key: 'miMoveLinesDown', comment: ['&& denotes a mnemonic'] }, \"Move &&Line Down\"),\n order: 4\n }\n });\n }\n}\nexport class AbstractSortLinesAction extends EditorAction {\n constructor(descending, opts) {\n super(opts);\n this.descending = descending;\n }\n run(_accessor, editor) {\n const selections = editor.getSelections() || [];\n for (const selection of selections) {\n if (!SortLinesCommand.canRun(editor.getModel(), selection, this.descending)) {\n return;\n }\n }\n const commands = [];\n for (let i = 0, len = selections.length; i < len; i++) {\n commands[i] = new SortLinesCommand(selections[i], this.descending);\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nexport class SortLinesAscendingAction extends AbstractSortLinesAction {\n constructor() {\n super(false, {\n id: 'editor.action.sortLinesAscending',\n label: nls.localize('lines.sortAscending', \"Sort Lines Ascending\"),\n alias: 'Sort Lines Ascending',\n precondition: EditorContextKeys.writable\n });\n }\n}\nexport class SortLinesDescendingAction extends AbstractSortLinesAction {\n constructor() {\n super(true, {\n id: 'editor.action.sortLinesDescending',\n label: nls.localize('lines.sortDescending', \"Sort Lines Descending\"),\n alias: 'Sort Lines Descending',\n precondition: EditorContextKeys.writable\n });\n }\n}\nexport class DeleteDuplicateLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.removeDuplicateLines',\n label: nls.localize('lines.deleteDuplicates', \"Delete Duplicate Lines\"),\n alias: 'Delete Duplicate Lines',\n precondition: EditorContextKeys.writable\n });\n }\n run(_accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n return;\n }\n const edits = [];\n const endCursorState = [];\n let linesDeleted = 0;\n for (const selection of editor.getSelections()) {\n const uniqueLines = new Set();\n const lines = [];\n for (let i = selection.startLineNumber; i <= selection.endLineNumber; i++) {\n const line = model.getLineContent(i);\n if (uniqueLines.has(line)) {\n continue;\n }\n lines.push(line);\n uniqueLines.add(line);\n }\n const selectionToReplace = new Selection(selection.startLineNumber, 1, selection.endLineNumber, model.getLineMaxColumn(selection.endLineNumber));\n const adjustedSelectionStart = selection.startLineNumber - linesDeleted;\n const finalSelection = new Selection(adjustedSelectionStart, 1, adjustedSelectionStart + lines.length - 1, lines[lines.length - 1].length);\n edits.push(EditOperation.replace(selectionToReplace, lines.join('\\n')));\n endCursorState.push(finalSelection);\n linesDeleted += (selection.endLineNumber - selection.startLineNumber + 1) - lines.length;\n }\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits, endCursorState);\n editor.pushUndoStop();\n }\n}\nexport class TrimTrailingWhitespaceAction extends EditorAction {\n constructor() {\n super({\n id: TrimTrailingWhitespaceAction.ID,\n label: nls.localize('lines.trimTrailingWhitespace', \"Trim Trailing Whitespace\"),\n alias: 'Trim Trailing Whitespace',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 54 /* KeyCode.KeyX */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor, args) {\n let cursors = [];\n if (args.reason === 'auto-save') {\n // See https://github.com/editorconfig/editorconfig-vscode/issues/47\n // It is very convenient for the editor config extension to invoke this action.\n // So, if we get a reason:'auto-save' passed in, let's preserve cursor positions.\n cursors = (editor.getSelections() || []).map(s => new Position(s.positionLineNumber, s.positionColumn));\n }\n const selection = editor.getSelection();\n if (selection === null) {\n return;\n }\n const command = new TrimTrailingWhitespaceCommand(selection, cursors);\n editor.pushUndoStop();\n editor.executeCommands(this.id, [command]);\n editor.pushUndoStop();\n }\n}\nTrimTrailingWhitespaceAction.ID = 'editor.action.trimTrailingWhitespace';\nexport class DeleteLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.deleteLines',\n label: nls.localize('lines.delete', \"Delete Line\"),\n alias: 'Delete Line',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 41 /* KeyCode.KeyK */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const ops = this._getLinesToRemove(editor);\n const model = editor.getModel();\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n // Model is empty\n return;\n }\n let linesDeleted = 0;\n const edits = [];\n const cursorState = [];\n for (let i = 0, len = ops.length; i < len; i++) {\n const op = ops[i];\n let startLineNumber = op.startLineNumber;\n let endLineNumber = op.endLineNumber;\n let startColumn = 1;\n let endColumn = model.getLineMaxColumn(endLineNumber);\n if (endLineNumber < model.getLineCount()) {\n endLineNumber += 1;\n endColumn = 1;\n }\n else if (startLineNumber > 1) {\n startLineNumber -= 1;\n startColumn = model.getLineMaxColumn(startLineNumber);\n }\n edits.push(EditOperation.replace(new Selection(startLineNumber, startColumn, endLineNumber, endColumn), ''));\n cursorState.push(new Selection(startLineNumber - linesDeleted, op.positionColumn, startLineNumber - linesDeleted, op.positionColumn));\n linesDeleted += (op.endLineNumber - op.startLineNumber + 1);\n }\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits, cursorState);\n editor.pushUndoStop();\n }\n _getLinesToRemove(editor) {\n // Construct delete operations\n const operations = editor.getSelections().map((s) => {\n let endLineNumber = s.endLineNumber;\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n endLineNumber -= 1;\n }\n return {\n startLineNumber: s.startLineNumber,\n selectionStartColumn: s.selectionStartColumn,\n endLineNumber: endLineNumber,\n positionColumn: s.positionColumn\n };\n });\n // Sort delete operations\n operations.sort((a, b) => {\n if (a.startLineNumber === b.startLineNumber) {\n return a.endLineNumber - b.endLineNumber;\n }\n return a.startLineNumber - b.startLineNumber;\n });\n // Merge delete operations which are adjacent or overlapping\n const mergedOperations = [];\n let previousOperation = operations[0];\n for (let i = 1; i < operations.length; i++) {\n if (previousOperation.endLineNumber + 1 >= operations[i].startLineNumber) {\n // Merge current operations into the previous one\n previousOperation.endLineNumber = operations[i].endLineNumber;\n }\n else {\n // Push previous operation\n mergedOperations.push(previousOperation);\n previousOperation = operations[i];\n }\n }\n // Push the last operation\n mergedOperations.push(previousOperation);\n return mergedOperations;\n }\n}\nexport class IndentLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.indentLines',\n label: nls.localize('lines.indent', \"Indent Line\"),\n alias: 'Indent Line',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 89 /* KeyCode.BracketRight */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n const viewModel = editor._getViewModel();\n if (!viewModel) {\n return;\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, TypeOperations.indent(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n editor.pushUndoStop();\n }\n}\nclass OutdentLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.outdentLines',\n label: nls.localize('lines.outdent', \"Outdent Line\"),\n alias: 'Outdent Line',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 87 /* KeyCode.BracketLeft */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n CoreEditingCommands.Outdent.runEditorCommand(_accessor, editor, null);\n }\n}\nexport class InsertLineBeforeAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertLineBefore',\n label: nls.localize('lines.insertBefore', \"Insert Line Above\"),\n alias: 'Insert Line Above',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 3 /* KeyCode.Enter */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n const viewModel = editor._getViewModel();\n if (!viewModel) {\n return;\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, TypeOperations.lineInsertBefore(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n }\n}\nexport class InsertLineAfterAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertLineAfter',\n label: nls.localize('lines.insertAfter', \"Insert Line Below\"),\n alias: 'Insert Line Below',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 3 /* KeyCode.Enter */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n const viewModel = editor._getViewModel();\n if (!viewModel) {\n return;\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, TypeOperations.lineInsertAfter(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n }\n}\nexport class AbstractDeleteAllToBoundaryAction extends EditorAction {\n run(_accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const primaryCursor = editor.getSelection();\n const rangesToDelete = this._getRangesToDelete(editor);\n // merge overlapping selections\n const effectiveRanges = [];\n for (let i = 0, count = rangesToDelete.length - 1; i < count; i++) {\n const range = rangesToDelete[i];\n const nextRange = rangesToDelete[i + 1];\n if (Range.intersectRanges(range, nextRange) === null) {\n effectiveRanges.push(range);\n }\n else {\n rangesToDelete[i + 1] = Range.plusRange(range, nextRange);\n }\n }\n effectiveRanges.push(rangesToDelete[rangesToDelete.length - 1]);\n const endCursorState = this._getEndCursorState(primaryCursor, effectiveRanges);\n const edits = effectiveRanges.map(range => {\n return EditOperation.replace(range, '');\n });\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits, endCursorState);\n editor.pushUndoStop();\n }\n}\nexport class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction {\n constructor() {\n super({\n id: 'deleteAllLeft',\n label: nls.localize('lines.deleteAllLeft', \"Delete All Left\"),\n alias: 'Delete All Left',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 2048 /* KeyMod.CtrlCmd */ | 1 /* KeyCode.Backspace */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _getEndCursorState(primaryCursor, rangesToDelete) {\n let endPrimaryCursor = null;\n const endCursorState = [];\n let deletedLines = 0;\n rangesToDelete.forEach(range => {\n let endCursor;\n if (range.endColumn === 1 && deletedLines > 0) {\n const newStartLine = range.startLineNumber - deletedLines;\n endCursor = new Selection(newStartLine, range.startColumn, newStartLine, range.startColumn);\n }\n else {\n endCursor = new Selection(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\n }\n deletedLines += range.endLineNumber - range.startLineNumber;\n if (range.intersectRanges(primaryCursor)) {\n endPrimaryCursor = endCursor;\n }\n else {\n endCursorState.push(endCursor);\n }\n });\n if (endPrimaryCursor) {\n endCursorState.unshift(endPrimaryCursor);\n }\n return endCursorState;\n }\n _getRangesToDelete(editor) {\n const selections = editor.getSelections();\n if (selections === null) {\n return [];\n }\n let rangesToDelete = selections;\n const model = editor.getModel();\n if (model === null) {\n return [];\n }\n rangesToDelete.sort(Range.compareRangesUsingStarts);\n rangesToDelete = rangesToDelete.map(selection => {\n if (selection.isEmpty()) {\n if (selection.startColumn === 1) {\n const deleteFromLine = Math.max(1, selection.startLineNumber - 1);\n const deleteFromColumn = selection.startLineNumber === 1 ? 1 : model.getLineContent(deleteFromLine).length + 1;\n return new Range(deleteFromLine, deleteFromColumn, selection.startLineNumber, 1);\n }\n else {\n return new Range(selection.startLineNumber, 1, selection.startLineNumber, selection.startColumn);\n }\n }\n else {\n return new Range(selection.startLineNumber, 1, selection.endLineNumber, selection.endColumn);\n }\n });\n return rangesToDelete;\n }\n}\nexport class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction {\n constructor() {\n super({\n id: 'deleteAllRight',\n label: nls.localize('lines.deleteAllRight', \"Delete All Right\"),\n alias: 'Delete All Right',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 41 /* KeyCode.KeyK */, secondary: [2048 /* KeyMod.CtrlCmd */ | 20 /* KeyCode.Delete */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _getEndCursorState(primaryCursor, rangesToDelete) {\n let endPrimaryCursor = null;\n const endCursorState = [];\n for (let i = 0, len = rangesToDelete.length, offset = 0; i < len; i++) {\n const range = rangesToDelete[i];\n const endCursor = new Selection(range.startLineNumber - offset, range.startColumn, range.startLineNumber - offset, range.startColumn);\n if (range.intersectRanges(primaryCursor)) {\n endPrimaryCursor = endCursor;\n }\n else {\n endCursorState.push(endCursor);\n }\n }\n if (endPrimaryCursor) {\n endCursorState.unshift(endPrimaryCursor);\n }\n return endCursorState;\n }\n _getRangesToDelete(editor) {\n const model = editor.getModel();\n if (model === null) {\n return [];\n }\n const selections = editor.getSelections();\n if (selections === null) {\n return [];\n }\n const rangesToDelete = selections.map((sel) => {\n if (sel.isEmpty()) {\n const maxColumn = model.getLineMaxColumn(sel.startLineNumber);\n if (sel.startColumn === maxColumn) {\n return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber + 1, 1);\n }\n else {\n return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber, maxColumn);\n }\n }\n return sel;\n });\n rangesToDelete.sort(Range.compareRangesUsingStarts);\n return rangesToDelete;\n }\n}\nexport class JoinLinesAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.joinLines',\n label: nls.localize('lines.joinLines', \"Join Lines\"),\n alias: 'Join Lines',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 40 /* KeyCode.KeyJ */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor) {\n const selections = editor.getSelections();\n if (selections === null) {\n return;\n }\n let primaryCursor = editor.getSelection();\n if (primaryCursor === null) {\n return;\n }\n selections.sort(Range.compareRangesUsingStarts);\n const reducedSelections = [];\n const lastSelection = selections.reduce((previousValue, currentValue) => {\n if (previousValue.isEmpty()) {\n if (previousValue.endLineNumber === currentValue.startLineNumber) {\n if (primaryCursor.equalsSelection(previousValue)) {\n primaryCursor = currentValue;\n }\n return currentValue;\n }\n if (currentValue.startLineNumber > previousValue.endLineNumber + 1) {\n reducedSelections.push(previousValue);\n return currentValue;\n }\n else {\n return new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n }\n }\n else {\n if (currentValue.startLineNumber > previousValue.endLineNumber) {\n reducedSelections.push(previousValue);\n return currentValue;\n }\n else {\n return new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n }\n }\n });\n reducedSelections.push(lastSelection);\n const model = editor.getModel();\n if (model === null) {\n return;\n }\n const edits = [];\n const endCursorState = [];\n let endPrimaryCursor = primaryCursor;\n let lineOffset = 0;\n for (let i = 0, len = reducedSelections.length; i < len; i++) {\n const selection = reducedSelections[i];\n const startLineNumber = selection.startLineNumber;\n const startColumn = 1;\n let columnDeltaOffset = 0;\n let endLineNumber, endColumn;\n const selectionEndPositionOffset = model.getLineContent(selection.endLineNumber).length - selection.endColumn;\n if (selection.isEmpty() || selection.startLineNumber === selection.endLineNumber) {\n const position = selection.getStartPosition();\n if (position.lineNumber < model.getLineCount()) {\n endLineNumber = startLineNumber + 1;\n endColumn = model.getLineMaxColumn(endLineNumber);\n }\n else {\n endLineNumber = position.lineNumber;\n endColumn = model.getLineMaxColumn(position.lineNumber);\n }\n }\n else {\n endLineNumber = selection.endLineNumber;\n endColumn = model.getLineMaxColumn(endLineNumber);\n }\n let trimmedLinesContent = model.getLineContent(startLineNumber);\n for (let i = startLineNumber + 1; i <= endLineNumber; i++) {\n const lineText = model.getLineContent(i);\n const firstNonWhitespaceIdx = model.getLineFirstNonWhitespaceColumn(i);\n if (firstNonWhitespaceIdx >= 1) {\n let insertSpace = true;\n if (trimmedLinesContent === '') {\n insertSpace = false;\n }\n if (insertSpace && (trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === ' ' ||\n trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === '\\t')) {\n insertSpace = false;\n trimmedLinesContent = trimmedLinesContent.replace(/[\\s\\uFEFF\\xA0]+$/g, ' ');\n }\n const lineTextWithoutIndent = lineText.substr(firstNonWhitespaceIdx - 1);\n trimmedLinesContent += (insertSpace ? ' ' : '') + lineTextWithoutIndent;\n if (insertSpace) {\n columnDeltaOffset = lineTextWithoutIndent.length + 1;\n }\n else {\n columnDeltaOffset = lineTextWithoutIndent.length;\n }\n }\n else {\n columnDeltaOffset = 0;\n }\n }\n const deleteSelection = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n if (!deleteSelection.isEmpty()) {\n let resultSelection;\n if (selection.isEmpty()) {\n edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n resultSelection = new Selection(deleteSelection.startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1, startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1);\n }\n else {\n if (selection.startLineNumber === selection.endLineNumber) {\n edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n resultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn, selection.endLineNumber - lineOffset, selection.endColumn);\n }\n else {\n edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n resultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn, selection.startLineNumber - lineOffset, trimmedLinesContent.length - selectionEndPositionOffset);\n }\n }\n if (Range.intersectRanges(deleteSelection, primaryCursor) !== null) {\n endPrimaryCursor = resultSelection;\n }\n else {\n endCursorState.push(resultSelection);\n }\n }\n lineOffset += deleteSelection.endLineNumber - deleteSelection.startLineNumber;\n }\n endCursorState.unshift(endPrimaryCursor);\n editor.pushUndoStop();\n editor.executeEdits(this.id, edits, endCursorState);\n editor.pushUndoStop();\n }\n}\nexport class TransposeAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.transpose',\n label: nls.localize('editor.transpose', \"Transpose characters around the cursor\"),\n alias: 'Transpose characters around the cursor',\n precondition: EditorContextKeys.writable\n });\n }\n run(_accessor, editor) {\n const selections = editor.getSelections();\n if (selections === null) {\n return;\n }\n const model = editor.getModel();\n if (model === null) {\n return;\n }\n const commands = [];\n for (let i = 0, len = selections.length; i < len; i++) {\n const selection = selections[i];\n if (!selection.isEmpty()) {\n continue;\n }\n const cursor = selection.getStartPosition();\n const maxColumn = model.getLineMaxColumn(cursor.lineNumber);\n if (cursor.column >= maxColumn) {\n if (cursor.lineNumber === model.getLineCount()) {\n continue;\n }\n // The cursor is at the end of current line and current line is not empty\n // then we transpose the character before the cursor and the line break if there is any following line.\n const deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1);\n const chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n commands.push(new ReplaceCommand(new Selection(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1), chars));\n }\n else {\n const deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber, cursor.column + 1);\n const chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n commands.push(new ReplaceCommandThatPreservesSelection(deleteSelection, chars, new Selection(cursor.lineNumber, cursor.column + 1, cursor.lineNumber, cursor.column + 1)));\n }\n }\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nexport class AbstractCaseAction extends EditorAction {\n run(_accessor, editor) {\n const selections = editor.getSelections();\n if (selections === null) {\n return;\n }\n const model = editor.getModel();\n if (model === null) {\n return;\n }\n const wordSeparators = editor.getOption(119 /* EditorOption.wordSeparators */);\n const textEdits = [];\n for (const selection of selections) {\n if (selection.isEmpty()) {\n const cursor = selection.getStartPosition();\n const word = editor.getConfiguredWordAtPosition(cursor);\n if (!word) {\n continue;\n }\n const wordRange = new Range(cursor.lineNumber, word.startColumn, cursor.lineNumber, word.endColumn);\n const text = model.getValueInRange(wordRange);\n textEdits.push(EditOperation.replace(wordRange, this._modifyText(text, wordSeparators)));\n }\n else {\n const text = model.getValueInRange(selection);\n textEdits.push(EditOperation.replace(selection, this._modifyText(text, wordSeparators)));\n }\n }\n editor.pushUndoStop();\n editor.executeEdits(this.id, textEdits);\n editor.pushUndoStop();\n }\n}\nexport class UpperCaseAction extends AbstractCaseAction {\n constructor() {\n super({\n id: 'editor.action.transformToUppercase',\n label: nls.localize('editor.transformToUppercase', \"Transform to Uppercase\"),\n alias: 'Transform to Uppercase',\n precondition: EditorContextKeys.writable\n });\n }\n _modifyText(text, wordSeparators) {\n return text.toLocaleUpperCase();\n }\n}\nexport class LowerCaseAction extends AbstractCaseAction {\n constructor() {\n super({\n id: 'editor.action.transformToLowercase',\n label: nls.localize('editor.transformToLowercase', \"Transform to Lowercase\"),\n alias: 'Transform to Lowercase',\n precondition: EditorContextKeys.writable\n });\n }\n _modifyText(text, wordSeparators) {\n return text.toLocaleLowerCase();\n }\n}\nclass BackwardsCompatibleRegExp {\n constructor(_pattern, _flags) {\n this._pattern = _pattern;\n this._flags = _flags;\n this._actual = null;\n this._evaluated = false;\n }\n get() {\n if (!this._evaluated) {\n this._evaluated = true;\n try {\n this._actual = new RegExp(this._pattern, this._flags);\n }\n catch (err) {\n // this browser does not support this regular expression\n }\n }\n return this._actual;\n }\n isSupported() {\n return (this.get() !== null);\n }\n}\nexport class TitleCaseAction extends AbstractCaseAction {\n constructor() {\n super({\n id: 'editor.action.transformToTitlecase',\n label: nls.localize('editor.transformToTitlecase', \"Transform to Title Case\"),\n alias: 'Transform to Title Case',\n precondition: EditorContextKeys.writable\n });\n }\n _modifyText(text, wordSeparators) {\n const titleBoundary = TitleCaseAction.titleBoundary.get();\n if (!titleBoundary) {\n // cannot support this\n return text;\n }\n return text\n .toLocaleLowerCase()\n .replace(titleBoundary, (b) => b.toLocaleUpperCase());\n }\n}\nTitleCaseAction.titleBoundary = new BackwardsCompatibleRegExp('(^|[^\\\\p{L}\\\\p{N}\\']|((^|\\\\P{L})\\'))\\\\p{L}', 'gmu');\nexport class SnakeCaseAction extends AbstractCaseAction {\n constructor() {\n super({\n id: 'editor.action.transformToSnakecase',\n label: nls.localize('editor.transformToSnakecase', \"Transform to Snake Case\"),\n alias: 'Transform to Snake Case',\n precondition: EditorContextKeys.writable\n });\n }\n _modifyText(text, wordSeparators) {\n const caseBoundary = SnakeCaseAction.caseBoundary.get();\n const singleLetters = SnakeCaseAction.singleLetters.get();\n if (!caseBoundary || !singleLetters) {\n // cannot support this\n return text;\n }\n return (text\n .replace(caseBoundary, '$1_$2')\n .replace(singleLetters, '$1_$2$3')\n .toLocaleLowerCase());\n }\n}\nSnakeCaseAction.caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\nSnakeCaseAction.singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu})(\\\\p{Ll})', 'gmu');\nexport class KebabCaseAction extends AbstractCaseAction {\n constructor() {\n super({\n id: 'editor.action.transformToKebabcase',\n label: nls.localize('editor.transformToKebabcase', 'Transform to Kebab Case'),\n alias: 'Transform to Kebab Case',\n precondition: EditorContextKeys.writable\n });\n }\n static isSupported() {\n const areAllRegexpsSupported = [\n this.caseBoundary,\n this.singleLetters,\n this.underscoreBoundary,\n ].every((regexp) => regexp.isSupported());\n return areAllRegexpsSupported;\n }\n _modifyText(text, _) {\n const caseBoundary = KebabCaseAction.caseBoundary.get();\n const singleLetters = KebabCaseAction.singleLetters.get();\n const underscoreBoundary = KebabCaseAction.underscoreBoundary.get();\n if (!caseBoundary || !singleLetters || !underscoreBoundary) {\n // one or more regexps aren't supported\n return text;\n }\n return text\n .replace(underscoreBoundary, '$1-$3')\n .replace(caseBoundary, '$1-$2')\n .replace(singleLetters, '$1-$2')\n .toLocaleLowerCase();\n }\n}\nKebabCaseAction.caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\nKebabCaseAction.singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu}\\\\p{Ll})', 'gmu');\nKebabCaseAction.underscoreBoundary = new BackwardsCompatibleRegExp('(\\\\S)(_)(\\\\S)', 'gm');\nregisterEditorAction(CopyLinesUpAction);\nregisterEditorAction(CopyLinesDownAction);\nregisterEditorAction(DuplicateSelectionAction);\nregisterEditorAction(MoveLinesUpAction);\nregisterEditorAction(MoveLinesDownAction);\nregisterEditorAction(SortLinesAscendingAction);\nregisterEditorAction(SortLinesDescendingAction);\nregisterEditorAction(DeleteDuplicateLinesAction);\nregisterEditorAction(TrimTrailingWhitespaceAction);\nregisterEditorAction(DeleteLinesAction);\nregisterEditorAction(IndentLinesAction);\nregisterEditorAction(OutdentLinesAction);\nregisterEditorAction(InsertLineBeforeAction);\nregisterEditorAction(InsertLineAfterAction);\nregisterEditorAction(DeleteAllLeftAction);\nregisterEditorAction(DeleteAllRightAction);\nregisterEditorAction(JoinLinesAction);\nregisterEditorAction(TransposeAction);\nregisterEditorAction(UpperCaseAction);\nregisterEditorAction(LowerCaseAction);\nif (SnakeCaseAction.caseBoundary.isSupported() && SnakeCaseAction.singleLetters.isSupported()) {\n registerEditorAction(SnakeCaseAction);\n}\nif (TitleCaseAction.titleBoundary.isSupported()) {\n registerEditorAction(TitleCaseAction);\n}\nif (KebabCaseAction.isSupported()) {\n registerEditorAction(KebabCaseAction);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { createCancelablePromise, Delayer, first } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { isCancellationError, onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nexport const CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE = new RawContextKey('LinkedEditingInputVisible', false);\nconst DECORATION_CLASS_NAME = 'linked-editing-decoration';\nlet LinkedEditingContribution = class LinkedEditingContribution extends Disposable {\n constructor(editor, contextKeyService, languageFeaturesService, languageConfigurationService, languageFeatureDebounceService) {\n super();\n this.languageConfigurationService = languageConfigurationService;\n this._syncRangesToken = 0;\n this._localToDispose = this._register(new DisposableStore());\n this._editor = editor;\n this._providers = languageFeaturesService.linkedEditingRangeProvider;\n this._enabled = false;\n this._visibleContextKey = CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n this._debounceInformation = languageFeatureDebounceService.for(this._providers, 'Linked Editing', { min: 200 });\n this._currentDecorations = this._editor.createDecorationsCollection();\n this._languageWordPattern = null;\n this._currentWordPattern = null;\n this._ignoreChangeEvent = false;\n this._localToDispose = this._register(new DisposableStore());\n this._rangeUpdateTriggerPromise = null;\n this._rangeSyncTriggerPromise = null;\n this._currentRequest = null;\n this._currentRequestPosition = null;\n this._currentRequestModelVersion = null;\n this._register(this._editor.onDidChangeModel(() => this.reinitialize(true)));\n this._register(this._editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(64 /* EditorOption.linkedEditing */) || e.hasChanged(84 /* EditorOption.renameOnType */)) {\n this.reinitialize(false);\n }\n }));\n this._register(this._providers.onDidChange(() => this.reinitialize(false)));\n this._register(this._editor.onDidChangeModelLanguage(() => this.reinitialize(true)));\n this.reinitialize(true);\n }\n static get(editor) {\n return editor.getContribution(LinkedEditingContribution.ID);\n }\n reinitialize(forceRefresh) {\n const model = this._editor.getModel();\n const isEnabled = model !== null && (this._editor.getOption(64 /* EditorOption.linkedEditing */) || this._editor.getOption(84 /* EditorOption.renameOnType */)) && this._providers.has(model);\n if (isEnabled === this._enabled && !forceRefresh) {\n return;\n }\n this._enabled = isEnabled;\n this.clearRanges();\n this._localToDispose.clear();\n if (!isEnabled || model === null) {\n return;\n }\n this._localToDispose.add(Event.runAndSubscribe(model.onDidChangeLanguageConfiguration, () => {\n this._languageWordPattern = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n }));\n const rangeUpdateScheduler = new Delayer(this._debounceInformation.get(model));\n const triggerRangeUpdate = () => {\n var _a;\n this._rangeUpdateTriggerPromise = rangeUpdateScheduler.trigger(() => this.updateRanges(), (_a = this._debounceDuration) !== null && _a !== void 0 ? _a : this._debounceInformation.get(model));\n };\n const rangeSyncScheduler = new Delayer(0);\n const triggerRangeSync = (token) => {\n this._rangeSyncTriggerPromise = rangeSyncScheduler.trigger(() => this._syncRanges(token));\n };\n this._localToDispose.add(this._editor.onDidChangeCursorPosition(() => {\n triggerRangeUpdate();\n }));\n this._localToDispose.add(this._editor.onDidChangeModelContent((e) => {\n if (!this._ignoreChangeEvent) {\n if (this._currentDecorations.length > 0) {\n const referenceRange = this._currentDecorations.getRange(0);\n if (referenceRange && e.changes.every(c => referenceRange.intersectRanges(c.range))) {\n triggerRangeSync(this._syncRangesToken);\n return;\n }\n }\n }\n triggerRangeUpdate();\n }));\n this._localToDispose.add({\n dispose: () => {\n rangeUpdateScheduler.dispose();\n rangeSyncScheduler.dispose();\n }\n });\n this.updateRanges();\n }\n _syncRanges(token) {\n // dalayed invocation, make sure we're still on\n if (!this._editor.hasModel() || token !== this._syncRangesToken || this._currentDecorations.length === 0) {\n // nothing to do\n return;\n }\n const model = this._editor.getModel();\n const referenceRange = this._currentDecorations.getRange(0);\n if (!referenceRange || referenceRange.startLineNumber !== referenceRange.endLineNumber) {\n return this.clearRanges();\n }\n const referenceValue = model.getValueInRange(referenceRange);\n if (this._currentWordPattern) {\n const match = referenceValue.match(this._currentWordPattern);\n const matchLength = match ? match[0].length : 0;\n if (matchLength !== referenceValue.length) {\n return this.clearRanges();\n }\n }\n const edits = [];\n for (let i = 1, len = this._currentDecorations.length; i < len; i++) {\n const mirrorRange = this._currentDecorations.getRange(i);\n if (!mirrorRange) {\n continue;\n }\n if (mirrorRange.startLineNumber !== mirrorRange.endLineNumber) {\n edits.push({\n range: mirrorRange,\n text: referenceValue\n });\n }\n else {\n let oldValue = model.getValueInRange(mirrorRange);\n let newValue = referenceValue;\n let rangeStartColumn = mirrorRange.startColumn;\n let rangeEndColumn = mirrorRange.endColumn;\n const commonPrefixLength = strings.commonPrefixLength(oldValue, newValue);\n rangeStartColumn += commonPrefixLength;\n oldValue = oldValue.substr(commonPrefixLength);\n newValue = newValue.substr(commonPrefixLength);\n const commonSuffixLength = strings.commonSuffixLength(oldValue, newValue);\n rangeEndColumn -= commonSuffixLength;\n oldValue = oldValue.substr(0, oldValue.length - commonSuffixLength);\n newValue = newValue.substr(0, newValue.length - commonSuffixLength);\n if (rangeStartColumn !== rangeEndColumn || newValue.length !== 0) {\n edits.push({\n range: new Range(mirrorRange.startLineNumber, rangeStartColumn, mirrorRange.endLineNumber, rangeEndColumn),\n text: newValue\n });\n }\n }\n }\n if (edits.length === 0) {\n return;\n }\n try {\n this._editor.popUndoStop();\n this._ignoreChangeEvent = true;\n const prevEditOperationType = this._editor._getViewModel().getPrevEditOperationType();\n this._editor.executeEdits('linkedEditing', edits);\n this._editor._getViewModel().setPrevEditOperationType(prevEditOperationType);\n }\n finally {\n this._ignoreChangeEvent = false;\n }\n }\n dispose() {\n this.clearRanges();\n super.dispose();\n }\n clearRanges() {\n this._visibleContextKey.set(false);\n this._currentDecorations.clear();\n if (this._currentRequest) {\n this._currentRequest.cancel();\n this._currentRequest = null;\n this._currentRequestPosition = null;\n }\n }\n updateRanges(force = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._editor.hasModel()) {\n this.clearRanges();\n return;\n }\n const position = this._editor.getPosition();\n if (!this._enabled && !force || this._editor.getSelections().length > 1) {\n // disabled or multicursor\n this.clearRanges();\n return;\n }\n const model = this._editor.getModel();\n const modelVersionId = model.getVersionId();\n if (this._currentRequestPosition && this._currentRequestModelVersion === modelVersionId) {\n if (position.equals(this._currentRequestPosition)) {\n return; // same position\n }\n if (this._currentDecorations.length > 0) {\n const range = this._currentDecorations.getRange(0);\n if (range && range.containsPosition(position)) {\n return; // just moving inside the existing primary range\n }\n }\n }\n this._currentRequestPosition = position;\n this._currentRequestModelVersion = modelVersionId;\n const request = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\n try {\n const sw = new StopWatch(false);\n const response = yield getLinkedEditingRanges(this._providers, model, position, token);\n this._debounceInformation.update(model, sw.elapsed());\n if (request !== this._currentRequest) {\n return;\n }\n this._currentRequest = null;\n if (modelVersionId !== model.getVersionId()) {\n return;\n }\n let ranges = [];\n if (response === null || response === void 0 ? void 0 : response.ranges) {\n ranges = response.ranges;\n }\n this._currentWordPattern = (response === null || response === void 0 ? void 0 : response.wordPattern) || this._languageWordPattern;\n let foundReferenceRange = false;\n for (let i = 0, len = ranges.length; i < len; i++) {\n if (Range.containsPosition(ranges[i], position)) {\n foundReferenceRange = true;\n if (i !== 0) {\n const referenceRange = ranges[i];\n ranges.splice(i, 1);\n ranges.unshift(referenceRange);\n }\n break;\n }\n }\n if (!foundReferenceRange) {\n // Cannot do linked editing if the ranges are not where the cursor is...\n this.clearRanges();\n return;\n }\n const decorations = ranges.map(range => ({ range: range, options: LinkedEditingContribution.DECORATION }));\n this._visibleContextKey.set(true);\n this._currentDecorations.set(decorations);\n this._syncRangesToken++; // cancel any pending syncRanges call\n }\n catch (err) {\n if (!isCancellationError(err)) {\n onUnexpectedError(err);\n }\n if (this._currentRequest === request || !this._currentRequest) {\n // stop if we are still the latest request\n this.clearRanges();\n }\n }\n }));\n this._currentRequest = request;\n return request;\n });\n }\n};\nLinkedEditingContribution.ID = 'editor.contrib.linkedEditing';\nLinkedEditingContribution.DECORATION = ModelDecorationOptions.register({\n description: 'linked-editing',\n stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */,\n className: DECORATION_CLASS_NAME\n});\nLinkedEditingContribution = __decorate([\n __param(1, IContextKeyService),\n __param(2, ILanguageFeaturesService),\n __param(3, ILanguageConfigurationService),\n __param(4, ILanguageFeatureDebounceService)\n], LinkedEditingContribution);\nexport { LinkedEditingContribution };\nexport class LinkedEditingAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.linkedEditing',\n label: nls.localize('linkedEditing.label', \"Start Linked Editing\"),\n alias: 'Start Linked Editing',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 60 /* KeyCode.F2 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n runCommand(accessor, args) {\n const editorService = accessor.get(ICodeEditorService);\n const [uri, pos] = Array.isArray(args) && args || [undefined, undefined];\n if (URI.isUri(uri) && Position.isIPosition(pos)) {\n return editorService.openCodeEditor({ resource: uri }, editorService.getActiveCodeEditor()).then(editor => {\n if (!editor) {\n return;\n }\n editor.setPosition(pos);\n editor.invokeWithinContext(accessor => {\n this.reportTelemetry(accessor, editor);\n return this.run(accessor, editor);\n });\n }, onUnexpectedError);\n }\n return super.runCommand(accessor, args);\n }\n run(_accessor, editor) {\n const controller = LinkedEditingContribution.get(editor);\n if (controller) {\n return Promise.resolve(controller.updateRanges(true));\n }\n return Promise.resolve();\n }\n}\nconst LinkedEditingCommand = EditorCommand.bindToContribution(LinkedEditingContribution.get);\nregisterEditorCommand(new LinkedEditingCommand({\n id: 'cancelLinkedEditingInput',\n precondition: CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE,\n handler: x => x.clearRanges(),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nfunction getLinkedEditingRanges(providers, model, position, token) {\n const orderedByScore = providers.ordered(model);\n // in order of score ask the linked editing range provider\n // until someone response with a good result\n // (good = not null)\n return first(orderedByScore.map(provider => () => __awaiter(this, void 0, void 0, function* () {\n try {\n return yield provider.provideLinkedEditingRanges(model, position, token);\n }\n catch (e) {\n onUnexpectedExternalError(e);\n return undefined;\n }\n })), result => !!result && arrays.isNonEmptyArray(result === null || result === void 0 ? void 0 : result.ranges));\n}\nexport const editorLinkedEditingBackground = registerColor('editor.linkedEditingBackground', { dark: Color.fromHex('#f00').transparent(0.3), light: Color.fromHex('#f00').transparent(0.3), hcDark: Color.fromHex('#f00').transparent(0.3), hcLight: Color.white }, nls.localize('editorLinkedEditingBackground', 'Background color when the editor auto renames on type.'));\nregisterThemingParticipant((theme, collector) => {\n const editorLinkedEditingBackgroundColor = theme.getColor(editorLinkedEditingBackground);\n if (editorLinkedEditingBackgroundColor) {\n collector.addRule(`.monaco-editor .${DECORATION_CLASS_NAME} { background: ${editorLinkedEditingBackgroundColor}; border-left-color: ${editorLinkedEditingBackgroundColor}; }`);\n }\n});\nregisterModelAndPositionCommand('_executeLinkedEditingProvider', (_accessor, model, position) => {\n const { linkedEditingRangeProvider } = _accessor.get(ILanguageFeaturesService);\n return getLinkedEditingRanges(linkedEditingRangeProvider, model, position, CancellationToken.None);\n});\nregisterEditorContribution(LinkedEditingContribution.ID, LinkedEditingContribution);\nregisterEditorAction(LinkedEditingAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { coalesce } from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { DisposableStore, isDisposable } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class Link {\n constructor(link, provider) {\n this._link = link;\n this._provider = provider;\n }\n toJSON() {\n return {\n range: this.range,\n url: this.url,\n tooltip: this.tooltip\n };\n }\n get range() {\n return this._link.range;\n }\n get url() {\n return this._link.url;\n }\n get tooltip() {\n return this._link.tooltip;\n }\n resolve(token) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._link.url) {\n return this._link.url;\n }\n if (typeof this._provider.resolveLink === 'function') {\n return Promise.resolve(this._provider.resolveLink(this._link, token)).then(value => {\n this._link = value || this._link;\n if (this._link.url) {\n // recurse\n return this.resolve(token);\n }\n return Promise.reject(new Error('missing'));\n });\n }\n return Promise.reject(new Error('missing'));\n });\n }\n}\nexport class LinksList {\n constructor(tuples) {\n this._disposables = new DisposableStore();\n let links = [];\n for (const [list, provider] of tuples) {\n // merge all links\n const newLinks = list.links.map(link => new Link(link, provider));\n links = LinksList._union(links, newLinks);\n // register disposables\n if (isDisposable(list)) {\n this._disposables.add(list);\n }\n }\n this.links = links;\n }\n dispose() {\n this._disposables.dispose();\n this.links.length = 0;\n }\n static _union(oldLinks, newLinks) {\n // reunite oldLinks with newLinks and remove duplicates\n const result = [];\n let oldIndex;\n let oldLen;\n let newIndex;\n let newLen;\n for (oldIndex = 0, newIndex = 0, oldLen = oldLinks.length, newLen = newLinks.length; oldIndex < oldLen && newIndex < newLen;) {\n const oldLink = oldLinks[oldIndex];\n const newLink = newLinks[newIndex];\n if (Range.areIntersectingOrTouching(oldLink.range, newLink.range)) {\n // Remove the oldLink\n oldIndex++;\n continue;\n }\n const comparisonResult = Range.compareRangesUsingStarts(oldLink.range, newLink.range);\n if (comparisonResult < 0) {\n // oldLink is before\n result.push(oldLink);\n oldIndex++;\n }\n else {\n // newLink is before\n result.push(newLink);\n newIndex++;\n }\n }\n for (; oldIndex < oldLen; oldIndex++) {\n result.push(oldLinks[oldIndex]);\n }\n for (; newIndex < newLen; newIndex++) {\n result.push(newLinks[newIndex]);\n }\n return result;\n }\n}\nexport function getLinks(providers, model, token) {\n const lists = [];\n // ask all providers for links in parallel\n const promises = providers.ordered(model).reverse().map((provider, i) => {\n return Promise.resolve(provider.provideLinks(model, token)).then(result => {\n if (result) {\n lists[i] = [result, provider];\n }\n }, onUnexpectedExternalError);\n });\n return Promise.all(promises).then(() => {\n const result = new LinksList(coalesce(lists));\n if (!token.isCancellationRequested) {\n return result;\n }\n result.dispose();\n return new LinksList([]);\n });\n}\nCommandsRegistry.registerCommand('_executeLinkProvider', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\n let [uri, resolveCount] = args;\n assertType(uri instanceof URI);\n if (typeof resolveCount !== 'number') {\n resolveCount = 0;\n }\n const { linkProvider } = accessor.get(ILanguageFeaturesService);\n const model = accessor.get(IModelService).getModel(uri);\n if (!model) {\n return [];\n }\n const list = yield getLinks(linkProvider, model, CancellationToken.None);\n if (!list) {\n return [];\n }\n // resolve links\n for (let i = 0; i < Math.min(resolveCount, list.links.length); i++) {\n yield list.links[i].resolve(CancellationToken.None);\n }\n const result = list.links.slice(0);\n list.dispose();\n return result;\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../../base/common/network.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport * as resources from '../../../../base/common/resources.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport './links.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ClickLinkGesture } from '../../gotoSymbol/browser/link/clickLinkGesture.js';\nimport { getLinks } from './getLinks.js';\nimport * as nls from '../../../../nls.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { editorActiveLinkForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nlet LinkDetector = class LinkDetector extends Disposable {\n constructor(editor, openerService, notificationService, languageFeaturesService, languageFeatureDebounceService) {\n super();\n this.editor = editor;\n this.openerService = openerService;\n this.notificationService = notificationService;\n this.languageFeaturesService = languageFeaturesService;\n this.providers = this.languageFeaturesService.linkProvider;\n this.debounceInformation = languageFeatureDebounceService.for(this.providers, 'Links', { min: 1000, max: 4000 });\n this.computeLinks = this._register(new RunOnceScheduler(() => this.computeLinksNow(), 1000));\n this.computePromise = null;\n this.activeLinksList = null;\n this.currentOccurrences = {};\n this.activeLinkDecorationId = null;\n const clickLinkGesture = this._register(new ClickLinkGesture(editor));\n this._register(clickLinkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\n this._onEditorMouseMove(mouseEvent, keyboardEvent);\n }));\n this._register(clickLinkGesture.onExecute((e) => {\n this.onEditorMouseUp(e);\n }));\n this._register(clickLinkGesture.onCancel((e) => {\n this.cleanUpActiveLinkDecoration();\n }));\n this._register(editor.onDidChangeConfiguration((e) => {\n if (!e.hasChanged(65 /* EditorOption.links */)) {\n return;\n }\n // Remove any links (for the getting disabled case)\n this.updateDecorations([]);\n // Stop any computation (for the getting disabled case)\n this.stop();\n // Start computing (for the getting enabled case)\n this.computeLinks.schedule(0);\n }));\n this._register(editor.onDidChangeModelContent((e) => {\n if (!this.editor.hasModel()) {\n return;\n }\n this.computeLinks.schedule(this.debounceInformation.get(this.editor.getModel()));\n }));\n this._register(editor.onDidChangeModel((e) => {\n this.currentOccurrences = {};\n this.activeLinkDecorationId = null;\n this.stop();\n this.computeLinks.schedule(0);\n }));\n this._register(editor.onDidChangeModelLanguage((e) => {\n this.stop();\n this.computeLinks.schedule(0);\n }));\n this._register(this.providers.onDidChange((e) => {\n this.stop();\n this.computeLinks.schedule(0);\n }));\n this.computeLinks.schedule(0);\n }\n static get(editor) {\n return editor.getContribution(LinkDetector.ID);\n }\n computeLinksNow() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.editor.hasModel() || !this.editor.getOption(65 /* EditorOption.links */)) {\n return;\n }\n const model = this.editor.getModel();\n if (!this.providers.has(model)) {\n return;\n }\n if (this.activeLinksList) {\n this.activeLinksList.dispose();\n this.activeLinksList = null;\n }\n this.computePromise = createCancelablePromise(token => getLinks(this.providers, model, token));\n try {\n const sw = new StopWatch(false);\n this.activeLinksList = yield this.computePromise;\n this.debounceInformation.update(model, sw.elapsed());\n if (model.isDisposed()) {\n return;\n }\n this.updateDecorations(this.activeLinksList.links);\n }\n catch (err) {\n onUnexpectedError(err);\n }\n finally {\n this.computePromise = null;\n }\n });\n }\n updateDecorations(links) {\n const useMetaKey = (this.editor.getOption(72 /* EditorOption.multiCursorModifier */) === 'altKey');\n const oldDecorations = [];\n const keys = Object.keys(this.currentOccurrences);\n for (const decorationId of keys) {\n const occurence = this.currentOccurrences[decorationId];\n oldDecorations.push(occurence.decorationId);\n }\n const newDecorations = [];\n if (links) {\n // Not sure why this is sometimes null\n for (const link of links) {\n newDecorations.push(LinkOccurrence.decoration(link, useMetaKey));\n }\n }\n this.editor.changeDecorations((changeAccessor) => {\n const decorations = changeAccessor.deltaDecorations(oldDecorations, newDecorations);\n this.currentOccurrences = {};\n this.activeLinkDecorationId = null;\n for (let i = 0, len = decorations.length; i < len; i++) {\n const occurence = new LinkOccurrence(links[i], decorations[i]);\n this.currentOccurrences[occurence.decorationId] = occurence;\n }\n });\n }\n _onEditorMouseMove(mouseEvent, withKey) {\n const useMetaKey = (this.editor.getOption(72 /* EditorOption.multiCursorModifier */) === 'altKey');\n if (this.isEnabled(mouseEvent, withKey)) {\n this.cleanUpActiveLinkDecoration(); // always remove previous link decoration as their can only be one\n const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\n if (occurrence) {\n this.editor.changeDecorations((changeAccessor) => {\n occurrence.activate(changeAccessor, useMetaKey);\n this.activeLinkDecorationId = occurrence.decorationId;\n });\n }\n }\n else {\n this.cleanUpActiveLinkDecoration();\n }\n }\n cleanUpActiveLinkDecoration() {\n const useMetaKey = (this.editor.getOption(72 /* EditorOption.multiCursorModifier */) === 'altKey');\n if (this.activeLinkDecorationId) {\n const occurrence = this.currentOccurrences[this.activeLinkDecorationId];\n if (occurrence) {\n this.editor.changeDecorations((changeAccessor) => {\n occurrence.deactivate(changeAccessor, useMetaKey);\n });\n }\n this.activeLinkDecorationId = null;\n }\n }\n onEditorMouseUp(mouseEvent) {\n if (!this.isEnabled(mouseEvent)) {\n return;\n }\n const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\n if (!occurrence) {\n return;\n }\n this.openLinkOccurrence(occurrence, mouseEvent.hasSideBySideModifier, true /* from user gesture */);\n }\n openLinkOccurrence(occurrence, openToSide, fromUserGesture = false) {\n if (!this.openerService) {\n return;\n }\n const { link } = occurrence;\n link.resolve(CancellationToken.None).then(uri => {\n // Support for relative file URIs of the shape file://./relativeFile.txt or file:///./relativeFile.txt\n if (typeof uri === 'string' && this.editor.hasModel()) {\n const modelUri = this.editor.getModel().uri;\n if (modelUri.scheme === Schemas.file && uri.startsWith(`${Schemas.file}:`)) {\n const parsedUri = URI.parse(uri);\n if (parsedUri.scheme === Schemas.file) {\n const fsPath = resources.originalFSPath(parsedUri);\n let relativePath = null;\n if (fsPath.startsWith('/./')) {\n relativePath = `.${fsPath.substr(1)}`;\n }\n else if (fsPath.startsWith('//./')) {\n relativePath = `.${fsPath.substr(2)}`;\n }\n if (relativePath) {\n uri = resources.joinPath(modelUri, relativePath);\n }\n }\n }\n }\n return this.openerService.open(uri, { openToSide, fromUserGesture, allowContributedOpeners: true, allowCommands: true, fromWorkspace: true });\n }, err => {\n const messageOrError = err instanceof Error ? err.message : err;\n // different error cases\n if (messageOrError === 'invalid') {\n this.notificationService.warn(nls.localize('invalid.url', 'Failed to open this link because it is not well-formed: {0}', link.url.toString()));\n }\n else if (messageOrError === 'missing') {\n this.notificationService.warn(nls.localize('missing.url', 'Failed to open this link because its target is missing.'));\n }\n else {\n onUnexpectedError(err);\n }\n });\n }\n getLinkOccurrence(position) {\n if (!this.editor.hasModel() || !position) {\n return null;\n }\n const decorations = this.editor.getModel().getDecorationsInRange({\n startLineNumber: position.lineNumber,\n startColumn: position.column,\n endLineNumber: position.lineNumber,\n endColumn: position.column\n }, 0, true);\n for (const decoration of decorations) {\n const currentOccurrence = this.currentOccurrences[decoration.id];\n if (currentOccurrence) {\n return currentOccurrence;\n }\n }\n return null;\n }\n isEnabled(mouseEvent, withKey) {\n return Boolean((mouseEvent.target.type === 6 /* MouseTargetType.CONTENT_TEXT */)\n && (mouseEvent.hasTriggerModifier || (withKey && withKey.keyCodeIsTriggerKey)));\n }\n stop() {\n var _a;\n this.computeLinks.cancel();\n if (this.activeLinksList) {\n (_a = this.activeLinksList) === null || _a === void 0 ? void 0 : _a.dispose();\n this.activeLinksList = null;\n }\n if (this.computePromise) {\n this.computePromise.cancel();\n this.computePromise = null;\n }\n }\n dispose() {\n super.dispose();\n this.stop();\n }\n};\nLinkDetector.ID = 'editor.linkDetector';\nLinkDetector = __decorate([\n __param(1, IOpenerService),\n __param(2, INotificationService),\n __param(3, ILanguageFeaturesService),\n __param(4, ILanguageFeatureDebounceService)\n], LinkDetector);\nexport { LinkDetector };\nconst decoration = {\n general: ModelDecorationOptions.register({\n description: 'detected-link',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n collapseOnReplaceEdit: true,\n inlineClassName: 'detected-link'\n }),\n active: ModelDecorationOptions.register({\n description: 'detected-link-active',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n collapseOnReplaceEdit: true,\n inlineClassName: 'detected-link-active'\n })\n};\nclass LinkOccurrence {\n constructor(link, decorationId) {\n this.link = link;\n this.decorationId = decorationId;\n }\n static decoration(link, useMetaKey) {\n return {\n range: link.range,\n options: LinkOccurrence._getOptions(link, useMetaKey, false)\n };\n }\n static _getOptions(link, useMetaKey, isActive) {\n const options = Object.assign({}, (isActive ? decoration.active : decoration.general));\n options.hoverMessage = getHoverMessage(link, useMetaKey);\n return options;\n }\n activate(changeAccessor, useMetaKey) {\n changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, true));\n }\n deactivate(changeAccessor, useMetaKey) {\n changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, false));\n }\n}\nfunction getHoverMessage(link, useMetaKey) {\n const executeCmd = link.url && /^command:/i.test(link.url.toString());\n const label = link.tooltip\n ? link.tooltip\n : executeCmd\n ? nls.localize('links.navigate.executeCmd', 'Execute command')\n : nls.localize('links.navigate.follow', 'Follow link');\n const kb = useMetaKey\n ? platform.isMacintosh\n ? nls.localize('links.navigate.kb.meta.mac', \"cmd + click\")\n : nls.localize('links.navigate.kb.meta', \"ctrl + click\")\n : platform.isMacintosh\n ? nls.localize('links.navigate.kb.alt.mac', \"option + click\")\n : nls.localize('links.navigate.kb.alt', \"alt + click\");\n if (link.url) {\n let nativeLabel = '';\n if (/^command:/i.test(link.url.toString())) {\n // Don't show complete command arguments in the native tooltip\n const match = link.url.toString().match(/^command:([^?#]+)/);\n if (match) {\n const commandId = match[1];\n nativeLabel = nls.localize('tooltip.explanation', \"Execute command {0}\", commandId);\n }\n }\n const hoverMessage = new MarkdownString('', true)\n .appendLink(link.url.toString(true).replace(/ /g, '%20'), label, nativeLabel)\n .appendMarkdown(` (${kb})`);\n return hoverMessage;\n }\n else {\n return new MarkdownString().appendText(`${label} (${kb})`);\n }\n}\nclass OpenLinkAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.openLink',\n label: nls.localize('label', \"Open Link\"),\n alias: 'Open Link',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n const linkDetector = LinkDetector.get(editor);\n if (!linkDetector) {\n return;\n }\n if (!editor.hasModel()) {\n return;\n }\n const selections = editor.getSelections();\n for (const sel of selections) {\n const link = linkDetector.getLinkOccurrence(sel.getEndPosition());\n if (link) {\n linkDetector.openLinkOccurrence(link, false);\n }\n }\n }\n}\nregisterEditorContribution(LinkDetector.ID, LinkDetector);\nregisterEditorAction(OpenLinkAction);\nregisterThemingParticipant((theme, collector) => {\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\n if (activeLinkForeground) {\n collector.addRule(`.monaco-editor .detected-link-active { color: ${activeLinkForeground} !important; }`);\n }\n});\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2022, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n// ESM-uncomment-begin\nlet __marked_exports = {};\n(function() {\n function define(deps, factory) {\n factory(__marked_exports);\n }\n define.amd = true;\n// ESM-uncomment-end\n\n (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));\n})(this, (function (exports) { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n exports.defaults = getDefaults();\n function changeDefaults(newDefaults) {\n exports.defaults = newDefaults;\n }\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n /**\n * @param {string} html\n */\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n var caret = /(^|[^\\[])\\^/g;\n /**\n * @param {string | RegExp} regex\n * @param {string} opt\n */\n\n function edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n /**\n * @param {boolean} sanitize\n * @param {string} base\n * @param {string} href\n */\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n /**\n * @param {string} base\n * @param {string} href\n */\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n var noopTest = {\n exec: function noopTest() {}\n };\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n if (!cells[0].trim()) {\n cells.shift();\n }\n\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n }\n /**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param {string} str\n * @param {string} c\n * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.\n */\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.slice(0, l - suffLen);\n }\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n /**\n * @param {string} pattern\n * @param {number} count\n */\n\n function repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n function outputLink(cap, link, raw, lexer) {\n var href = link.href;\n var title = link.title ? escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n var token = {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n }\n\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: escape(text)\n };\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *>[ \\t]?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;\n var bull = cap[1].trim();\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n } // Get next list item\n\n\n var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))\"); // Check if current bullet point can start a new List Item\n\n while (src) {\n endEarly = false;\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n if (this.rules.block.hr.test(src)) {\n // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n\n raw = cap[0];\n src = src.substring(raw.length);\n line = cap[2].split('\\n', 1)[0];\n nextLine = src.split('\\n', 1)[0];\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n\n blankLine = false;\n\n if (!line && /^ *$/.test(nextLine)) {\n // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n\n if (!endEarly) {\n var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])((?: [^\\\\n]*)?(?:\\\\n|$))\");\n var hrRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)\"); // Check if following lines should be included in List Item\n\n while (src) {\n rawLine = src.split('\\n', 1)[0];\n line = rawLine; // Re-align to follow commonmark nesting rules\n\n if (this.options.pedantic) {\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n } // End list item if found start of new bullet\n\n\n if (nextBulletRegex.test(line)) {\n break;\n } // Horizontal rule found\n\n\n if (hrRegex.test(src)) {\n break;\n }\n\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n // Dedent if possible\n itemContents += '\\n' + line.slice(indent);\n } else if (!blankLine) {\n // Until blank line, item doesn't need indentation\n itemContents += '\\n' + line;\n } else {\n // Otherwise, improper indentation ends this item\n break;\n }\n\n if (!blankLine && !line.trim()) {\n // Check if current line is blank\n blankLine = true;\n }\n\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n list.raw += raw;\n } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n var spacers = list.items[i].tokens.filter(function (t) {\n return t.type === 'space';\n });\n var hasMultipleLineBreaks = spacers.every(function (t) {\n var chars = t.raw.split('');\n var lineBreaks = 0;\n\n for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {\n var _char = _step.value;\n\n if (_char === '\\n') {\n lineBreaks += 1;\n }\n\n if (lineBreaks > 1) {\n return true;\n }\n }\n\n return false;\n });\n\n if (!list.loose && spacers.length && hasMultipleLineBreaks) {\n // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n var token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n\n return token;\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1]).map(function (c) {\n return {\n text: c\n };\n }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i, j, k, row;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n return {\n text: c\n };\n });\n } // parse child tokens inside headers and cells\n // header child tokens\n\n\n l = item.header.length;\n\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inline(item.header[j].text, item.header[j].tokens);\n } // cell child tokens\n\n\n l = item.rows.length;\n\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inline(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n var token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n var token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n var token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n };\n\n _proto.escape = function escape$1(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0], this.lexer);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDF70-\\uDF81\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n var _text = src.slice(1, lLength + match.index + rLength);\n\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: _text,\n tokens: this.lexer.inlineTokens(_text, [])\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n var text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?]+)>?(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();\n block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /|$)/;\n block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge({}, block.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[^*]+(?=[^*])|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();\n inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();\n inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || exports.defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n var next;\n\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens) {\n var _this = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n } else {\n src = src.replace(/^( *)(\\t+)/gm, function (_, leading, tabs) {\n return leading + ' '.repeat(tabs.length);\n });\n }\n\n var token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // newline\n\n\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n } else {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startBlock) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n };\n\n _proto.inline = function inline(src, tokens) {\n this.inlineQueue.push({\n src: src,\n tokens: tokens\n });\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens) {\n var _this2 = this;\n\n if (tokens === void 0) {\n tokens = [];\n }\n\n var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // extensions\n\n if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n if (token = extTokenizer.call({\n lexer: _this2\n }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n\n return false;\n })) {\n continue;\n } // escape\n\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n cutSrc = src;\n\n if (this.options.extensions && this.options.extensions.startInline) {\n (function () {\n var startIndex = Infinity;\n var tempSrc = src.slice(1);\n var tempStart = void 0;\n\n _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n tempStart = getStartIndex.call({\n lexer: this\n }, tempSrc);\n\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n })();\n }\n\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n /**\n * Renderer\n */\n\n var Renderer = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || exports.defaults;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n\n return '
' + (escaped ? _code : escape(_code, true)) + '
\\n';\n }\n /**\n * @param {string} quote\n */\n ;\n\n _proto.blockquote = function blockquote(quote) {\n return \"
\\n\" + quote + \"
\\n\";\n };\n\n _proto.html = function html(_html) {\n return _html;\n }\n /**\n * @param {string} text\n * @param {string} level\n * @param {string} raw\n * @param {any} slugger\n */\n ;\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n var id = this.options.headerPrefix + slugger.slug(raw);\n return \"\" + text + \"\\n\";\n } // ignore IDs\n\n\n return \"\" + text + \"\\n\";\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.listitem = function listitem(text) {\n return \"
  • \" + text + \"
  • \\n\";\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.paragraph = function paragraph(text) {\n return \"

    \" + text + \"

    \\n\";\n }\n /**\n * @param {string} header\n * @param {string} body\n */\n ;\n\n _proto.table = function table(header, body) {\n if (body) body = \"\" + body + \"\";\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n }\n /**\n * @param {string} content\n */\n ;\n\n _proto.tablerow = function tablerow(content) {\n return \"\\n\" + content + \"\\n\";\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? \"<\" + type + \" align=\\\"\" + flags.align + \"\\\">\" : \"<\" + type + \">\";\n return tag + content + (\"\\n\");\n }\n /**\n * span level renderer\n * @param {string} text\n */\n ;\n\n _proto.strong = function strong(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.em = function em(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.codespan = function codespan(text) {\n return \"\" + text + \"\";\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n /**\n * @param {string} text\n */\n ;\n\n _proto.del = function del(text) {\n return \"\" + text + \"\";\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n }\n /**\n * @param {string} href\n * @param {string} title\n * @param {string} text\n */\n ;\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = \"\\\"\"' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n /**\n * @param {string} value\n */\n\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n * @param {string} originalSlug\n * @param {boolean} isDryRun\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} [options]\n * @param {boolean} [options.dryrun] Generates the next unique slug without\n * updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n /**\n * Parsing & Compiling\n */\n\n var Parser = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || exports.defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.rows.length;\n\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token,\n ret;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i]; // Run any renderer extensions\n\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({\n parser: this\n }, token);\n\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = exports.defaults;\n /**\n * Use Extension\n */\n\n marked.use = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var opts = merge.apply(void 0, [{}].concat(args));\n var extensions = marked.defaults.extensions || {\n renderers: {},\n childTokens: {}\n };\n var hasExtensions;\n args.forEach(function (pack) {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach(function (ext) {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n\n if (ext.renderer) {\n // Renderer extensions\n var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = ext.renderer.apply(this, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n\n if (ext.tokenizer) {\n // Tokenizer Extensions\n if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n\n if (ext.start) {\n // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n\n if (ext.childTokens) {\n // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n } // ==-- Parse \"overwrite\" extensions --== //\n\n\n if (pack.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n renderer[prop] = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var ret = pack.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (pack.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n tokenizer[prop] = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in pack.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n } // ==-- Parse WalkTokens extensions --== //\n\n\n if (pack.walkTokens) {\n var _walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n pack.walkTokens.call(this, token);\n\n if (_walkTokens) {\n _walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n var _loop3 = function _loop3() {\n var token = _step.value;\n callback.call(marked, token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell.tokens, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell.tokens, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n _loop3();\n }\n };\n /**\n * Parse Inline\n * @param {string} src\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var options = marked.options;\n var setOptions = marked.setOptions;\n var use = marked.use;\n var walkTokens = marked.walkTokens;\n var parseInline = marked.parseInline;\n var parse = marked;\n var parser = Parser.parse;\n var lexer = Lexer.lex;\n\n exports.Lexer = Lexer;\n exports.Parser = Parser;\n exports.Renderer = Renderer;\n exports.Slugger = Slugger;\n exports.TextRenderer = TextRenderer;\n exports.Tokenizer = Tokenizer;\n exports.getDefaults = getDefaults;\n exports.lexer = lexer;\n exports.marked = marked;\n exports.options = options;\n exports.parse = parse;\n exports.parseInline = parseInline;\n exports.parser = parser;\n exports.setOptions = setOptions;\n exports.use = use;\n exports.walkTokens = walkTokens;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n\n// ESM-uncomment-begin\n})();\nexport var marked = (__marked_exports || exports);\n// ESM-uncomment-end\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as DOM from './dom.js';\nimport * as dompurify from './dompurify/dompurify.js';\nimport { DomEmitter } from './event.js';\nimport { createElement } from './formattedTextRenderer.js';\nimport { StandardMouseEvent } from './mouseEvent.js';\nimport { renderLabelWithIcons } from './ui/iconLabel/iconLabels.js';\nimport { onUnexpectedError } from '../common/errors.js';\nimport { Event } from '../common/event.js';\nimport { escapeDoubleQuotes, parseHrefAndDimensions, removeMarkdownEscapes } from '../common/htmlContent.js';\nimport { markdownEscapeEscapedIcons } from '../common/iconLabels.js';\nimport { defaultGenerator } from '../common/idGenerator.js';\nimport { DisposableStore } from '../common/lifecycle.js';\nimport { marked } from '../common/marked/marked.js';\nimport { parse } from '../common/marshalling.js';\nimport { FileAccess, Schemas } from '../common/network.js';\nimport { cloneAndChange } from '../common/objects.js';\nimport { dirname, resolvePath } from '../common/resources.js';\nimport { escape } from '../common/strings.js';\nimport { URI } from '../common/uri.js';\n/**\n * Low-level way create a html element from a markdown string.\n *\n * **Note** that for most cases you should be using [`MarkdownRenderer`](./src/vs/editor/contrib/markdownRenderer/browser/markdownRenderer.ts)\n * which comes with support for pretty code block rendering and which uses the default way of handling links.\n */\nexport function renderMarkdown(markdown, options = {}, markedOptions = {}) {\n var _a;\n const disposables = new DisposableStore();\n let isDisposed = false;\n const element = createElement(options);\n const _uriMassage = function (part) {\n let data;\n try {\n data = parse(decodeURIComponent(part));\n }\n catch (e) {\n // ignore\n }\n if (!data) {\n return part;\n }\n data = cloneAndChange(data, value => {\n if (markdown.uris && markdown.uris[value]) {\n return URI.revive(markdown.uris[value]);\n }\n else {\n return undefined;\n }\n });\n return encodeURIComponent(JSON.stringify(data));\n };\n const _href = function (href, isDomUri) {\n const data = markdown.uris && markdown.uris[href];\n let uri = URI.revive(data);\n if (isDomUri) {\n if (href.startsWith(Schemas.data + ':')) {\n return href;\n }\n if (!uri) {\n uri = URI.parse(href);\n }\n // this URI will end up as \"src\"-attribute of a dom node\n // and because of that special rewriting needs to be done\n // so that the URI uses a protocol that's understood by\n // browsers (like http or https)\n return FileAccess.asBrowserUri(uri).toString(true);\n }\n if (!uri) {\n return href;\n }\n if (URI.parse(href).toString() === uri.toString()) {\n return href; // no transformation performed\n }\n if (uri.query) {\n uri = uri.with({ query: _uriMassage(uri.query) });\n }\n return uri.toString();\n };\n const renderer = new marked.Renderer();\n renderer.image = (href, title, text) => {\n let dimensions = [];\n let attributes = [];\n if (href) {\n ({ href, dimensions } = parseHrefAndDimensions(href));\n attributes.push(`src=\"${escapeDoubleQuotes(href)}\"`);\n }\n if (text) {\n attributes.push(`alt=\"${escapeDoubleQuotes(text)}\"`);\n }\n if (title) {\n attributes.push(`title=\"${escapeDoubleQuotes(title)}\"`);\n }\n if (dimensions.length) {\n attributes = attributes.concat(dimensions);\n }\n return '';\n };\n renderer.link = (href, title, text) => {\n if (typeof href !== 'string') {\n return '';\n }\n // Remove markdown escapes. Workaround for https://github.com/chjj/marked/issues/829\n if (href === text) { // raw link case\n text = removeMarkdownEscapes(text);\n }\n title = typeof title === 'string' ? escapeDoubleQuotes(removeMarkdownEscapes(title)) : '';\n href = removeMarkdownEscapes(href);\n // HTML Encode href\n href = href.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n return `
    ${text}`;\n };\n renderer.paragraph = (text) => {\n return `

    ${text}

    `;\n };\n // Will collect [id, renderedElement] tuples\n const codeBlocks = [];\n if (options.codeBlockRenderer) {\n renderer.code = (code, lang) => {\n const id = defaultGenerator.nextId();\n const value = options.codeBlockRenderer(lang !== null && lang !== void 0 ? lang : '', code);\n codeBlocks.push(value.then(element => [id, element]));\n return `
    ${escape(code)}
    `;\n };\n }\n if (options.actionHandler) {\n const onClick = options.actionHandler.disposables.add(new DomEmitter(element, 'click'));\n const onAuxClick = options.actionHandler.disposables.add(new DomEmitter(element, 'auxclick'));\n options.actionHandler.disposables.add(Event.any(onClick.event, onAuxClick.event)(e => {\n const mouseEvent = new StandardMouseEvent(e);\n if (!mouseEvent.leftButton && !mouseEvent.middleButton) {\n return;\n }\n let target = mouseEvent.target;\n if (target.tagName !== 'A') {\n target = target.parentElement;\n if (!target || target.tagName !== 'A') {\n return;\n }\n }\n try {\n let href = target.dataset['href'];\n if (href) {\n if (markdown.baseUri) {\n href = resolveWithBaseUri(URI.from(markdown.baseUri), href);\n }\n options.actionHandler.callback(href, mouseEvent);\n }\n }\n catch (err) {\n onUnexpectedError(err);\n }\n finally {\n mouseEvent.preventDefault();\n }\n }));\n }\n if (!markdown.supportHtml) {\n // TODO: Can we deprecated this in favor of 'supportHtml'?\n // Use our own sanitizer so that we can let through only spans.\n // Otherwise, we'd be letting all html be rendered.\n // If we want to allow markdown permitted tags, then we can delete sanitizer and sanitize.\n // We always pass the output through dompurify after this so that we don't rely on\n // marked for sanitization.\n markedOptions.sanitizer = (html) => {\n const match = markdown.isTrusted ? html.match(/^(]+>)|(<\\/\\s*span>)$/) : undefined;\n return match ? html : '';\n };\n markedOptions.sanitize = true;\n markedOptions.silent = true;\n }\n markedOptions.renderer = renderer;\n // values that are too long will freeze the UI\n let value = (_a = markdown.value) !== null && _a !== void 0 ? _a : '';\n if (value.length > 100000) {\n value = `${value.substr(0, 100000)}…`;\n }\n // escape theme icons\n if (markdown.supportThemeIcons) {\n value = markdownEscapeEscapedIcons(value);\n }\n let renderedMarkdown = marked.parse(value, markedOptions);\n // Rewrite theme icons\n if (markdown.supportThemeIcons) {\n const elements = renderLabelWithIcons(renderedMarkdown);\n renderedMarkdown = elements.map(e => typeof e === 'string' ? e : e.outerHTML).join('');\n }\n const htmlParser = new DOMParser();\n const markdownHtmlDoc = htmlParser.parseFromString(sanitizeRenderedMarkdown(markdown, renderedMarkdown), 'text/html');\n markdownHtmlDoc.body.querySelectorAll('img')\n .forEach(img => {\n const src = img.getAttribute('src'); // Get the raw 'src' attribute value as text, not the resolved 'src'\n if (src) {\n let href = src;\n try {\n if (markdown.baseUri) { // absolute or relative local path, or file: uri\n href = resolveWithBaseUri(URI.from(markdown.baseUri), href);\n }\n }\n catch (err) { }\n img.src = _href(href, true);\n }\n });\n markdownHtmlDoc.body.querySelectorAll('a')\n .forEach(a => {\n const href = a.getAttribute('href'); // Get the raw 'href' attribute value as text, not the resolved 'href'\n a.setAttribute('href', ''); // Clear out href. We use the `data-href` for handling clicks instead\n if (!href\n || /^data:|javascript:/i.test(href)\n || (/^command:/i.test(href) && !markdown.isTrusted)\n || /^command:(\\/\\/\\/)?_workbench\\.downloadResource/i.test(href)) {\n // drop the link\n a.replaceWith(...a.childNodes);\n }\n else {\n let resolvedHref = _href(href, false);\n if (markdown.baseUri) {\n resolvedHref = resolveWithBaseUri(URI.from(markdown.baseUri), href);\n }\n a.dataset.href = resolvedHref;\n }\n });\n element.innerHTML = sanitizeRenderedMarkdown(markdown, markdownHtmlDoc.body.innerHTML);\n if (codeBlocks.length > 0) {\n Promise.all(codeBlocks).then((tuples) => {\n var _a, _b;\n if (isDisposed) {\n return;\n }\n const renderedElements = new Map(tuples);\n const placeholderElements = element.querySelectorAll(`div[data-code]`);\n for (const placeholderElement of placeholderElements) {\n const renderedElement = renderedElements.get((_a = placeholderElement.dataset['code']) !== null && _a !== void 0 ? _a : '');\n if (renderedElement) {\n DOM.reset(placeholderElement, renderedElement);\n }\n }\n (_b = options.asyncRenderCallback) === null || _b === void 0 ? void 0 : _b.call(options);\n });\n }\n // signal size changes for image tags\n if (options.asyncRenderCallback) {\n for (const img of element.getElementsByTagName('img')) {\n const listener = disposables.add(DOM.addDisposableListener(img, 'load', () => {\n listener.dispose();\n options.asyncRenderCallback();\n }));\n }\n }\n return {\n element,\n dispose: () => {\n isDisposed = true;\n disposables.dispose();\n }\n };\n}\nfunction resolveWithBaseUri(baseUri, href) {\n const hasScheme = /^\\w[\\w\\d+.-]*:/.test(href);\n if (hasScheme) {\n return href;\n }\n if (baseUri.path.endsWith('/')) {\n return resolvePath(baseUri, href).toString();\n }\n else {\n return resolvePath(dirname(baseUri), href).toString();\n }\n}\nfunction sanitizeRenderedMarkdown(options, renderedMarkdown) {\n const { config, allowedSchemes } = getSanitizerOptions(options);\n dompurify.addHook('uponSanitizeAttribute', (element, e) => {\n if (e.attrName === 'style' || e.attrName === 'class') {\n if (element.tagName === 'SPAN') {\n if (e.attrName === 'style') {\n e.keepAttr = /^(color\\:#[0-9a-fA-F]+;)?(background-color\\:#[0-9a-fA-F]+;)?$/.test(e.attrValue);\n return;\n }\n else if (e.attrName === 'class') {\n e.keepAttr = /^codicon codicon-[a-z\\-]+( codicon-modifier-[a-z\\-]+)?$/.test(e.attrValue);\n return;\n }\n }\n e.keepAttr = false;\n return;\n }\n });\n const hook = DOM.hookDomPurifyHrefAndSrcSanitizer(allowedSchemes);\n try {\n return dompurify.sanitize(renderedMarkdown, Object.assign(Object.assign({}, config), { RETURN_TRUSTED_TYPE: true }));\n }\n finally {\n dompurify.removeHook('uponSanitizeAttribute');\n hook.dispose();\n }\n}\nfunction getSanitizerOptions(options) {\n const allowedSchemes = [\n Schemas.http,\n Schemas.https,\n Schemas.mailto,\n Schemas.data,\n Schemas.file,\n Schemas.vscodeFileResource,\n Schemas.vscodeRemote,\n Schemas.vscodeRemoteResource,\n ];\n if (options.isTrusted) {\n allowedSchemes.push(Schemas.command);\n }\n return {\n config: {\n // allowedTags should included everything that markdown renders to.\n // Since we have our own sanitize function for marked, it's possible we missed some tag so let dompurify make sure.\n // HTML tags that can result from markdown are from reading https://spec.commonmark.org/0.29/\n // HTML table tags that can result from markdown are from https://github.github.com/gfm/#tables-extension-\n ALLOWED_TAGS: ['ul', 'li', 'p', 'b', 'i', 'code', 'blockquote', 'ol', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'em', 'pre', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'div', 'del', 'a', 'strong', 'br', 'img', 'span'],\n ALLOWED_ATTR: ['href', 'data-href', 'target', 'title', 'src', 'alt', 'class', 'style', 'data-code', 'width', 'height', 'align'],\n ALLOW_UNKNOWN_PROTOCOLS: true,\n },\n allowedSchemes\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport { renderMarkdown } from '../../../../base/browser/markdownRenderer.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { tokenizeToString } from '../../../common/languages/textToHtmlTokenizer.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { applyFontInfo } from '../../../browser/config/domFontInfo.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../../../common/languages/modesRegistry.js';\n/**\n * Markdown renderer that can render codeblocks with the editor mechanics. This\n * renderer should always be preferred.\n */\nlet MarkdownRenderer = class MarkdownRenderer {\n constructor(_options, _languageService, _openerService) {\n this._options = _options;\n this._languageService = _languageService;\n this._openerService = _openerService;\n this._onDidRenderAsync = new Emitter();\n this.onDidRenderAsync = this._onDidRenderAsync.event;\n }\n dispose() {\n this._onDidRenderAsync.dispose();\n }\n render(markdown, options, markedOptions) {\n if (!markdown) {\n const element = document.createElement('span');\n return { element, dispose: () => { } };\n }\n const disposables = new DisposableStore();\n const rendered = disposables.add(renderMarkdown(markdown, Object.assign(Object.assign({}, this._getRenderOptions(markdown, disposables)), options), markedOptions));\n return {\n element: rendered.element,\n dispose: () => disposables.dispose()\n };\n }\n _getRenderOptions(markdown, disposables) {\n return {\n codeBlockRenderer: (languageAlias, value) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b, _c;\n // In markdown,\n // it is possible that we stumble upon language aliases (e.g.js instead of javascript)\n // it is possible no alias is given in which case we fall back to the current editor lang\n let languageId;\n if (languageAlias) {\n languageId = this._languageService.getLanguageIdByLanguageName(languageAlias);\n }\n else if (this._options.editor) {\n languageId = (_a = this._options.editor.getModel()) === null || _a === void 0 ? void 0 : _a.getLanguageId();\n }\n if (!languageId) {\n languageId = PLAINTEXT_LANGUAGE_ID;\n }\n const html = yield tokenizeToString(this._languageService, value, languageId);\n const element = document.createElement('span');\n element.innerHTML = ((_c = (_b = MarkdownRenderer._ttpTokenizer) === null || _b === void 0 ? void 0 : _b.createHTML(html)) !== null && _c !== void 0 ? _c : html);\n // use \"good\" font\n if (this._options.editor) {\n const fontInfo = this._options.editor.getOption(46 /* EditorOption.fontInfo */);\n applyFontInfo(element, fontInfo);\n }\n else if (this._options.codeBlockFontFamily) {\n element.style.fontFamily = this._options.codeBlockFontFamily;\n }\n if (this._options.codeBlockFontSize !== undefined) {\n element.style.fontSize = this._options.codeBlockFontSize;\n }\n return element;\n }),\n asyncRenderCallback: () => this._onDidRenderAsync.fire(),\n actionHandler: {\n callback: (content) => this._openerService.open(content, { fromUserGesture: true, allowContributedOpeners: true, allowCommands: markdown.isTrusted }).catch(onUnexpectedError),\n disposables: disposables\n }\n };\n }\n};\nMarkdownRenderer._ttpTokenizer = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('tokenizeToString', {\n createHTML(html) {\n return html;\n }\n});\nMarkdownRenderer = __decorate([\n __param(1, ILanguageService),\n __param(2, IOpenerService)\n], MarkdownRenderer);\nexport { MarkdownRenderer };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { TimeoutTimer } from '../../../../base/common/async.js';\nimport { DisposableStore, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport './messageController.css';\nimport { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nlet MessageController = class MessageController {\n constructor(editor, contextKeyService) {\n this._messageWidget = new MutableDisposable();\n this._messageListeners = new DisposableStore();\n this._editor = editor;\n this._visible = MessageController.MESSAGE_VISIBLE.bindTo(contextKeyService);\n }\n static get(editor) {\n return editor.getContribution(MessageController.ID);\n }\n dispose() {\n this._messageListeners.dispose();\n this._messageWidget.dispose();\n this._visible.reset();\n }\n showMessage(message, position) {\n alert(message);\n this._visible.set(true);\n this._messageWidget.clear();\n this._messageListeners.clear();\n this._messageWidget.value = new MessageWidget(this._editor, position, message);\n // close on blur, cursor, model change, dispose\n this._messageListeners.add(this._editor.onDidBlurEditorText(() => this.closeMessage()));\n this._messageListeners.add(this._editor.onDidChangeCursorPosition(() => this.closeMessage()));\n this._messageListeners.add(this._editor.onDidDispose(() => this.closeMessage()));\n this._messageListeners.add(this._editor.onDidChangeModel(() => this.closeMessage()));\n // 3sec\n this._messageListeners.add(new TimeoutTimer(() => this.closeMessage(), 3000));\n // close on mouse move\n let bounds;\n this._messageListeners.add(this._editor.onMouseMove(e => {\n // outside the text area\n if (!e.target.position) {\n return;\n }\n if (!bounds) {\n // define bounding box around position and first mouse occurance\n bounds = new Range(position.lineNumber - 3, 1, e.target.position.lineNumber + 3, 1);\n }\n else if (!bounds.containsPosition(e.target.position)) {\n // check if position is still in bounds\n this.closeMessage();\n }\n }));\n }\n closeMessage() {\n this._visible.reset();\n this._messageListeners.clear();\n if (this._messageWidget.value) {\n this._messageListeners.add(MessageWidget.fadeOut(this._messageWidget.value));\n }\n }\n};\nMessageController.ID = 'editor.contrib.messageController';\nMessageController.MESSAGE_VISIBLE = new RawContextKey('messageVisible', false, nls.localize('messageVisible', 'Whether the editor is currently showing an inline message'));\nMessageController = __decorate([\n __param(1, IContextKeyService)\n], MessageController);\nexport { MessageController };\nconst MessageCommand = EditorCommand.bindToContribution(MessageController.get);\nregisterEditorCommand(new MessageCommand({\n id: 'leaveEditorMessage',\n precondition: MessageController.MESSAGE_VISIBLE,\n handler: c => c.closeMessage(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n primary: 9 /* KeyCode.Escape */\n }\n}));\nclass MessageWidget {\n constructor(editor, { lineNumber, column }, text) {\n // Editor.IContentWidget.allowEditorOverflow\n this.allowEditorOverflow = true;\n this.suppressMouseDown = false;\n this._editor = editor;\n this._editor.revealLinesInCenterIfOutsideViewport(lineNumber, lineNumber, 0 /* ScrollType.Smooth */);\n this._position = { lineNumber, column };\n this._domNode = document.createElement('div');\n this._domNode.classList.add('monaco-editor-overlaymessage');\n this._domNode.style.marginLeft = '-6px';\n const anchorTop = document.createElement('div');\n anchorTop.classList.add('anchor', 'top');\n this._domNode.appendChild(anchorTop);\n const message = document.createElement('div');\n message.classList.add('message');\n message.textContent = text;\n this._domNode.appendChild(message);\n const anchorBottom = document.createElement('div');\n anchorBottom.classList.add('anchor', 'below');\n this._domNode.appendChild(anchorBottom);\n this._editor.addContentWidget(this);\n this._domNode.classList.add('fadeIn');\n }\n static fadeOut(messageWidget) {\n const dispose = () => {\n messageWidget.dispose();\n clearTimeout(handle);\n messageWidget.getDomNode().removeEventListener('animationend', dispose);\n };\n const handle = setTimeout(dispose, 110);\n messageWidget.getDomNode().addEventListener('animationend', dispose);\n messageWidget.getDomNode().classList.add('fadeOut');\n return { dispose };\n }\n dispose() {\n this._editor.removeContentWidget(this);\n }\n getId() {\n return 'messageoverlay';\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return {\n position: this._position,\n preference: [\n 1 /* ContentWidgetPositionPreference.ABOVE */,\n 2 /* ContentWidgetPositionPreference.BELOW */,\n ],\n positionAffinity: 1 /* PositionAffinity.Right */,\n };\n }\n afterRender(position) {\n this._domNode.classList.toggle('below', position === 2 /* ContentWidgetPositionPreference.BELOW */);\n }\n}\nregisterEditorContribution(MessageController.ID, MessageController);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { status } from '../../../../base/browser/ui/aria/aria.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { CursorMoveCommands } from '../../../common/cursor/cursorMoveCommands.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { OverviewRulerLane, MinimapPosition } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { CommonFindController } from '../../find/browser/findController.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { overviewRulerSelectionHighlightForeground, minimapSelectionOccurrenceHighlight } from '../../../../platform/theme/common/colorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nfunction announceCursorChange(previousCursorState, cursorState) {\n const cursorDiff = cursorState.filter(cs => !previousCursorState.find(pcs => pcs.equals(cs)));\n if (cursorDiff.length >= 1) {\n const cursorPositions = cursorDiff.map(cs => `line ${cs.viewState.position.lineNumber} column ${cs.viewState.position.column}`).join(', ');\n const msg = cursorDiff.length === 1 ? nls.localize('cursorAdded', \"Cursor added: {0}\", cursorPositions) : nls.localize('cursorsAdded', \"Cursors added: {0}\", cursorPositions);\n status(msg);\n }\n}\nexport class InsertCursorAbove extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertCursorAbove',\n label: nls.localize('mutlicursor.insertAbove', \"Add Cursor Above\"),\n alias: 'Add Cursor Above',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */,\n linux: {\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 16 /* KeyCode.UpArrow */]\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miInsertCursorAbove', comment: ['&& denotes a mnemonic'] }, \"&&Add Cursor Above\"),\n order: 2\n }\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n let useLogicalLine = true;\n if (args && args.logicalLine === false) {\n useLogicalLine = false;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = viewModel.getCursorStates();\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, CursorMoveCommands.addCursorUp(viewModel, previousCursorState, useLogicalLine));\n viewModel.revealTopMostCursor(args.source);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nexport class InsertCursorBelow extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertCursorBelow',\n label: nls.localize('mutlicursor.insertBelow', \"Add Cursor Below\"),\n alias: 'Add Cursor Below',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */,\n linux: {\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 18 /* KeyCode.DownArrow */]\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miInsertCursorBelow', comment: ['&& denotes a mnemonic'] }, \"A&&dd Cursor Below\"),\n order: 3\n }\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n let useLogicalLine = true;\n if (args && args.logicalLine === false) {\n useLogicalLine = false;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = viewModel.getCursorStates();\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, CursorMoveCommands.addCursorDown(viewModel, previousCursorState, useLogicalLine));\n viewModel.revealBottomMostCursor(args.source);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nclass InsertCursorAtEndOfEachLineSelected extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.insertCursorAtEndOfEachLineSelected',\n label: nls.localize('mutlicursor.insertAtEndOfEachLineSelected', \"Add Cursors to Line Ends\"),\n alias: 'Add Cursors to Line Ends',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 39 /* KeyCode.KeyI */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miInsertCursorAtEndOfEachLineSelected', comment: ['&& denotes a mnemonic'] }, \"Add C&&ursors to Line Ends\"),\n order: 4\n }\n });\n }\n getCursorsForSelection(selection, model, result) {\n if (selection.isEmpty()) {\n return;\n }\n for (let i = selection.startLineNumber; i < selection.endLineNumber; i++) {\n const currentLineMaxColumn = model.getLineMaxColumn(i);\n result.push(new Selection(i, currentLineMaxColumn, i, currentLineMaxColumn));\n }\n if (selection.endColumn > 1) {\n result.push(new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn));\n }\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n const selections = editor.getSelections();\n const viewModel = editor._getViewModel();\n const previousCursorState = viewModel.getCursorStates();\n const newSelections = [];\n selections.forEach((sel) => this.getCursorsForSelection(sel, model, newSelections));\n if (newSelections.length > 0) {\n editor.setSelections(newSelections);\n }\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nclass InsertCursorAtEndOfLineSelected extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.addCursorsToBottom',\n label: nls.localize('mutlicursor.addCursorsToBottom', \"Add Cursors To Bottom\"),\n alias: 'Add Cursors To Bottom',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const selections = editor.getSelections();\n const lineCount = editor.getModel().getLineCount();\n const newSelections = [];\n for (let i = selections[0].startLineNumber; i <= lineCount; i++) {\n newSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n }\n const viewModel = editor._getViewModel();\n const previousCursorState = viewModel.getCursorStates();\n if (newSelections.length > 0) {\n editor.setSelections(newSelections);\n }\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nclass InsertCursorAtTopOfLineSelected extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.addCursorsToTop',\n label: nls.localize('mutlicursor.addCursorsToTop', \"Add Cursors To Top\"),\n alias: 'Add Cursors To Top',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const selections = editor.getSelections();\n const newSelections = [];\n for (let i = selections[0].startLineNumber; i >= 1; i--) {\n newSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\n }\n const viewModel = editor._getViewModel();\n const previousCursorState = viewModel.getCursorStates();\n if (newSelections.length > 0) {\n editor.setSelections(newSelections);\n }\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nexport class MultiCursorSessionResult {\n constructor(selections, revealRange, revealScrollType) {\n this.selections = selections;\n this.revealRange = revealRange;\n this.revealScrollType = revealScrollType;\n }\n}\nexport class MultiCursorSession {\n constructor(_editor, findController, isDisconnectedFromFindController, searchText, wholeWord, matchCase, currentMatch) {\n this._editor = _editor;\n this.findController = findController;\n this.isDisconnectedFromFindController = isDisconnectedFromFindController;\n this.searchText = searchText;\n this.wholeWord = wholeWord;\n this.matchCase = matchCase;\n this.currentMatch = currentMatch;\n }\n static create(editor, findController) {\n if (!editor.hasModel()) {\n return null;\n }\n const findState = findController.getState();\n // Find widget owns entirely what we search for if:\n // - focus is not in the editor (i.e. it is in the find widget)\n // - and the search widget is visible\n // - and the search string is non-empty\n if (!editor.hasTextFocus() && findState.isRevealed && findState.searchString.length > 0) {\n // Find widget owns what is searched for\n return new MultiCursorSession(editor, findController, false, findState.searchString, findState.wholeWord, findState.matchCase, null);\n }\n // Otherwise, the selection gives the search text, and the find widget gives the search settings\n // The exception is the find state disassociation case: when beginning with a single, collapsed selection\n let isDisconnectedFromFindController = false;\n let wholeWord;\n let matchCase;\n const selections = editor.getSelections();\n if (selections.length === 1 && selections[0].isEmpty()) {\n isDisconnectedFromFindController = true;\n wholeWord = true;\n matchCase = true;\n }\n else {\n wholeWord = findState.wholeWord;\n matchCase = findState.matchCase;\n }\n // Selection owns what is searched for\n const s = editor.getSelection();\n let searchText;\n let currentMatch = null;\n if (s.isEmpty()) {\n // selection is empty => expand to current word\n const word = editor.getConfiguredWordAtPosition(s.getStartPosition());\n if (!word) {\n return null;\n }\n searchText = word.word;\n currentMatch = new Selection(s.startLineNumber, word.startColumn, s.startLineNumber, word.endColumn);\n }\n else {\n searchText = editor.getModel().getValueInRange(s).replace(/\\r\\n/g, '\\n');\n }\n return new MultiCursorSession(editor, findController, isDisconnectedFromFindController, searchText, wholeWord, matchCase, currentMatch);\n }\n addSelectionToNextFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const nextMatch = this._getNextMatch();\n if (!nextMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.concat(nextMatch), nextMatch, 0 /* ScrollType.Smooth */);\n }\n moveSelectionToNextFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const nextMatch = this._getNextMatch();\n if (!nextMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(nextMatch), nextMatch, 0 /* ScrollType.Smooth */);\n }\n _getNextMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n if (this.currentMatch) {\n const result = this.currentMatch;\n this.currentMatch = null;\n return result;\n }\n this.findController.highlightFindOptions();\n const allSelections = this._editor.getSelections();\n const lastAddedSelection = allSelections[allSelections.length - 1];\n const nextMatch = this._editor.getModel().findNextMatch(this.searchText, lastAddedSelection.getEndPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false);\n if (!nextMatch) {\n return null;\n }\n return new Selection(nextMatch.range.startLineNumber, nextMatch.range.startColumn, nextMatch.range.endLineNumber, nextMatch.range.endColumn);\n }\n addSelectionToPreviousFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const previousMatch = this._getPreviousMatch();\n if (!previousMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.concat(previousMatch), previousMatch, 0 /* ScrollType.Smooth */);\n }\n moveSelectionToPreviousFindMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n const previousMatch = this._getPreviousMatch();\n if (!previousMatch) {\n return null;\n }\n const allSelections = this._editor.getSelections();\n return new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(previousMatch), previousMatch, 0 /* ScrollType.Smooth */);\n }\n _getPreviousMatch() {\n if (!this._editor.hasModel()) {\n return null;\n }\n if (this.currentMatch) {\n const result = this.currentMatch;\n this.currentMatch = null;\n return result;\n }\n this.findController.highlightFindOptions();\n const allSelections = this._editor.getSelections();\n const lastAddedSelection = allSelections[allSelections.length - 1];\n const previousMatch = this._editor.getModel().findPreviousMatch(this.searchText, lastAddedSelection.getStartPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false);\n if (!previousMatch) {\n return null;\n }\n return new Selection(previousMatch.range.startLineNumber, previousMatch.range.startColumn, previousMatch.range.endLineNumber, previousMatch.range.endColumn);\n }\n selectAll(searchScope) {\n if (!this._editor.hasModel()) {\n return [];\n }\n this.findController.highlightFindOptions();\n const editorModel = this._editor.getModel();\n if (searchScope) {\n return editorModel.findMatches(this.searchText, searchScope, false, this.matchCase, this.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n return editorModel.findMatches(this.searchText, true, false, this.matchCase, this.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n}\nexport class MultiCursorSelectionController extends Disposable {\n constructor(editor) {\n super();\n this._sessionDispose = this._register(new DisposableStore());\n this._editor = editor;\n this._ignoreSelectionChange = false;\n this._session = null;\n }\n static get(editor) {\n return editor.getContribution(MultiCursorSelectionController.ID);\n }\n dispose() {\n this._endSession();\n super.dispose();\n }\n _beginSessionIfNeeded(findController) {\n if (!this._session) {\n // Create a new session\n const session = MultiCursorSession.create(this._editor, findController);\n if (!session) {\n return;\n }\n this._session = session;\n const newState = { searchString: this._session.searchText };\n if (this._session.isDisconnectedFromFindController) {\n newState.wholeWordOverride = 1 /* FindOptionOverride.True */;\n newState.matchCaseOverride = 1 /* FindOptionOverride.True */;\n newState.isRegexOverride = 2 /* FindOptionOverride.False */;\n }\n findController.getState().change(newState, false);\n this._sessionDispose.add(this._editor.onDidChangeCursorSelection((e) => {\n if (this._ignoreSelectionChange) {\n return;\n }\n this._endSession();\n }));\n this._sessionDispose.add(this._editor.onDidBlurEditorText(() => {\n this._endSession();\n }));\n this._sessionDispose.add(findController.getState().onFindReplaceStateChange((e) => {\n if (e.matchCase || e.wholeWord) {\n this._endSession();\n }\n }));\n }\n }\n _endSession() {\n this._sessionDispose.clear();\n if (this._session && this._session.isDisconnectedFromFindController) {\n const newState = {\n wholeWordOverride: 0 /* FindOptionOverride.NotSet */,\n matchCaseOverride: 0 /* FindOptionOverride.NotSet */,\n isRegexOverride: 0 /* FindOptionOverride.NotSet */,\n };\n this._session.findController.getState().change(newState, false);\n }\n this._session = null;\n }\n _setSelections(selections) {\n this._ignoreSelectionChange = true;\n this._editor.setSelections(selections);\n this._ignoreSelectionChange = false;\n }\n _expandEmptyToWord(model, selection) {\n if (!selection.isEmpty()) {\n return selection;\n }\n const word = this._editor.getConfiguredWordAtPosition(selection.getStartPosition());\n if (!word) {\n return selection;\n }\n return new Selection(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\n }\n _applySessionResult(result) {\n if (!result) {\n return;\n }\n this._setSelections(result.selections);\n if (result.revealRange) {\n this._editor.revealRangeInCenterIfOutsideViewport(result.revealRange, result.revealScrollType);\n }\n }\n getSession(findController) {\n return this._session;\n }\n addSelectionToNextFindMatch(findController) {\n if (!this._editor.hasModel()) {\n return;\n }\n if (!this._session) {\n // If there are multiple cursors, handle the case where they do not all select the same text.\n const allSelections = this._editor.getSelections();\n if (allSelections.length > 1) {\n const findState = findController.getState();\n const matchCase = findState.matchCase;\n const selectionsContainSameText = modelRangesContainSameText(this._editor.getModel(), allSelections, matchCase);\n if (!selectionsContainSameText) {\n const model = this._editor.getModel();\n const resultingSelections = [];\n for (let i = 0, len = allSelections.length; i < len; i++) {\n resultingSelections[i] = this._expandEmptyToWord(model, allSelections[i]);\n }\n this._editor.setSelections(resultingSelections);\n return;\n }\n }\n }\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.addSelectionToNextFindMatch());\n }\n }\n addSelectionToPreviousFindMatch(findController) {\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.addSelectionToPreviousFindMatch());\n }\n }\n moveSelectionToNextFindMatch(findController) {\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.moveSelectionToNextFindMatch());\n }\n }\n moveSelectionToPreviousFindMatch(findController) {\n this._beginSessionIfNeeded(findController);\n if (this._session) {\n this._applySessionResult(this._session.moveSelectionToPreviousFindMatch());\n }\n }\n selectAll(findController) {\n if (!this._editor.hasModel()) {\n return;\n }\n let matches = null;\n const findState = findController.getState();\n // Special case: find widget owns entirely what we search for if:\n // - focus is not in the editor (i.e. it is in the find widget)\n // - and the search widget is visible\n // - and the search string is non-empty\n // - and we're searching for a regex\n if (findState.isRevealed && findState.searchString.length > 0 && findState.isRegex) {\n const editorModel = this._editor.getModel();\n if (findState.searchScope) {\n matches = editorModel.findMatches(findState.searchString, findState.searchScope, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n else {\n matches = editorModel.findMatches(findState.searchString, true, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(119 /* EditorOption.wordSeparators */) : null, false, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n }\n }\n else {\n this._beginSessionIfNeeded(findController);\n if (!this._session) {\n return;\n }\n matches = this._session.selectAll(findState.searchScope);\n }\n if (matches.length > 0) {\n const editorSelection = this._editor.getSelection();\n // Have the primary cursor remain the one where the action was invoked\n for (let i = 0, len = matches.length; i < len; i++) {\n const match = matches[i];\n const intersection = match.range.intersectRanges(editorSelection);\n if (intersection) {\n // bingo!\n matches[i] = matches[0];\n matches[0] = match;\n break;\n }\n }\n this._setSelections(matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn)));\n }\n }\n}\nMultiCursorSelectionController.ID = 'editor.contrib.multiCursorController';\nexport class MultiCursorSelectionControllerAction extends EditorAction {\n run(accessor, editor) {\n const multiCursorController = MultiCursorSelectionController.get(editor);\n if (!multiCursorController) {\n return;\n }\n const findController = CommonFindController.get(editor);\n if (!findController) {\n return;\n }\n const viewModel = editor._getViewModel();\n if (viewModel) {\n const previousCursorState = viewModel.getCursorStates();\n this._run(multiCursorController, findController);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n }\n}\nexport class AddSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.addSelectionToNextFindMatch',\n label: nls.localize('addSelectionToNextFindMatch', \"Add Selection To Next Find Match\"),\n alias: 'Add Selection To Next Find Match',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 34 /* KeyCode.KeyD */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miAddSelectionToNextFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add &&Next Occurrence\"),\n order: 5\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.addSelectionToNextFindMatch(findController);\n }\n}\nexport class AddSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.addSelectionToPreviousFindMatch',\n label: nls.localize('addSelectionToPreviousFindMatch', \"Add Selection To Previous Find Match\"),\n alias: 'Add Selection To Previous Find Match',\n precondition: undefined,\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miAddSelectionToPreviousFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add P&&revious Occurrence\"),\n order: 6\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.addSelectionToPreviousFindMatch(findController);\n }\n}\nexport class MoveSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.moveSelectionToNextFindMatch',\n label: nls.localize('moveSelectionToNextFindMatch', \"Move Last Selection To Next Find Match\"),\n alias: 'Move Last Selection To Next Find Match',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: KeyChord(2048 /* KeyMod.CtrlCmd */ | 41 /* KeyCode.KeyK */, 2048 /* KeyMod.CtrlCmd */ | 34 /* KeyCode.KeyD */),\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.moveSelectionToNextFindMatch(findController);\n }\n}\nexport class MoveSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.moveSelectionToPreviousFindMatch',\n label: nls.localize('moveSelectionToPreviousFindMatch', \"Move Last Selection To Previous Find Match\"),\n alias: 'Move Last Selection To Previous Find Match',\n precondition: undefined\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.moveSelectionToPreviousFindMatch(findController);\n }\n}\nexport class SelectHighlightsAction extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.selectHighlights',\n label: nls.localize('selectAllOccurrencesOfFindMatch', \"Select All Occurrences of Find Match\"),\n alias: 'Select All Occurrences of Find Match',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 42 /* KeyCode.KeyL */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '3_multi',\n title: nls.localize({ key: 'miSelectHighlights', comment: ['&& denotes a mnemonic'] }, \"Select All &&Occurrences\"),\n order: 7\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.selectAll(findController);\n }\n}\nexport class CompatChangeAll extends MultiCursorSelectionControllerAction {\n constructor() {\n super({\n id: 'editor.action.changeAll',\n label: nls.localize('changeAll.label', \"Change All Occurrences\"),\n alias: 'Change All Occurrences',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.editorTextFocus),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 60 /* KeyCode.F2 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: '1_modification',\n order: 1.2\n }\n });\n }\n _run(multiCursorController, findController) {\n multiCursorController.selectAll(findController);\n }\n}\nclass SelectionHighlighterState {\n constructor(_model, _searchText, _matchCase, _wordSeparators, prevState) {\n this._model = _model;\n this._searchText = _searchText;\n this._matchCase = _matchCase;\n this._wordSeparators = _wordSeparators;\n this._modelVersionId = this._model.getVersionId();\n this._cachedFindMatches = null;\n if (prevState\n && this._model === prevState._model\n && this._searchText === prevState._searchText\n && this._matchCase === prevState._matchCase\n && this._wordSeparators === prevState._wordSeparators\n && this._modelVersionId === prevState._modelVersionId) {\n this._cachedFindMatches = prevState._cachedFindMatches;\n }\n }\n findMatches() {\n if (this._cachedFindMatches === null) {\n this._cachedFindMatches = this._model.findMatches(this._searchText, true, false, this._matchCase, this._wordSeparators, false).map(m => m.range);\n this._cachedFindMatches.sort(Range.compareRangesUsingStarts);\n }\n return this._cachedFindMatches;\n }\n}\nlet SelectionHighlighter = class SelectionHighlighter extends Disposable {\n constructor(editor, _languageFeaturesService) {\n super();\n this._languageFeaturesService = _languageFeaturesService;\n this.editor = editor;\n this._isEnabled = editor.getOption(99 /* EditorOption.selectionHighlight */);\n this._decorations = editor.createDecorationsCollection();\n this.updateSoon = this._register(new RunOnceScheduler(() => this._update(), 300));\n this.state = null;\n this._register(editor.onDidChangeConfiguration((e) => {\n this._isEnabled = editor.getOption(99 /* EditorOption.selectionHighlight */);\n }));\n this._register(editor.onDidChangeCursorSelection((e) => {\n if (!this._isEnabled) {\n // Early exit if nothing needs to be done!\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n return;\n }\n if (e.selection.isEmpty()) {\n if (e.reason === 3 /* CursorChangeReason.Explicit */) {\n if (this.state) {\n // no longer valid\n this._setState(null);\n }\n this.updateSoon.schedule();\n }\n else {\n this._setState(null);\n }\n }\n else {\n this._update();\n }\n }));\n this._register(editor.onDidChangeModel((e) => {\n this._setState(null);\n }));\n this._register(editor.onDidChangeModelContent((e) => {\n if (this._isEnabled) {\n this.updateSoon.schedule();\n }\n }));\n const findController = CommonFindController.get(editor);\n if (findController) {\n this._register(findController.getState().onFindReplaceStateChange((e) => {\n this._update();\n }));\n }\n }\n _update() {\n this._setState(SelectionHighlighter._createState(this.state, this._isEnabled, this.editor));\n }\n static _createState(oldState, isEnabled, editor) {\n if (!isEnabled) {\n return null;\n }\n if (!editor.hasModel()) {\n return null;\n }\n const s = editor.getSelection();\n if (s.startLineNumber !== s.endLineNumber) {\n // multiline forbidden for perf reasons\n return null;\n }\n const multiCursorController = MultiCursorSelectionController.get(editor);\n if (!multiCursorController) {\n return null;\n }\n const findController = CommonFindController.get(editor);\n if (!findController) {\n return null;\n }\n let r = multiCursorController.getSession(findController);\n if (!r) {\n const allSelections = editor.getSelections();\n if (allSelections.length > 1) {\n const findState = findController.getState();\n const matchCase = findState.matchCase;\n const selectionsContainSameText = modelRangesContainSameText(editor.getModel(), allSelections, matchCase);\n if (!selectionsContainSameText) {\n return null;\n }\n }\n r = MultiCursorSession.create(editor, findController);\n }\n if (!r) {\n return null;\n }\n if (r.currentMatch) {\n // This is an empty selection\n // Do not interfere with semantic word highlighting in the no selection case\n return null;\n }\n if (/^[ \\t]+$/.test(r.searchText)) {\n // whitespace only selection\n return null;\n }\n if (r.searchText.length > 200) {\n // very long selection\n return null;\n }\n // TODO: better handling of this case\n const findState = findController.getState();\n const caseSensitive = findState.matchCase;\n // Return early if the find widget shows the exact same matches\n if (findState.isRevealed) {\n let findStateSearchString = findState.searchString;\n if (!caseSensitive) {\n findStateSearchString = findStateSearchString.toLowerCase();\n }\n let mySearchString = r.searchText;\n if (!caseSensitive) {\n mySearchString = mySearchString.toLowerCase();\n }\n if (findStateSearchString === mySearchString && r.matchCase === findState.matchCase && r.wholeWord === findState.wholeWord && !findState.isRegex) {\n return null;\n }\n }\n return new SelectionHighlighterState(editor.getModel(), r.searchText, r.matchCase, r.wholeWord ? editor.getOption(119 /* EditorOption.wordSeparators */) : null, oldState);\n }\n _setState(newState) {\n this.state = newState;\n if (!this.state) {\n this._decorations.clear();\n return;\n }\n if (!this.editor.hasModel()) {\n return;\n }\n const model = this.editor.getModel();\n if (model.isTooLargeForTokenization()) {\n // the file is too large, so searching word under cursor in the whole document would be blocking the UI.\n return;\n }\n const allMatches = this.state.findMatches();\n const selections = this.editor.getSelections();\n selections.sort(Range.compareRangesUsingStarts);\n // do not overlap with selection (issue #64 and #512)\n const matches = [];\n for (let i = 0, j = 0, len = allMatches.length, lenJ = selections.length; i < len;) {\n const match = allMatches[i];\n if (j >= lenJ) {\n // finished all editor selections\n matches.push(match);\n i++;\n }\n else {\n const cmp = Range.compareRangesUsingStarts(match, selections[j]);\n if (cmp < 0) {\n // match is before sel\n if (selections[j].isEmpty() || !Range.areIntersecting(match, selections[j])) {\n matches.push(match);\n }\n i++;\n }\n else if (cmp > 0) {\n // sel is before match\n j++;\n }\n else {\n // sel is equal to match\n i++;\n j++;\n }\n }\n }\n const hasFindOccurrences = this._languageFeaturesService.documentHighlightProvider.has(model) && this.editor.getOption(74 /* EditorOption.occurrencesHighlight */);\n const decorations = matches.map(r => {\n return {\n range: r,\n // Show in overviewRuler only if model has no semantic highlighting\n options: (hasFindOccurrences ? SelectionHighlighter._SELECTION_HIGHLIGHT : SelectionHighlighter._SELECTION_HIGHLIGHT_OVERVIEW)\n };\n });\n this._decorations.set(decorations);\n }\n dispose() {\n this._setState(null);\n super.dispose();\n }\n};\nSelectionHighlighter.ID = 'editor.contrib.selectionHighlighter';\nSelectionHighlighter._SELECTION_HIGHLIGHT_OVERVIEW = ModelDecorationOptions.register({\n description: 'selection-highlight-overview',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'selectionHighlight',\n minimap: {\n color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n position: MinimapPosition.Inline\n },\n overviewRuler: {\n color: themeColorFromId(overviewRulerSelectionHighlightForeground),\n position: OverviewRulerLane.Center\n }\n});\nSelectionHighlighter._SELECTION_HIGHLIGHT = ModelDecorationOptions.register({\n description: 'selection-highlight',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'selectionHighlight',\n});\nSelectionHighlighter = __decorate([\n __param(1, ILanguageFeaturesService)\n], SelectionHighlighter);\nexport { SelectionHighlighter };\nfunction modelRangesContainSameText(model, ranges, matchCase) {\n const selectedText = getValueInRange(model, ranges[0], !matchCase);\n for (let i = 1, len = ranges.length; i < len; i++) {\n const range = ranges[i];\n if (range.isEmpty()) {\n return false;\n }\n const thisSelectedText = getValueInRange(model, range, !matchCase);\n if (selectedText !== thisSelectedText) {\n return false;\n }\n }\n return true;\n}\nfunction getValueInRange(model, range, toLowerCase) {\n const text = model.getValueInRange(range);\n return (toLowerCase ? text.toLowerCase() : text);\n}\nexport class FocusNextCursor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.focusNextCursor',\n label: nls.localize('mutlicursor.focusNextCursor', \"Focus Next Cursor\"),\n description: {\n description: nls.localize('mutlicursor.focusNextCursor.description', \"Focuses the next cursor\"),\n args: [],\n },\n alias: 'Focus Next Cursor',\n precondition: undefined\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = Array.from(viewModel.getCursorStates());\n const firstCursor = previousCursorState.shift();\n if (!firstCursor) {\n return;\n }\n previousCursorState.push(firstCursor);\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, previousCursorState);\n viewModel.revealPrimaryCursor(args.source, true);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nexport class FocusPreviousCursor extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.focusPreviousCursor',\n label: nls.localize('mutlicursor.focusPreviousCursor', \"Focus Previous Cursor\"),\n description: {\n description: nls.localize('mutlicursor.focusPreviousCursor.description', \"Focuses the previous cursor\"),\n args: [],\n },\n alias: 'Focus Previous Cursor',\n precondition: undefined\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n const viewModel = editor._getViewModel();\n if (viewModel.cursorConfig.readOnly) {\n return;\n }\n viewModel.model.pushStackElement();\n const previousCursorState = Array.from(viewModel.getCursorStates());\n const firstCursor = previousCursorState.pop();\n if (!firstCursor) {\n return;\n }\n previousCursorState.unshift(firstCursor);\n viewModel.setCursorStates(args.source, 3 /* CursorChangeReason.Explicit */, previousCursorState);\n viewModel.revealPrimaryCursor(args.source, true);\n announceCursorChange(previousCursorState, viewModel.getCursorStates());\n }\n}\nregisterEditorContribution(MultiCursorSelectionController.ID, MultiCursorSelectionController);\nregisterEditorContribution(SelectionHighlighter.ID, SelectionHighlighter);\nregisterEditorAction(InsertCursorAbove);\nregisterEditorAction(InsertCursorBelow);\nregisterEditorAction(InsertCursorAtEndOfEachLineSelected);\nregisterEditorAction(AddSelectionToNextFindMatchAction);\nregisterEditorAction(AddSelectionToPreviousFindMatchAction);\nregisterEditorAction(MoveSelectionToNextFindMatchAction);\nregisterEditorAction(MoveSelectionToPreviousFindMatchAction);\nregisterEditorAction(SelectHighlightsAction);\nregisterEditorAction(CompatChangeAll);\nregisterEditorAction(InsertCursorAtEndOfLineSelected);\nregisterEditorAction(InsertCursorAtTopOfLineSelected);\nregisterEditorAction(FocusNextCursor);\nregisterEditorAction(FocusPreviousCursor);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Position } from '../../../common/core/position.js';\nimport * as languages from '../../../common/languages.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nexport const Context = {\n Visible: new RawContextKey('parameterHintsVisible', false),\n MultipleSignatures: new RawContextKey('parameterHintsMultipleSignatures', false),\n};\nexport function provideSignatureHelp(registry, model, position, context, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const supports = registry.ordered(model);\n for (const support of supports) {\n try {\n const result = yield support.provideSignatureHelp(model, position, token, context);\n if (result) {\n return result;\n }\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n }\n return undefined;\n });\n}\nCommandsRegistry.registerCommand('_executeSignatureHelpProvider', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\n const [uri, position, triggerCharacter] = args;\n assertType(URI.isUri(uri));\n assertType(Position.isIPosition(position));\n assertType(typeof triggerCharacter === 'string' || !triggerCharacter);\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n const ref = yield accessor.get(ITextModelService).createModelReference(uri);\n try {\n const result = yield provideSignatureHelp(languageFeaturesService.signatureHelpProvider, ref.object.textEditorModel, Position.lift(position), {\n triggerKind: languages.SignatureHelpTriggerKind.Invoke,\n isRetrigger: false,\n triggerCharacter,\n }, CancellationToken.None);\n if (!result) {\n return undefined;\n }\n setTimeout(() => result.dispose(), 0);\n return result.value;\n }\n finally {\n ref.dispose();\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { createCancelablePromise, Delayer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { Disposable, MutableDisposable } from '../../../../base/common/lifecycle.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nimport * as languages from '../../../common/languages.js';\nimport { provideSignatureHelp } from './provideSignatureHelp.js';\nvar ParameterHintState;\n(function (ParameterHintState) {\n ParameterHintState.Default = { type: 0 /* Type.Default */ };\n class Pending {\n constructor(request, previouslyActiveHints) {\n this.request = request;\n this.previouslyActiveHints = previouslyActiveHints;\n this.type = 2 /* Type.Pending */;\n }\n }\n ParameterHintState.Pending = Pending;\n class Active {\n constructor(hints) {\n this.hints = hints;\n this.type = 1 /* Type.Active */;\n }\n }\n ParameterHintState.Active = Active;\n})(ParameterHintState || (ParameterHintState = {}));\nexport class ParameterHintsModel extends Disposable {\n constructor(editor, providers, delay = ParameterHintsModel.DEFAULT_DELAY) {\n super();\n this._onChangedHints = this._register(new Emitter());\n this.onChangedHints = this._onChangedHints.event;\n this.triggerOnType = false;\n this._state = ParameterHintState.Default;\n this._pendingTriggers = [];\n this._lastSignatureHelpResult = this._register(new MutableDisposable());\n this.triggerChars = new CharacterSet();\n this.retriggerChars = new CharacterSet();\n this.triggerId = 0;\n this.editor = editor;\n this.providers = providers;\n this.throttledDelayer = new Delayer(delay);\n this._register(this.editor.onDidBlurEditorWidget(() => this.cancel()));\n this._register(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));\n this._register(this.editor.onDidChangeModel(e => this.onModelChanged()));\n this._register(this.editor.onDidChangeModelLanguage(_ => this.onModelChanged()));\n this._register(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));\n this._register(this.editor.onDidChangeModelContent(e => this.onModelContentChange()));\n this._register(this.providers.onDidChange(this.onModelChanged, this));\n this._register(this.editor.onDidType(text => this.onDidType(text)));\n this.onEditorConfigurationChange();\n this.onModelChanged();\n }\n get state() { return this._state; }\n set state(value) {\n if (this._state.type === 2 /* ParameterHintState.Type.Pending */) {\n this._state.request.cancel();\n }\n this._state = value;\n }\n cancel(silent = false) {\n this.state = ParameterHintState.Default;\n this.throttledDelayer.cancel();\n if (!silent) {\n this._onChangedHints.fire(undefined);\n }\n }\n trigger(context, delay) {\n const model = this.editor.getModel();\n if (!model || !this.providers.has(model)) {\n return;\n }\n const triggerId = ++this.triggerId;\n this._pendingTriggers.push(context);\n this.throttledDelayer.trigger(() => {\n return this.doTrigger(triggerId);\n }, delay)\n .catch(onUnexpectedError);\n }\n next() {\n if (this.state.type !== 1 /* ParameterHintState.Type.Active */) {\n return;\n }\n const length = this.state.hints.signatures.length;\n const activeSignature = this.state.hints.activeSignature;\n const last = (activeSignature % length) === (length - 1);\n const cycle = this.editor.getOption(78 /* EditorOption.parameterHints */).cycle;\n // If there is only one signature, or we're on last signature of list\n if ((length < 2 || last) && !cycle) {\n this.cancel();\n return;\n }\n this.updateActiveSignature(last && cycle ? 0 : activeSignature + 1);\n }\n previous() {\n if (this.state.type !== 1 /* ParameterHintState.Type.Active */) {\n return;\n }\n const length = this.state.hints.signatures.length;\n const activeSignature = this.state.hints.activeSignature;\n const first = activeSignature === 0;\n const cycle = this.editor.getOption(78 /* EditorOption.parameterHints */).cycle;\n // If there is only one signature, or we're on first signature of list\n if ((length < 2 || first) && !cycle) {\n this.cancel();\n return;\n }\n this.updateActiveSignature(first && cycle ? length - 1 : activeSignature - 1);\n }\n updateActiveSignature(activeSignature) {\n if (this.state.type !== 1 /* ParameterHintState.Type.Active */) {\n return;\n }\n this.state = new ParameterHintState.Active(Object.assign(Object.assign({}, this.state.hints), { activeSignature }));\n this._onChangedHints.fire(this.state.hints);\n }\n doTrigger(triggerId) {\n return __awaiter(this, void 0, void 0, function* () {\n const isRetrigger = this.state.type === 1 /* ParameterHintState.Type.Active */ || this.state.type === 2 /* ParameterHintState.Type.Pending */;\n const activeSignatureHelp = this.getLastActiveHints();\n this.cancel(true);\n if (this._pendingTriggers.length === 0) {\n return false;\n }\n const context = this._pendingTriggers.reduce(mergeTriggerContexts);\n this._pendingTriggers = [];\n const triggerContext = {\n triggerKind: context.triggerKind,\n triggerCharacter: context.triggerCharacter,\n isRetrigger: isRetrigger,\n activeSignatureHelp: activeSignatureHelp\n };\n if (!this.editor.hasModel()) {\n return false;\n }\n const model = this.editor.getModel();\n const position = this.editor.getPosition();\n this.state = new ParameterHintState.Pending(createCancelablePromise(token => provideSignatureHelp(this.providers, model, position, triggerContext, token)), activeSignatureHelp);\n try {\n const result = yield this.state.request;\n // Check that we are still resolving the correct signature help\n if (triggerId !== this.triggerId) {\n result === null || result === void 0 ? void 0 : result.dispose();\n return false;\n }\n if (!result || !result.value.signatures || result.value.signatures.length === 0) {\n result === null || result === void 0 ? void 0 : result.dispose();\n this._lastSignatureHelpResult.clear();\n this.cancel();\n return false;\n }\n else {\n this.state = new ParameterHintState.Active(result.value);\n this._lastSignatureHelpResult.value = result;\n this._onChangedHints.fire(this.state.hints);\n return true;\n }\n }\n catch (error) {\n if (triggerId === this.triggerId) {\n this.state = ParameterHintState.Default;\n }\n onUnexpectedError(error);\n return false;\n }\n });\n }\n getLastActiveHints() {\n switch (this.state.type) {\n case 1 /* ParameterHintState.Type.Active */: return this.state.hints;\n case 2 /* ParameterHintState.Type.Pending */: return this.state.previouslyActiveHints;\n default: return undefined;\n }\n }\n get isTriggered() {\n return this.state.type === 1 /* ParameterHintState.Type.Active */\n || this.state.type === 2 /* ParameterHintState.Type.Pending */\n || this.throttledDelayer.isTriggered();\n }\n onModelChanged() {\n this.cancel();\n // Update trigger characters\n this.triggerChars = new CharacterSet();\n this.retriggerChars = new CharacterSet();\n const model = this.editor.getModel();\n if (!model) {\n return;\n }\n for (const support of this.providers.ordered(model)) {\n for (const ch of support.signatureHelpTriggerCharacters || []) {\n this.triggerChars.add(ch.charCodeAt(0));\n // All trigger characters are also considered retrigger characters\n this.retriggerChars.add(ch.charCodeAt(0));\n }\n for (const ch of support.signatureHelpRetriggerCharacters || []) {\n this.retriggerChars.add(ch.charCodeAt(0));\n }\n }\n }\n onDidType(text) {\n if (!this.triggerOnType) {\n return;\n }\n const lastCharIndex = text.length - 1;\n const triggerCharCode = text.charCodeAt(lastCharIndex);\n if (this.triggerChars.has(triggerCharCode) || this.isTriggered && this.retriggerChars.has(triggerCharCode)) {\n this.trigger({\n triggerKind: languages.SignatureHelpTriggerKind.TriggerCharacter,\n triggerCharacter: text.charAt(lastCharIndex),\n });\n }\n }\n onCursorChange(e) {\n if (e.source === 'mouse') {\n this.cancel();\n }\n else if (this.isTriggered) {\n this.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n }\n }\n onModelContentChange() {\n if (this.isTriggered) {\n this.trigger({ triggerKind: languages.SignatureHelpTriggerKind.ContentChange });\n }\n }\n onEditorConfigurationChange() {\n this.triggerOnType = this.editor.getOption(78 /* EditorOption.parameterHints */).enabled;\n if (!this.triggerOnType) {\n this.cancel();\n }\n }\n dispose() {\n this.cancel(true);\n super.dispose();\n }\n}\nParameterHintsModel.DEFAULT_DELAY = 120; // ms\nfunction mergeTriggerContexts(previous, current) {\n switch (current.triggerKind) {\n case languages.SignatureHelpTriggerKind.Invoke:\n // Invoke overrides previous triggers.\n return current;\n case languages.SignatureHelpTriggerKind.ContentChange:\n // Ignore content changes triggers\n return previous;\n case languages.SignatureHelpTriggerKind.TriggerCharacter:\n default:\n return current;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport * as aria from '../../../../base/browser/ui/aria/aria.js';\nimport { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport { assertIsDefined } from '../../../../base/common/types.js';\nimport './parameterHints.css';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { MarkdownRenderer } from '../../markdownRenderer/browser/markdownRenderer.js';\nimport { ParameterHintsModel } from './parameterHintsModel.js';\nimport { Context } from './provideSignatureHelp.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { editorHoverBackground, editorHoverBorder, editorHoverForeground, listHighlightForeground, registerColor, textCodeBlockBackground, textLinkActiveForeground, textLinkForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { registerThemingParticipant, ThemeIcon } from '../../../../platform/theme/common/themeService.js';\nconst $ = dom.$;\nconst parameterHintsNextIcon = registerIcon('parameter-hints-next', Codicon.chevronDown, nls.localize('parameterHintsNextIcon', 'Icon for show next parameter hint.'));\nconst parameterHintsPreviousIcon = registerIcon('parameter-hints-previous', Codicon.chevronUp, nls.localize('parameterHintsPreviousIcon', 'Icon for show previous parameter hint.'));\nlet ParameterHintsWidget = class ParameterHintsWidget extends Disposable {\n constructor(editor, contextKeyService, openerService, languageService, languageFeaturesService) {\n super();\n this.editor = editor;\n this.renderDisposeables = this._register(new DisposableStore());\n this.visible = false;\n this.announcedLabel = null;\n // Editor.IContentWidget.allowEditorOverflow\n this.allowEditorOverflow = true;\n this.markdownRenderer = this._register(new MarkdownRenderer({ editor }, languageService, openerService));\n this.model = this._register(new ParameterHintsModel(editor, languageFeaturesService.signatureHelpProvider));\n this.keyVisible = Context.Visible.bindTo(contextKeyService);\n this.keyMultipleSignatures = Context.MultipleSignatures.bindTo(contextKeyService);\n this._register(this.model.onChangedHints(newParameterHints => {\n if (newParameterHints) {\n this.show();\n this.render(newParameterHints);\n }\n else {\n this.hide();\n }\n }));\n }\n createParameterHintDOMNodes() {\n const element = $('.editor-widget.parameter-hints-widget');\n const wrapper = dom.append(element, $('.phwrapper'));\n wrapper.tabIndex = -1;\n const controls = dom.append(wrapper, $('.controls'));\n const previous = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsPreviousIcon)));\n const overloads = dom.append(controls, $('.overloads'));\n const next = dom.append(controls, $('.button' + ThemeIcon.asCSSSelector(parameterHintsNextIcon)));\n this._register(dom.addDisposableListener(previous, 'click', e => {\n dom.EventHelper.stop(e);\n this.previous();\n }));\n this._register(dom.addDisposableListener(next, 'click', e => {\n dom.EventHelper.stop(e);\n this.next();\n }));\n const body = $('.body');\n const scrollbar = new DomScrollableElement(body, {\n alwaysConsumeMouseWheel: true,\n });\n this._register(scrollbar);\n wrapper.appendChild(scrollbar.getDomNode());\n const signature = dom.append(body, $('.signature'));\n const docs = dom.append(body, $('.docs'));\n element.style.userSelect = 'text';\n this.domNodes = {\n element,\n signature,\n overloads,\n docs,\n scrollbar,\n };\n this.editor.addContentWidget(this);\n this.hide();\n this._register(this.editor.onDidChangeCursorSelection(e => {\n if (this.visible) {\n this.editor.layoutContentWidget(this);\n }\n }));\n const updateFont = () => {\n if (!this.domNodes) {\n return;\n }\n const fontInfo = this.editor.getOption(46 /* EditorOption.fontInfo */);\n this.domNodes.element.style.fontSize = `${fontInfo.fontSize}px`;\n this.domNodes.element.style.lineHeight = `${fontInfo.lineHeight / fontInfo.fontSize}`;\n };\n updateFont();\n this._register(Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor))\n .filter(e => e.hasChanged(46 /* EditorOption.fontInfo */))\n .on(updateFont, null));\n this._register(this.editor.onDidLayoutChange(e => this.updateMaxHeight()));\n this.updateMaxHeight();\n }\n show() {\n if (this.visible) {\n return;\n }\n if (!this.domNodes) {\n this.createParameterHintDOMNodes();\n }\n this.keyVisible.set(true);\n this.visible = true;\n setTimeout(() => {\n var _a;\n (_a = this.domNodes) === null || _a === void 0 ? void 0 : _a.element.classList.add('visible');\n }, 100);\n this.editor.layoutContentWidget(this);\n }\n hide() {\n var _a;\n this.renderDisposeables.clear();\n if (!this.visible) {\n return;\n }\n this.keyVisible.reset();\n this.visible = false;\n this.announcedLabel = null;\n (_a = this.domNodes) === null || _a === void 0 ? void 0 : _a.element.classList.remove('visible');\n this.editor.layoutContentWidget(this);\n }\n getPosition() {\n if (this.visible) {\n return {\n position: this.editor.getPosition(),\n preference: [1 /* ContentWidgetPositionPreference.ABOVE */, 2 /* ContentWidgetPositionPreference.BELOW */]\n };\n }\n return null;\n }\n render(hints) {\n var _a;\n this.renderDisposeables.clear();\n if (!this.domNodes) {\n return;\n }\n const multiple = hints.signatures.length > 1;\n this.domNodes.element.classList.toggle('multiple', multiple);\n this.keyMultipleSignatures.set(multiple);\n this.domNodes.signature.innerText = '';\n this.domNodes.docs.innerText = '';\n const signature = hints.signatures[hints.activeSignature];\n if (!signature) {\n return;\n }\n const code = dom.append(this.domNodes.signature, $('.code'));\n const fontInfo = this.editor.getOption(46 /* EditorOption.fontInfo */);\n code.style.fontSize = `${fontInfo.fontSize}px`;\n code.style.fontFamily = fontInfo.fontFamily;\n const hasParameters = signature.parameters.length > 0;\n const activeParameterIndex = (_a = signature.activeParameter) !== null && _a !== void 0 ? _a : hints.activeParameter;\n if (!hasParameters) {\n const label = dom.append(code, $('span'));\n label.textContent = signature.label;\n }\n else {\n this.renderParameters(code, signature, activeParameterIndex);\n }\n const activeParameter = signature.parameters[activeParameterIndex];\n if (activeParameter === null || activeParameter === void 0 ? void 0 : activeParameter.documentation) {\n const documentation = $('span.documentation');\n if (typeof activeParameter.documentation === 'string') {\n documentation.textContent = activeParameter.documentation;\n }\n else {\n const renderedContents = this.renderMarkdownDocs(activeParameter.documentation);\n documentation.appendChild(renderedContents.element);\n }\n dom.append(this.domNodes.docs, $('p', {}, documentation));\n }\n if (signature.documentation === undefined) {\n /** no op */\n }\n else if (typeof signature.documentation === 'string') {\n dom.append(this.domNodes.docs, $('p', {}, signature.documentation));\n }\n else {\n const renderedContents = this.renderMarkdownDocs(signature.documentation);\n dom.append(this.domNodes.docs, renderedContents.element);\n }\n const hasDocs = this.hasDocs(signature, activeParameter);\n this.domNodes.signature.classList.toggle('has-docs', hasDocs);\n this.domNodes.docs.classList.toggle('empty', !hasDocs);\n this.domNodes.overloads.textContent =\n String(hints.activeSignature + 1).padStart(hints.signatures.length.toString().length, '0') + '/' + hints.signatures.length;\n if (activeParameter) {\n let labelToAnnounce = '';\n const param = signature.parameters[activeParameterIndex];\n if (Array.isArray(param.label)) {\n labelToAnnounce = signature.label.substring(param.label[0], param.label[1]);\n }\n else {\n labelToAnnounce = param.label;\n }\n if (param.documentation) {\n labelToAnnounce += typeof param.documentation === 'string' ? `, ${param.documentation}` : `, ${param.documentation.value}`;\n }\n if (signature.documentation) {\n labelToAnnounce += typeof signature.documentation === 'string' ? `, ${signature.documentation}` : `, ${signature.documentation.value}`;\n }\n // Select method gets called on every user type while parameter hints are visible.\n // We do not want to spam the user with same announcements, so we only announce if the current parameter changed.\n if (this.announcedLabel !== labelToAnnounce) {\n aria.alert(nls.localize('hint', \"{0}, hint\", labelToAnnounce));\n this.announcedLabel = labelToAnnounce;\n }\n }\n this.editor.layoutContentWidget(this);\n this.domNodes.scrollbar.scanDomNode();\n }\n renderMarkdownDocs(markdown) {\n const renderedContents = this.renderDisposeables.add(this.markdownRenderer.render(markdown, {\n asyncRenderCallback: () => {\n var _a;\n (_a = this.domNodes) === null || _a === void 0 ? void 0 : _a.scrollbar.scanDomNode();\n }\n }));\n renderedContents.element.classList.add('markdown-docs');\n return renderedContents;\n }\n hasDocs(signature, activeParameter) {\n if (activeParameter && typeof activeParameter.documentation === 'string' && assertIsDefined(activeParameter.documentation).length > 0) {\n return true;\n }\n if (activeParameter && typeof activeParameter.documentation === 'object' && assertIsDefined(activeParameter.documentation).value.length > 0) {\n return true;\n }\n if (signature.documentation && typeof signature.documentation === 'string' && assertIsDefined(signature.documentation).length > 0) {\n return true;\n }\n if (signature.documentation && typeof signature.documentation === 'object' && assertIsDefined(signature.documentation.value).length > 0) {\n return true;\n }\n return false;\n }\n renderParameters(parent, signature, activeParameterIndex) {\n const [start, end] = this.getParameterLabelOffsets(signature, activeParameterIndex);\n const beforeSpan = document.createElement('span');\n beforeSpan.textContent = signature.label.substring(0, start);\n const paramSpan = document.createElement('span');\n paramSpan.textContent = signature.label.substring(start, end);\n paramSpan.className = 'parameter active';\n const afterSpan = document.createElement('span');\n afterSpan.textContent = signature.label.substring(end);\n dom.append(parent, beforeSpan, paramSpan, afterSpan);\n }\n getParameterLabelOffsets(signature, paramIdx) {\n const param = signature.parameters[paramIdx];\n if (!param) {\n return [0, 0];\n }\n else if (Array.isArray(param.label)) {\n return param.label;\n }\n else if (!param.label.length) {\n return [0, 0];\n }\n else {\n const regex = new RegExp(`(\\\\W|^)${escapeRegExpCharacters(param.label)}(?=\\\\W|$)`, 'g');\n regex.test(signature.label);\n const idx = regex.lastIndex - param.label.length;\n return idx >= 0\n ? [idx, regex.lastIndex]\n : [0, 0];\n }\n }\n next() {\n this.editor.focus();\n this.model.next();\n }\n previous() {\n this.editor.focus();\n this.model.previous();\n }\n cancel() {\n this.model.cancel();\n }\n getDomNode() {\n if (!this.domNodes) {\n this.createParameterHintDOMNodes();\n }\n return this.domNodes.element;\n }\n getId() {\n return ParameterHintsWidget.ID;\n }\n trigger(context) {\n this.model.trigger(context, 0);\n }\n updateMaxHeight() {\n if (!this.domNodes) {\n return;\n }\n const height = Math.max(this.editor.getLayoutInfo().height / 4, 250);\n const maxHeight = `${height}px`;\n this.domNodes.element.style.maxHeight = maxHeight;\n const wrapper = this.domNodes.element.getElementsByClassName('phwrapper');\n if (wrapper.length) {\n wrapper[0].style.maxHeight = maxHeight;\n }\n }\n};\nParameterHintsWidget.ID = 'editor.widget.parameterHintsWidget';\nParameterHintsWidget = __decorate([\n __param(1, IContextKeyService),\n __param(2, IOpenerService),\n __param(3, ILanguageService),\n __param(4, ILanguageFeaturesService)\n], ParameterHintsWidget);\nexport { ParameterHintsWidget };\nexport const editorHoverWidgetHighlightForeground = registerColor('editorHoverWidget.highlightForeground', { dark: listHighlightForeground, light: listHighlightForeground, hcDark: listHighlightForeground, hcLight: listHighlightForeground }, nls.localize('editorHoverWidgetHighlightForeground', 'Foreground color of the active item in the parameter hint.'));\nregisterThemingParticipant((theme, collector) => {\n const border = theme.getColor(editorHoverBorder);\n if (border) {\n const borderWidth = isHighContrast(theme.type) ? 2 : 1;\n collector.addRule(`.monaco-editor .parameter-hints-widget { border: ${borderWidth}px solid ${border}; }`);\n collector.addRule(`.monaco-editor .parameter-hints-widget.multiple .body { border-left: 1px solid ${border.transparent(0.5)}; }`);\n collector.addRule(`.monaco-editor .parameter-hints-widget .signature.has-docs { border-bottom: 1px solid ${border.transparent(0.5)}; }`);\n }\n const background = theme.getColor(editorHoverBackground);\n if (background) {\n collector.addRule(`.monaco-editor .parameter-hints-widget { background-color: ${background}; }`);\n }\n const link = theme.getColor(textLinkForeground);\n if (link) {\n collector.addRule(`.monaco-editor .parameter-hints-widget a { color: ${link}; }`);\n }\n const linkHover = theme.getColor(textLinkActiveForeground);\n if (linkHover) {\n collector.addRule(`.monaco-editor .parameter-hints-widget a:hover { color: ${linkHover}; }`);\n }\n const foreground = theme.getColor(editorHoverForeground);\n if (foreground) {\n collector.addRule(`.monaco-editor .parameter-hints-widget { color: ${foreground}; }`);\n }\n const codeBackground = theme.getColor(textCodeBlockBackground);\n if (codeBackground) {\n collector.addRule(`.monaco-editor .parameter-hints-widget code { background-color: ${codeBackground}; }`);\n }\n const parameterHighlightColor = theme.getColor(editorHoverWidgetHighlightForeground);\n if (parameterHighlightColor) {\n collector.addRule(`.monaco-editor .parameter-hints-widget .parameter.active { color: ${parameterHighlightColor}}`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport * as languages from '../../../common/languages.js';\nimport { Context } from './provideSignatureHelp.js';\nimport * as nls from '../../../../nls.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ParameterHintsWidget } from './parameterHintsWidget.js';\nlet ParameterHintsController = class ParameterHintsController extends Disposable {\n constructor(editor, instantiationService) {\n super();\n this.editor = editor;\n this.widget = this._register(instantiationService.createInstance(ParameterHintsWidget, this.editor));\n }\n static get(editor) {\n return editor.getContribution(ParameterHintsController.ID);\n }\n cancel() {\n this.widget.cancel();\n }\n previous() {\n this.widget.previous();\n }\n next() {\n this.widget.next();\n }\n trigger(context) {\n this.widget.trigger(context);\n }\n};\nParameterHintsController.ID = 'editor.controller.parameterHints';\nParameterHintsController = __decorate([\n __param(1, IInstantiationService)\n], ParameterHintsController);\nexport class TriggerParameterHintsAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.triggerParameterHints',\n label: nls.localize('parameterHints.trigger.label', \"Trigger Parameter Hints\"),\n alias: 'Trigger Parameter Hints',\n precondition: EditorContextKeys.hasSignatureHelpProvider,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 10 /* KeyCode.Space */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n const controller = ParameterHintsController.get(editor);\n if (controller) {\n controller.trigger({\n triggerKind: languages.SignatureHelpTriggerKind.Invoke\n });\n }\n }\n}\nregisterEditorContribution(ParameterHintsController.ID, ParameterHintsController);\nregisterEditorAction(TriggerParameterHintsAction);\nconst weight = 100 /* KeybindingWeight.EditorContrib */ + 75;\nconst ParameterHintsCommand = EditorCommand.bindToContribution(ParameterHintsController.get);\nregisterEditorCommand(new ParameterHintsCommand({\n id: 'closeParameterHints',\n precondition: Context.Visible,\n handler: x => x.cancel(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.focus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterEditorCommand(new ParameterHintsCommand({\n id: 'showPrevParameterHint',\n precondition: ContextKeyExpr.and(Context.Visible, Context.MultipleSignatures),\n handler: x => x.previous(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.focus,\n primary: 16 /* KeyCode.UpArrow */,\n secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */],\n mac: { primary: 16 /* KeyCode.UpArrow */, secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */, 256 /* KeyMod.WinCtrl */ | 46 /* KeyCode.KeyP */] }\n }\n}));\nregisterEditorCommand(new ParameterHintsCommand({\n id: 'showNextParameterHint',\n precondition: ContextKeyExpr.and(Context.Visible, Context.MultipleSignatures),\n handler: x => x.next(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.focus,\n primary: 18 /* KeyCode.DownArrow */,\n secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */],\n mac: { primary: 18 /* KeyCode.DownArrow */, secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */, 256 /* KeyMod.WinCtrl */ | 44 /* KeyCode.KeyN */] }\n }\n}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Sash } from '../../../../base/browser/ui/sash/sash.js';\nimport { Color, RGBA } from '../../../../base/common/color.js';\nimport { IdGenerator } from '../../../../base/common/idGenerator.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as objects from '../../../../base/common/objects.js';\nimport './zoneWidget.css';\nimport { Range } from '../../../common/core/range.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nconst defaultColor = new Color(new RGBA(0, 122, 204));\nconst defaultOptions = {\n showArrow: true,\n showFrame: true,\n className: '',\n frameColor: defaultColor,\n arrowColor: defaultColor,\n keepEditorSelection: false\n};\nconst WIDGET_ID = 'vs.editor.contrib.zoneWidget';\nexport class ViewZoneDelegate {\n constructor(domNode, afterLineNumber, afterColumn, heightInLines, onDomNodeTop, onComputedHeight) {\n this.id = ''; // A valid zone id should be greater than 0\n this.domNode = domNode;\n this.afterLineNumber = afterLineNumber;\n this.afterColumn = afterColumn;\n this.heightInLines = heightInLines;\n this._onDomNodeTop = onDomNodeTop;\n this._onComputedHeight = onComputedHeight;\n }\n onDomNodeTop(top) {\n this._onDomNodeTop(top);\n }\n onComputedHeight(height) {\n this._onComputedHeight(height);\n }\n}\nexport class OverlayWidgetDelegate {\n constructor(id, domNode) {\n this._id = id;\n this._domNode = domNode;\n }\n getId() {\n return this._id;\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return null;\n }\n}\nclass Arrow {\n constructor(_editor) {\n this._editor = _editor;\n this._ruleName = Arrow._IdGenerator.nextId();\n this._decorations = this._editor.createDecorationsCollection();\n this._color = null;\n this._height = -1;\n }\n dispose() {\n this.hide();\n dom.removeCSSRulesContainingSelector(this._ruleName);\n }\n set color(value) {\n if (this._color !== value) {\n this._color = value;\n this._updateStyle();\n }\n }\n set height(value) {\n if (this._height !== value) {\n this._height = value;\n this._updateStyle();\n }\n }\n _updateStyle() {\n dom.removeCSSRulesContainingSelector(this._ruleName);\n dom.createCSSRule(`.monaco-editor ${this._ruleName}`, `border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px; margin-left: -${this._height}px; `);\n }\n show(where) {\n if (where.column === 1) {\n // the arrow isn't pretty at column 1 and we need to push it out a little\n where = { lineNumber: where.lineNumber, column: 2 };\n }\n this._decorations.set([{\n range: Range.fromPositions(where),\n options: {\n description: 'zone-widget-arrow',\n className: this._ruleName,\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */\n }\n }]);\n }\n hide() {\n this._decorations.clear();\n }\n}\nArrow._IdGenerator = new IdGenerator('.arrow-decoration-');\nexport class ZoneWidget {\n constructor(editor, options = {}) {\n this._arrow = null;\n this._overlayWidget = null;\n this._resizeSash = null;\n this._viewZone = null;\n this._disposables = new DisposableStore();\n this.container = null;\n this._isShowing = false;\n this.editor = editor;\n this._positionMarkerId = this.editor.createDecorationsCollection();\n this.options = objects.deepClone(options);\n objects.mixin(this.options, defaultOptions, false);\n this.domNode = document.createElement('div');\n if (!this.options.isAccessible) {\n this.domNode.setAttribute('aria-hidden', 'true');\n this.domNode.setAttribute('role', 'presentation');\n }\n this._disposables.add(this.editor.onDidLayoutChange((info) => {\n const width = this._getWidth(info);\n this.domNode.style.width = width + 'px';\n this.domNode.style.left = this._getLeft(info) + 'px';\n this._onWidth(width);\n }));\n }\n dispose() {\n if (this._overlayWidget) {\n this.editor.removeOverlayWidget(this._overlayWidget);\n this._overlayWidget = null;\n }\n if (this._viewZone) {\n this.editor.changeViewZones(accessor => {\n if (this._viewZone) {\n accessor.removeZone(this._viewZone.id);\n }\n this._viewZone = null;\n });\n }\n this._positionMarkerId.clear();\n this._disposables.dispose();\n }\n create() {\n this.domNode.classList.add('zone-widget');\n if (this.options.className) {\n this.domNode.classList.add(this.options.className);\n }\n this.container = document.createElement('div');\n this.container.classList.add('zone-widget-container');\n this.domNode.appendChild(this.container);\n if (this.options.showArrow) {\n this._arrow = new Arrow(this.editor);\n this._disposables.add(this._arrow);\n }\n this._fillContainer(this.container);\n this._initSash();\n this._applyStyles();\n }\n style(styles) {\n if (styles.frameColor) {\n this.options.frameColor = styles.frameColor;\n }\n if (styles.arrowColor) {\n this.options.arrowColor = styles.arrowColor;\n }\n this._applyStyles();\n }\n _applyStyles() {\n if (this.container && this.options.frameColor) {\n const frameColor = this.options.frameColor.toString();\n this.container.style.borderTopColor = frameColor;\n this.container.style.borderBottomColor = frameColor;\n }\n if (this._arrow && this.options.arrowColor) {\n const arrowColor = this.options.arrowColor.toString();\n this._arrow.color = arrowColor;\n }\n }\n _getWidth(info) {\n return info.width - info.minimap.minimapWidth - info.verticalScrollbarWidth;\n }\n _getLeft(info) {\n // If minimap is to the left, we move beyond it\n if (info.minimap.minimapWidth > 0 && info.minimap.minimapLeft === 0) {\n return info.minimap.minimapWidth;\n }\n return 0;\n }\n _onViewZoneTop(top) {\n this.domNode.style.top = top + 'px';\n }\n _onViewZoneHeight(height) {\n this.domNode.style.height = `${height}px`;\n if (this.container) {\n const containerHeight = height - this._decoratingElementsHeight();\n this.container.style.height = `${containerHeight}px`;\n const layoutInfo = this.editor.getLayoutInfo();\n this._doLayout(containerHeight, this._getWidth(layoutInfo));\n }\n if (this._resizeSash) {\n this._resizeSash.layout();\n }\n }\n get position() {\n const range = this._positionMarkerId.getRange(0);\n if (!range) {\n return undefined;\n }\n return range.getStartPosition();\n }\n show(rangeOrPos, heightInLines) {\n const range = Range.isIRange(rangeOrPos) ? Range.lift(rangeOrPos) : Range.fromPositions(rangeOrPos);\n this._isShowing = true;\n this._showImpl(range, heightInLines);\n this._isShowing = false;\n this._positionMarkerId.set([{ range, options: ModelDecorationOptions.EMPTY }]);\n }\n hide() {\n if (this._viewZone) {\n this.editor.changeViewZones(accessor => {\n if (this._viewZone) {\n accessor.removeZone(this._viewZone.id);\n }\n });\n this._viewZone = null;\n }\n if (this._overlayWidget) {\n this.editor.removeOverlayWidget(this._overlayWidget);\n this._overlayWidget = null;\n }\n if (this._arrow) {\n this._arrow.hide();\n }\n }\n _decoratingElementsHeight() {\n const lineHeight = this.editor.getOption(61 /* EditorOption.lineHeight */);\n let result = 0;\n if (this.options.showArrow) {\n const arrowHeight = Math.round(lineHeight / 3);\n result += 2 * arrowHeight;\n }\n if (this.options.showFrame) {\n const frameThickness = Math.round(lineHeight / 9);\n result += 2 * frameThickness;\n }\n return result;\n }\n _showImpl(where, heightInLines) {\n const position = where.getStartPosition();\n const layoutInfo = this.editor.getLayoutInfo();\n const width = this._getWidth(layoutInfo);\n this.domNode.style.width = `${width}px`;\n this.domNode.style.left = this._getLeft(layoutInfo) + 'px';\n // Render the widget as zone (rendering) and widget (lifecycle)\n const viewZoneDomNode = document.createElement('div');\n viewZoneDomNode.style.overflow = 'hidden';\n const lineHeight = this.editor.getOption(61 /* EditorOption.lineHeight */);\n // adjust heightInLines to viewport\n const maxHeightInLines = Math.max(12, (this.editor.getLayoutInfo().height / lineHeight) * 0.8);\n heightInLines = Math.min(heightInLines, maxHeightInLines);\n let arrowHeight = 0;\n let frameThickness = 0;\n // Render the arrow one 1/3 of an editor line height\n if (this._arrow && this.options.showArrow) {\n arrowHeight = Math.round(lineHeight / 3);\n this._arrow.height = arrowHeight;\n this._arrow.show(position);\n }\n // Render the frame as 1/9 of an editor line height\n if (this.options.showFrame) {\n frameThickness = Math.round(lineHeight / 9);\n }\n // insert zone widget\n this.editor.changeViewZones((accessor) => {\n if (this._viewZone) {\n accessor.removeZone(this._viewZone.id);\n }\n if (this._overlayWidget) {\n this.editor.removeOverlayWidget(this._overlayWidget);\n this._overlayWidget = null;\n }\n this.domNode.style.top = '-1000px';\n this._viewZone = new ViewZoneDelegate(viewZoneDomNode, position.lineNumber, position.column, heightInLines, (top) => this._onViewZoneTop(top), (height) => this._onViewZoneHeight(height));\n this._viewZone.id = accessor.addZone(this._viewZone);\n this._overlayWidget = new OverlayWidgetDelegate(WIDGET_ID + this._viewZone.id, this.domNode);\n this.editor.addOverlayWidget(this._overlayWidget);\n });\n if (this.container && this.options.showFrame) {\n const width = this.options.frameWidth ? this.options.frameWidth : frameThickness;\n this.container.style.borderTopWidth = width + 'px';\n this.container.style.borderBottomWidth = width + 'px';\n }\n const containerHeight = heightInLines * lineHeight - this._decoratingElementsHeight();\n if (this.container) {\n this.container.style.top = arrowHeight + 'px';\n this.container.style.height = containerHeight + 'px';\n this.container.style.overflow = 'hidden';\n }\n this._doLayout(containerHeight, width);\n if (!this.options.keepEditorSelection) {\n this.editor.setSelection(where);\n }\n const model = this.editor.getModel();\n if (model) {\n const revealLine = where.endLineNumber + 1;\n if (revealLine <= model.getLineCount()) {\n // reveal line below the zone widget\n this.revealLine(revealLine, false);\n }\n else {\n // reveal last line atop\n this.revealLine(model.getLineCount(), true);\n }\n }\n }\n revealLine(lineNumber, isLastLine) {\n if (isLastLine) {\n this.editor.revealLineInCenter(lineNumber, 0 /* ScrollType.Smooth */);\n }\n else {\n this.editor.revealLine(lineNumber, 0 /* ScrollType.Smooth */);\n }\n }\n setCssClass(className, classToReplace) {\n if (!this.container) {\n return;\n }\n if (classToReplace) {\n this.container.classList.remove(classToReplace);\n }\n this.container.classList.add(className);\n }\n _onWidth(widthInPixel) {\n // implement in subclass\n }\n _doLayout(heightInPixel, widthInPixel) {\n // implement in subclass\n }\n _relayout(newHeightInLines) {\n if (this._viewZone && this._viewZone.heightInLines !== newHeightInLines) {\n this.editor.changeViewZones(accessor => {\n if (this._viewZone) {\n this._viewZone.heightInLines = newHeightInLines;\n accessor.layoutZone(this._viewZone.id);\n }\n });\n }\n }\n // --- sash\n _initSash() {\n if (this._resizeSash) {\n return;\n }\n this._resizeSash = this._disposables.add(new Sash(this.domNode, this, { orientation: 1 /* Orientation.HORIZONTAL */ }));\n if (!this.options.isResizeable) {\n this._resizeSash.state = 0 /* SashState.Disabled */;\n }\n let data;\n this._disposables.add(this._resizeSash.onDidStart((e) => {\n if (this._viewZone) {\n data = {\n startY: e.startY,\n heightInLines: this._viewZone.heightInLines,\n };\n }\n }));\n this._disposables.add(this._resizeSash.onDidEnd(() => {\n data = undefined;\n }));\n this._disposables.add(this._resizeSash.onDidChange((evt) => {\n if (data) {\n const lineDelta = (evt.currentY - data.startY) / this.editor.getOption(61 /* EditorOption.lineHeight */);\n const roundedLineDelta = lineDelta < 0 ? Math.ceil(lineDelta) : Math.floor(lineDelta);\n const newHeightInLines = data.heightInLines + roundedLineDelta;\n if (newHeightInLines > 5 && newHeightInLines < 35) {\n this._relayout(newHeightInLines);\n }\n }\n }));\n }\n getHorizontalSashLeft() {\n return 0;\n }\n getHorizontalSashTop() {\n return (this.domNode.style.height === null ? 0 : parseInt(this.domNode.style.height)) - (this._decoratingElementsHeight() / 2);\n }\n getHorizontalSashWidth() {\n const layoutInfo = this.editor.getLayoutInfo();\n return layoutInfo.width - layoutInfo.minimap.minimapWidth;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { Action } from '../../../../base/common/actions.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport * as objects from '../../../../base/common/objects.js';\nimport './media/peekViewWidget.css';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/embeddedCodeEditorWidget.js';\nimport { ZoneWidget } from '../../zoneWidget/browser/zoneWidget.js';\nimport * as nls from '../../../../nls.js';\nimport { createActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator, IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { activeContrastBorder, contrastBorder, editorForeground, editorInfoForeground, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nexport const IPeekViewService = createDecorator('IPeekViewService');\nregisterSingleton(IPeekViewService, class {\n constructor() {\n this._widgets = new Map();\n }\n addExclusiveWidget(editor, widget) {\n const existing = this._widgets.get(editor);\n if (existing) {\n existing.listener.dispose();\n existing.widget.dispose();\n }\n const remove = () => {\n const data = this._widgets.get(editor);\n if (data && data.widget === widget) {\n data.listener.dispose();\n this._widgets.delete(editor);\n }\n };\n this._widgets.set(editor, { widget, listener: widget.onDidClose(remove) });\n }\n});\nexport var PeekContext;\n(function (PeekContext) {\n PeekContext.inPeekEditor = new RawContextKey('inReferenceSearchEditor', true, nls.localize('inReferenceSearchEditor', \"Whether the current code editor is embedded inside peek\"));\n PeekContext.notInPeekEditor = PeekContext.inPeekEditor.toNegated();\n})(PeekContext || (PeekContext = {}));\nlet PeekContextController = class PeekContextController {\n constructor(editor, contextKeyService) {\n if (editor instanceof EmbeddedCodeEditorWidget) {\n PeekContext.inPeekEditor.bindTo(contextKeyService);\n }\n }\n dispose() { }\n};\nPeekContextController.ID = 'editor.contrib.referenceController';\nPeekContextController = __decorate([\n __param(1, IContextKeyService)\n], PeekContextController);\nregisterEditorContribution(PeekContextController.ID, PeekContextController);\nexport function getOuterEditor(accessor) {\n const editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n if (editor instanceof EmbeddedCodeEditorWidget) {\n return editor.getParentEditor();\n }\n return editor;\n}\nconst defaultOptions = {\n headerBackgroundColor: Color.white,\n primaryHeadingColor: Color.fromHex('#333333'),\n secondaryHeadingColor: Color.fromHex('#6c6c6cb3')\n};\nlet PeekViewWidget = class PeekViewWidget extends ZoneWidget {\n constructor(editor, options, instantiationService) {\n super(editor, options);\n this.instantiationService = instantiationService;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n objects.mixin(this.options, defaultOptions, false);\n }\n dispose() {\n if (!this.disposed) {\n this.disposed = true; // prevent consumers who dispose on onDidClose from looping\n super.dispose();\n this._onDidClose.fire(this);\n }\n }\n style(styles) {\n const options = this.options;\n if (styles.headerBackgroundColor) {\n options.headerBackgroundColor = styles.headerBackgroundColor;\n }\n if (styles.primaryHeadingColor) {\n options.primaryHeadingColor = styles.primaryHeadingColor;\n }\n if (styles.secondaryHeadingColor) {\n options.secondaryHeadingColor = styles.secondaryHeadingColor;\n }\n super.style(styles);\n }\n _applyStyles() {\n super._applyStyles();\n const options = this.options;\n if (this._headElement && options.headerBackgroundColor) {\n this._headElement.style.backgroundColor = options.headerBackgroundColor.toString();\n }\n if (this._primaryHeading && options.primaryHeadingColor) {\n this._primaryHeading.style.color = options.primaryHeadingColor.toString();\n }\n if (this._secondaryHeading && options.secondaryHeadingColor) {\n this._secondaryHeading.style.color = options.secondaryHeadingColor.toString();\n }\n if (this._bodyElement && options.frameColor) {\n this._bodyElement.style.borderColor = options.frameColor.toString();\n }\n }\n _fillContainer(container) {\n this.setCssClass('peekview-widget');\n this._headElement = dom.$('.head');\n this._bodyElement = dom.$('.body');\n this._fillHead(this._headElement);\n this._fillBody(this._bodyElement);\n container.appendChild(this._headElement);\n container.appendChild(this._bodyElement);\n }\n _fillHead(container, noCloseAction) {\n const titleElement = dom.$('.peekview-title');\n if (this.options.supportOnTitleClick) {\n titleElement.classList.add('clickable');\n dom.addStandardDisposableListener(titleElement, 'click', event => this._onTitleClick(event));\n }\n dom.append(this._headElement, titleElement);\n this._fillTitleIcon(titleElement);\n this._primaryHeading = dom.$('span.filename');\n this._secondaryHeading = dom.$('span.dirname');\n this._metaHeading = dom.$('span.meta');\n dom.append(titleElement, this._primaryHeading, this._secondaryHeading, this._metaHeading);\n const actionsContainer = dom.$('.peekview-actions');\n dom.append(this._headElement, actionsContainer);\n const actionBarOptions = this._getActionBarOptions();\n this._actionbarWidget = new ActionBar(actionsContainer, actionBarOptions);\n this._disposables.add(this._actionbarWidget);\n if (!noCloseAction) {\n this._actionbarWidget.push(new Action('peekview.close', nls.localize('label.close', \"Close\"), Codicon.close.classNames, true, () => {\n this.dispose();\n return Promise.resolve();\n }), { label: false, icon: true });\n }\n }\n _fillTitleIcon(container) {\n }\n _getActionBarOptions() {\n return {\n actionViewItemProvider: createActionViewItem.bind(undefined, this.instantiationService),\n orientation: 0 /* ActionsOrientation.HORIZONTAL */\n };\n }\n _onTitleClick(event) {\n // implement me if supportOnTitleClick option is set\n }\n setTitle(primaryHeading, secondaryHeading) {\n if (this._primaryHeading && this._secondaryHeading) {\n this._primaryHeading.innerText = primaryHeading;\n this._primaryHeading.setAttribute('title', primaryHeading);\n if (secondaryHeading) {\n this._secondaryHeading.innerText = secondaryHeading;\n }\n else {\n dom.clearNode(this._secondaryHeading);\n }\n }\n }\n setMetaTitle(value) {\n if (this._metaHeading) {\n if (value) {\n this._metaHeading.innerText = value;\n dom.show(this._metaHeading);\n }\n else {\n dom.hide(this._metaHeading);\n }\n }\n }\n _doLayout(heightInPixel, widthInPixel) {\n if (!this._isShowing && heightInPixel < 0) {\n // Looks like the view zone got folded away!\n this.dispose();\n return;\n }\n const headHeight = Math.ceil(this.editor.getOption(61 /* EditorOption.lineHeight */) * 1.2);\n const bodyHeight = Math.round(heightInPixel - (headHeight + 2 /* the border-top/bottom width*/));\n this._doLayoutHead(headHeight, widthInPixel);\n this._doLayoutBody(bodyHeight, widthInPixel);\n }\n _doLayoutHead(heightInPixel, widthInPixel) {\n if (this._headElement) {\n this._headElement.style.height = `${heightInPixel}px`;\n this._headElement.style.lineHeight = this._headElement.style.height;\n }\n }\n _doLayoutBody(heightInPixel, widthInPixel) {\n if (this._bodyElement) {\n this._bodyElement.style.height = `${heightInPixel}px`;\n }\n }\n};\nPeekViewWidget = __decorate([\n __param(2, IInstantiationService)\n], PeekViewWidget);\nexport { PeekViewWidget };\nexport const peekViewTitleBackground = registerColor('peekViewTitle.background', { dark: transparent(editorInfoForeground, .1), light: transparent(editorInfoForeground, .1), hcDark: null, hcLight: null }, nls.localize('peekViewTitleBackground', 'Background color of the peek view title area.'));\nexport const peekViewTitleForeground = registerColor('peekViewTitleLabel.foreground', { dark: Color.white, light: Color.black, hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewTitleForeground', 'Color of the peek view title.'));\nexport const peekViewTitleInfoForeground = registerColor('peekViewTitleDescription.foreground', { dark: '#ccccccb3', light: '#616161', hcDark: '#FFFFFF99', hcLight: '#292929' }, nls.localize('peekViewTitleInfoForeground', 'Color of the peek view title info.'));\nexport const peekViewBorder = registerColor('peekView.border', { dark: editorInfoForeground, light: editorInfoForeground, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('peekViewBorder', 'Color of the peek view borders and arrow.'));\nexport const peekViewResultsBackground = registerColor('peekViewResult.background', { dark: '#252526', light: '#F3F3F3', hcDark: Color.black, hcLight: Color.white }, nls.localize('peekViewResultsBackground', 'Background color of the peek view result list.'));\nexport const peekViewResultsMatchForeground = registerColor('peekViewResult.lineForeground', { dark: '#bbbbbb', light: '#646465', hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewResultsMatchForeground', 'Foreground color for line nodes in the peek view result list.'));\nexport const peekViewResultsFileForeground = registerColor('peekViewResult.fileForeground', { dark: Color.white, light: '#1E1E1E', hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewResultsFileForeground', 'Foreground color for file nodes in the peek view result list.'));\nexport const peekViewResultsSelectionBackground = registerColor('peekViewResult.selectionBackground', { dark: '#3399ff33', light: '#3399ff33', hcDark: null, hcLight: null }, nls.localize('peekViewResultsSelectionBackground', 'Background color of the selected entry in the peek view result list.'));\nexport const peekViewResultsSelectionForeground = registerColor('peekViewResult.selectionForeground', { dark: Color.white, light: '#6C6C6C', hcDark: Color.white, hcLight: editorForeground }, nls.localize('peekViewResultsSelectionForeground', 'Foreground color of the selected entry in the peek view result list.'));\nexport const peekViewEditorBackground = registerColor('peekViewEditor.background', { dark: '#001F33', light: '#F2F8FC', hcDark: Color.black, hcLight: Color.white }, nls.localize('peekViewEditorBackground', 'Background color of the peek view editor.'));\nexport const peekViewEditorGutterBackground = registerColor('peekViewEditorGutter.background', { dark: peekViewEditorBackground, light: peekViewEditorBackground, hcDark: peekViewEditorBackground, hcLight: peekViewEditorBackground }, nls.localize('peekViewEditorGutterBackground', 'Background color of the gutter in the peek view editor.'));\nexport const peekViewResultsMatchHighlight = registerColor('peekViewResult.matchHighlightBackground', { dark: '#ea5c004d', light: '#ea5c004d', hcDark: null, hcLight: null }, nls.localize('peekViewResultsMatchHighlight', 'Match highlight color in the peek view result list.'));\nexport const peekViewEditorMatchHighlight = registerColor('peekViewEditor.matchHighlightBackground', { dark: '#ff8f0099', light: '#f5d802de', hcDark: null, hcLight: null }, nls.localize('peekViewEditorMatchHighlight', 'Match highlight color in the peek view editor.'));\nexport const peekViewEditorMatchHighlightBorder = registerColor('peekViewEditor.matchHighlightBorder', { dark: null, light: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('peekViewEditorMatchHighlightBorder', 'Match highlight border in the peek view editor.'));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { once } from '../../../../base/common/functional.js';\nimport { DisposableStore, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\nimport { getCodeEditor, isDiffEditor } from '../../../browser/editorBrowser.js';\nimport { OverviewRulerLane } from '../../../common/model.js';\nimport { overviewRulerRangeHighlight } from '../../../common/core/editorColorRegistry.js';\nimport { themeColorFromId } from '../../../../platform/theme/common/themeService.js';\n/**\n * A reusable quick access provider for the editor with support\n * for adding decorations for navigating in the currently active file\n * (for example \"Go to line\", \"Go to symbol\").\n */\nexport class AbstractEditorNavigationQuickAccessProvider {\n constructor(options) {\n this.options = options;\n //#endregion\n //#region Decorations Utils\n this.rangeHighlightDecorationId = undefined;\n }\n //#region Provider methods\n provide(picker, token) {\n var _a;\n const disposables = new DisposableStore();\n // Apply options if any\n picker.canAcceptInBackground = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.canAcceptInBackground);\n // Disable filtering & sorting, we control the results\n picker.matchOnLabel = picker.matchOnDescription = picker.matchOnDetail = picker.sortByLabel = false;\n // Provide based on current active editor\n const pickerDisposable = disposables.add(new MutableDisposable());\n pickerDisposable.value = this.doProvide(picker, token);\n // Re-create whenever the active editor changes\n disposables.add(this.onDidActiveTextEditorControlChange(() => {\n // Clear old\n pickerDisposable.value = undefined;\n // Add new\n pickerDisposable.value = this.doProvide(picker, token);\n }));\n return disposables;\n }\n doProvide(picker, token) {\n const disposables = new DisposableStore();\n // With text control\n const editor = this.activeTextEditorControl;\n if (editor && this.canProvideWithTextEditor(editor)) {\n const context = { editor };\n // Restore any view state if this picker was closed\n // without actually going to a line\n const codeEditor = getCodeEditor(editor);\n if (codeEditor) {\n // Remember view state and update it when the cursor position\n // changes even later because it could be that the user has\n // configured quick access to remain open when focus is lost and\n // we always want to restore the current location.\n let lastKnownEditorViewState = withNullAsUndefined(editor.saveViewState());\n disposables.add(codeEditor.onDidChangeCursorPosition(() => {\n lastKnownEditorViewState = withNullAsUndefined(editor.saveViewState());\n }));\n context.restoreViewState = () => {\n if (lastKnownEditorViewState && editor === this.activeTextEditorControl) {\n editor.restoreViewState(lastKnownEditorViewState);\n }\n };\n disposables.add(once(token.onCancellationRequested)(() => { var _a; return (_a = context.restoreViewState) === null || _a === void 0 ? void 0 : _a.call(context); }));\n }\n // Clean up decorations on dispose\n disposables.add(toDisposable(() => this.clearDecorations(editor)));\n // Ask subclass for entries\n disposables.add(this.provideWithTextEditor(context, picker, token));\n }\n // Without text control\n else {\n disposables.add(this.provideWithoutTextEditor(picker, token));\n }\n return disposables;\n }\n /**\n * Subclasses to implement if they can operate on the text editor.\n */\n canProvideWithTextEditor(editor) {\n return true;\n }\n gotoLocation({ editor }, options) {\n editor.setSelection(options.range);\n editor.revealRangeInCenter(options.range, 0 /* ScrollType.Smooth */);\n if (!options.preserveFocus) {\n editor.focus();\n }\n }\n getModel(editor) {\n var _a;\n return isDiffEditor(editor) ?\n (_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.modified :\n editor.getModel();\n }\n addDecorations(editor, range) {\n editor.changeDecorations(changeAccessor => {\n // Reset old decorations if any\n const deleteDecorations = [];\n if (this.rangeHighlightDecorationId) {\n deleteDecorations.push(this.rangeHighlightDecorationId.overviewRulerDecorationId);\n deleteDecorations.push(this.rangeHighlightDecorationId.rangeHighlightId);\n this.rangeHighlightDecorationId = undefined;\n }\n // Add new decorations for the range\n const newDecorations = [\n // highlight the entire line on the range\n {\n range,\n options: {\n description: 'quick-access-range-highlight',\n className: 'rangeHighlight',\n isWholeLine: true\n }\n },\n // also add overview ruler highlight\n {\n range,\n options: {\n description: 'quick-access-range-highlight-overview',\n overviewRuler: {\n color: themeColorFromId(overviewRulerRangeHighlight),\n position: OverviewRulerLane.Full\n }\n }\n }\n ];\n const [rangeHighlightId, overviewRulerDecorationId] = changeAccessor.deltaDecorations(deleteDecorations, newDecorations);\n this.rangeHighlightDecorationId = { rangeHighlightId, overviewRulerDecorationId };\n });\n }\n clearDecorations(editor) {\n const rangeHighlightDecorationId = this.rangeHighlightDecorationId;\n if (rangeHighlightDecorationId) {\n editor.changeDecorations(changeAccessor => {\n changeAccessor.deltaDecorations([\n rangeHighlightDecorationId.overviewRulerDecorationId,\n rangeHighlightDecorationId.rangeHighlightId\n ], []);\n });\n this.rangeHighlightDecorationId = undefined;\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport * as nls from '../../../../nls.js';\nexport class ReadOnlyMessageController extends Disposable {\n constructor(editor) {\n super();\n this.editor = editor;\n this._register(this.editor.onDidAttemptReadOnlyEdit(() => this._onDidAttemptReadOnlyEdit()));\n }\n _onDidAttemptReadOnlyEdit() {\n const messageController = MessageController.get(this.editor);\n if (messageController && this.editor.hasModel()) {\n if (this.editor.isSimpleWidget) {\n messageController.showMessage(nls.localize('editor.simple.readonly', \"Cannot edit in read-only input\"), this.editor.getPosition());\n }\n else {\n messageController.showMessage(nls.localize('editor.readonly', \"Cannot edit in read-only editor\"), this.editor.getPosition());\n }\n }\n }\n}\nReadOnlyMessageController.ID = 'editor.contrib.readOnlyMessageController';\nregisterEditorContribution(ReadOnlyMessageController.ID, ReadOnlyMessageController);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport './renameInputField.css';\nimport { Position } from '../../../common/core/position.js';\nimport { localize } from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { editorWidgetBackground, inputBackground, inputBorder, inputForeground, widgetShadow } from '../../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey('renameInputVisible', false, localize('renameInputVisible', \"Whether the rename input widget is visible\"));\nlet RenameInputField = class RenameInputField {\n constructor(_editor, _acceptKeybindings, _themeService, _keybindingService, contextKeyService) {\n this._editor = _editor;\n this._acceptKeybindings = _acceptKeybindings;\n this._themeService = _themeService;\n this._keybindingService = _keybindingService;\n this._disposables = new DisposableStore();\n this.allowEditorOverflow = true;\n this._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\n this._editor.addContentWidget(this);\n this._disposables.add(this._editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(46 /* EditorOption.fontInfo */)) {\n this._updateFont();\n }\n }));\n this._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\n }\n dispose() {\n this._disposables.dispose();\n this._editor.removeContentWidget(this);\n }\n getId() {\n return '__renameInputWidget';\n }\n getDomNode() {\n if (!this._domNode) {\n this._domNode = document.createElement('div');\n this._domNode.className = 'monaco-editor rename-box';\n this._input = document.createElement('input');\n this._input.className = 'rename-input';\n this._input.type = 'text';\n this._input.setAttribute('aria-label', localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\n this._domNode.appendChild(this._input);\n this._label = document.createElement('div');\n this._label.className = 'rename-label';\n this._domNode.appendChild(this._label);\n const updateLabel = () => {\n var _a, _b;\n const [accept, preview] = this._acceptKeybindings;\n this._keybindingService.lookupKeybinding(accept);\n 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\", (_a = this._keybindingService.lookupKeybinding(accept)) === null || _a === void 0 ? void 0 : _a.getLabel(), (_b = this._keybindingService.lookupKeybinding(preview)) === null || _b === void 0 ? void 0 : _b.getLabel());\n };\n updateLabel();\n this._disposables.add(this._keybindingService.onDidUpdateKeybindings(updateLabel));\n this._updateFont();\n this._updateStyles(this._themeService.getColorTheme());\n }\n return this._domNode;\n }\n _updateStyles(theme) {\n var _a, _b, _c, _d;\n if (!this._input || !this._domNode) {\n return;\n }\n const widgetShadowColor = theme.getColor(widgetShadow);\n this._domNode.style.backgroundColor = String((_a = theme.getColor(editorWidgetBackground)) !== null && _a !== void 0 ? _a : '');\n this._domNode.style.boxShadow = widgetShadowColor ? ` 0 0 8px 2px ${widgetShadowColor}` : '';\n this._domNode.style.color = String((_b = theme.getColor(inputForeground)) !== null && _b !== void 0 ? _b : '');\n this._input.style.backgroundColor = String((_c = theme.getColor(inputBackground)) !== null && _c !== void 0 ? _c : '');\n // this._input.style.color = String(theme.getColor(inputForeground) ?? '');\n const border = theme.getColor(inputBorder);\n this._input.style.borderWidth = border ? '1px' : '0px';\n this._input.style.borderStyle = border ? 'solid' : 'none';\n this._input.style.borderColor = (_d = border === null || border === void 0 ? void 0 : border.toString()) !== null && _d !== void 0 ? _d : 'none';\n }\n _updateFont() {\n if (!this._input || !this._label) {\n return;\n }\n const fontInfo = this._editor.getOption(46 /* EditorOption.fontInfo */);\n this._input.style.fontFamily = fontInfo.fontFamily;\n this._input.style.fontWeight = fontInfo.fontWeight;\n this._input.style.fontSize = `${fontInfo.fontSize}px`;\n this._label.style.fontSize = `${fontInfo.fontSize * 0.8}px`;\n }\n getPosition() {\n if (!this._visible) {\n return null;\n }\n return {\n position: this._position,\n preference: [2 /* ContentWidgetPositionPreference.BELOW */, 1 /* ContentWidgetPositionPreference.ABOVE */]\n };\n }\n afterRender(position) {\n if (!position) {\n // cancel rename when input widget isn't rendered anymore\n this.cancelInput(true);\n }\n }\n acceptInput(wantsPreview) {\n var _a;\n (_a = this._currentAcceptInput) === null || _a === void 0 ? void 0 : _a.call(this, wantsPreview);\n }\n cancelInput(focusEditor) {\n var _a;\n (_a = this._currentCancelInput) === null || _a === void 0 ? void 0 : _a.call(this, focusEditor);\n }\n getInput(where, value, selectionStart, selectionEnd, supportPreview, token) {\n this._domNode.classList.toggle('preview', supportPreview);\n this._position = new Position(where.startLineNumber, where.startColumn);\n this._input.value = value;\n this._input.setAttribute('selectionStart', selectionStart.toString());\n this._input.setAttribute('selectionEnd', selectionEnd.toString());\n this._input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20);\n const disposeOnDone = new DisposableStore();\n return new Promise(resolve => {\n this._currentCancelInput = (focusEditor) => {\n this._currentAcceptInput = undefined;\n this._currentCancelInput = undefined;\n resolve(focusEditor);\n return true;\n };\n this._currentAcceptInput = (wantsPreview) => {\n if (this._input.value.trim().length === 0 || this._input.value === value) {\n // empty or whitespace only or not changed\n this.cancelInput(true);\n return;\n }\n this._currentAcceptInput = undefined;\n this._currentCancelInput = undefined;\n resolve({\n newName: this._input.value,\n wantsPreview: supportPreview && wantsPreview\n });\n };\n disposeOnDone.add(token.onCancellationRequested(() => this.cancelInput(true)));\n disposeOnDone.add(this._editor.onDidBlurEditorWidget(() => this.cancelInput(false)));\n this._show();\n }).finally(() => {\n disposeOnDone.dispose();\n this._hide();\n });\n }\n _show() {\n this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber, 0 /* ScrollType.Smooth */);\n this._visible = true;\n this._visibleContextKey.set(true);\n this._editor.layoutContentWidget(this);\n setTimeout(() => {\n this._input.focus();\n this._input.setSelectionRange(parseInt(this._input.getAttribute('selectionStart')), parseInt(this._input.getAttribute('selectionEnd')));\n }, 100);\n }\n _hide() {\n this._visible = false;\n this._visibleContextKey.reset();\n this._editor.layoutContentWidget(this);\n }\n};\nRenameInputField = __decorate([\n __param(2, IThemeService),\n __param(3, IKeybindingService),\n __param(4, IContextKeyService)\n], RenameInputField);\nexport { RenameInputField };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { IdleValue, raceCancellation } from '../../../../base/common/async.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorStateCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { IBulkEditService, ResourceEdit } from '../../../browser/services/bulkEditService.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ITextResourceConfigurationService } from '../../../common/services/textResourceConfiguration.js';\nimport { MessageController } from '../../message/browser/messageController.js';\nimport * as nls from '../../../../nls.js';\nimport { Extensions } from '../../../../platform/configuration/common/configurationRegistry.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IEditorProgressService } from '../../../../platform/progress/common/progress.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { CONTEXT_RENAME_INPUT_VISIBLE, RenameInputField } from './renameInputField.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nclass RenameSkeleton {\n constructor(model, position, registry) {\n this.model = model;\n this.position = position;\n this._providerRenameIdx = 0;\n this._providers = registry.ordered(model);\n }\n hasProvider() {\n return this._providers.length > 0;\n }\n resolveRenameLocation(token) {\n return __awaiter(this, void 0, void 0, function* () {\n const rejects = [];\n for (this._providerRenameIdx = 0; this._providerRenameIdx < this._providers.length; this._providerRenameIdx++) {\n const provider = this._providers[this._providerRenameIdx];\n if (!provider.resolveRenameLocation) {\n break;\n }\n const res = yield provider.resolveRenameLocation(this.model, this.position, token);\n if (!res) {\n continue;\n }\n if (res.rejectReason) {\n rejects.push(res.rejectReason);\n continue;\n }\n return res;\n }\n const word = this.model.getWordAtPosition(this.position);\n if (!word) {\n return {\n range: Range.fromPositions(this.position),\n text: '',\n rejectReason: rejects.length > 0 ? rejects.join('\\n') : undefined\n };\n }\n return {\n range: new Range(this.position.lineNumber, word.startColumn, this.position.lineNumber, word.endColumn),\n text: word.word,\n rejectReason: rejects.length > 0 ? rejects.join('\\n') : undefined\n };\n });\n }\n provideRenameEdits(newName, token) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._provideRenameEdits(newName, this._providerRenameIdx, [], token);\n });\n }\n _provideRenameEdits(newName, i, rejects, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const provider = this._providers[i];\n if (!provider) {\n return {\n edits: [],\n rejectReason: rejects.join('\\n')\n };\n }\n const result = yield provider.provideRenameEdits(this.model, this.position, newName, token);\n if (!result) {\n return this._provideRenameEdits(newName, i + 1, rejects.concat(nls.localize('no result', \"No result.\")), token);\n }\n else if (result.rejectReason) {\n return this._provideRenameEdits(newName, i + 1, rejects.concat(result.rejectReason), token);\n }\n return result;\n });\n }\n}\nexport function rename(registry, model, position, newName) {\n return __awaiter(this, void 0, void 0, function* () {\n const skeleton = new RenameSkeleton(model, position, registry);\n const loc = yield skeleton.resolveRenameLocation(CancellationToken.None);\n if (loc === null || loc === void 0 ? void 0 : loc.rejectReason) {\n return { edits: [], rejectReason: loc.rejectReason };\n }\n return skeleton.provideRenameEdits(newName, CancellationToken.None);\n });\n}\n// --- register actions and commands\nlet RenameController = class RenameController {\n constructor(editor, _instaService, _notificationService, _bulkEditService, _progressService, _logService, _configService, _languageFeaturesService) {\n this.editor = editor;\n this._instaService = _instaService;\n this._notificationService = _notificationService;\n this._bulkEditService = _bulkEditService;\n this._progressService = _progressService;\n this._logService = _logService;\n this._configService = _configService;\n this._languageFeaturesService = _languageFeaturesService;\n this._disposableStore = new DisposableStore();\n this._cts = new CancellationTokenSource();\n this._renameInputField = this._disposableStore.add(new IdleValue(() => this._disposableStore.add(this._instaService.createInstance(RenameInputField, this.editor, ['acceptRenameInput', 'acceptRenameInputWithPreview']))));\n }\n static get(editor) {\n return editor.getContribution(RenameController.ID);\n }\n dispose() {\n this._disposableStore.dispose();\n this._cts.dispose(true);\n }\n run() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n this._cts.dispose(true);\n if (!this.editor.hasModel()) {\n return undefined;\n }\n const position = this.editor.getPosition();\n const skeleton = new RenameSkeleton(this.editor.getModel(), position, this._languageFeaturesService.renameProvider);\n if (!skeleton.hasProvider()) {\n return undefined;\n }\n this._cts = new EditorStateCancellationTokenSource(this.editor, 4 /* CodeEditorStateFlag.Position */ | 1 /* CodeEditorStateFlag.Value */);\n // resolve rename location\n let loc;\n try {\n const resolveLocationOperation = skeleton.resolveRenameLocation(this._cts.token);\n this._progressService.showWhile(resolveLocationOperation, 250);\n loc = yield resolveLocationOperation;\n }\n catch (e) {\n (_a = MessageController.get(this.editor)) === null || _a === void 0 ? void 0 : _a.showMessage(e || nls.localize('resolveRenameLocationFailed', \"An unknown error occurred while resolving rename location\"), position);\n return undefined;\n }\n if (!loc) {\n return undefined;\n }\n if (loc.rejectReason) {\n (_b = MessageController.get(this.editor)) === null || _b === void 0 ? void 0 : _b.showMessage(loc.rejectReason, position);\n return undefined;\n }\n if (this._cts.token.isCancellationRequested) {\n return undefined;\n }\n this._cts.dispose();\n this._cts = new EditorStateCancellationTokenSource(this.editor, 4 /* CodeEditorStateFlag.Position */ | 1 /* CodeEditorStateFlag.Value */, loc.range);\n // do rename at location\n const selection = this.editor.getSelection();\n let selectionStart = 0;\n let selectionEnd = loc.text.length;\n if (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(loc.range, selection)) {\n selectionStart = Math.max(0, selection.startColumn - loc.range.startColumn);\n selectionEnd = Math.min(loc.range.endColumn, selection.endColumn) - loc.range.startColumn;\n }\n const supportPreview = this._bulkEditService.hasPreviewHandler() && this._configService.getValue(this.editor.getModel().uri, 'editor.rename.enablePreview');\n const inputFieldResult = yield this._renameInputField.value.getInput(loc.range, loc.text, selectionStart, selectionEnd, supportPreview, this._cts.token);\n // no result, only hint to focus the editor or not\n if (typeof inputFieldResult === 'boolean') {\n if (inputFieldResult) {\n this.editor.focus();\n }\n return undefined;\n }\n this.editor.focus();\n const renameOperation = raceCancellation(skeleton.provideRenameEdits(inputFieldResult.newName, this._cts.token), this._cts.token).then((renameResult) => __awaiter(this, void 0, void 0, function* () {\n if (!renameResult || !this.editor.hasModel()) {\n return;\n }\n if (renameResult.rejectReason) {\n this._notificationService.info(renameResult.rejectReason);\n return;\n }\n // collapse selection to active end\n this.editor.setSelection(Range.fromPositions(this.editor.getSelection().getPosition()));\n this._bulkEditService.apply(ResourceEdit.convert(renameResult), {\n editor: this.editor,\n showPreview: inputFieldResult.wantsPreview,\n label: nls.localize('label', \"Renaming '{0}' to '{1}'\", loc === null || loc === void 0 ? void 0 : loc.text, inputFieldResult.newName),\n code: 'undoredo.rename',\n quotableLabel: nls.localize('quotableLabel', \"Renaming {0} to {1}\", loc === null || loc === void 0 ? void 0 : loc.text, inputFieldResult.newName),\n respectAutoSaveConfig: true\n }).then(result => {\n if (result.ariaSummary) {\n alert(nls.localize('aria', \"Successfully renamed '{0}' to '{1}'. Summary: {2}\", loc.text, inputFieldResult.newName, result.ariaSummary));\n }\n }).catch(err => {\n this._notificationService.error(nls.localize('rename.failedApply', \"Rename failed to apply edits\"));\n this._logService.error(err);\n });\n }), err => {\n this._notificationService.error(nls.localize('rename.failed', \"Rename failed to compute edits\"));\n this._logService.error(err);\n });\n this._progressService.showWhile(renameOperation, 250);\n return renameOperation;\n });\n }\n acceptRenameInput(wantsPreview) {\n this._renameInputField.value.acceptInput(wantsPreview);\n }\n cancelRenameInput() {\n this._renameInputField.value.cancelInput(true);\n }\n};\nRenameController.ID = 'editor.contrib.renameController';\nRenameController = __decorate([\n __param(1, IInstantiationService),\n __param(2, INotificationService),\n __param(3, IBulkEditService),\n __param(4, IEditorProgressService),\n __param(5, ILogService),\n __param(6, ITextResourceConfigurationService),\n __param(7, ILanguageFeaturesService)\n], RenameController);\n// ---- action implementation\nexport class RenameAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.rename',\n label: nls.localize('rename.label', \"Rename Symbol\"),\n alias: 'Rename Symbol',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 60 /* KeyCode.F2 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: '1_modification',\n order: 1.1\n }\n });\n }\n runCommand(accessor, args) {\n const editorService = accessor.get(ICodeEditorService);\n const [uri, pos] = Array.isArray(args) && args || [undefined, undefined];\n if (URI.isUri(uri) && Position.isIPosition(pos)) {\n return editorService.openCodeEditor({ resource: uri }, editorService.getActiveCodeEditor()).then(editor => {\n if (!editor) {\n return;\n }\n editor.setPosition(pos);\n editor.invokeWithinContext(accessor => {\n this.reportTelemetry(accessor, editor);\n return this.run(accessor, editor);\n });\n }, onUnexpectedError);\n }\n return super.runCommand(accessor, args);\n }\n run(accessor, editor) {\n const controller = RenameController.get(editor);\n if (controller) {\n return controller.run();\n }\n return Promise.resolve();\n }\n}\nregisterEditorContribution(RenameController.ID, RenameController);\nregisterEditorAction(RenameAction);\nconst RenameCommand = EditorCommand.bindToContribution(RenameController.get);\nregisterEditorCommand(new RenameCommand({\n id: 'acceptRenameInput',\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\n handler: x => x.acceptRenameInput(false),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n kbExpr: EditorContextKeys.focus,\n primary: 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new RenameCommand({\n id: 'acceptRenameInputWithPreview',\n precondition: ContextKeyExpr.and(CONTEXT_RENAME_INPUT_VISIBLE, ContextKeyExpr.has('config.editor.rename.enablePreview')),\n handler: x => x.acceptRenameInput(true),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n kbExpr: EditorContextKeys.focus,\n primary: 1024 /* KeyMod.Shift */ + 3 /* KeyCode.Enter */\n }\n}));\nregisterEditorCommand(new RenameCommand({\n id: 'cancelRenameInput',\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\n handler: x => x.cancelRenameInput(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 99,\n kbExpr: EditorContextKeys.focus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\n// ---- api bridge command\nregisterModelAndPositionCommand('_executeDocumentRenameProvider', function (accessor, model, position, ...args) {\n const [newName] = args;\n assertType(typeof newName === 'string');\n const { renameProvider } = accessor.get(ILanguageFeaturesService);\n return rename(renameProvider, model, position, newName);\n});\nregisterModelAndPositionCommand('_executePrepareRename', function (accessor, model, position) {\n return __awaiter(this, void 0, void 0, function* () {\n const { renameProvider } = accessor.get(ILanguageFeaturesService);\n const skeleton = new RenameSkeleton(model, position, renameProvider);\n const loc = yield skeleton.resolveRenameLocation(CancellationToken.None);\n if (loc === null || loc === void 0 ? void 0 : loc.rejectReason) {\n throw new Error(loc.rejectReason);\n }\n return loc;\n });\n});\n//todo@jrieken use editor options world\nRegistry.as(Extensions.Configuration).registerConfiguration({\n id: 'editor',\n properties: {\n 'editor.rename.enablePreview': {\n scope: 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,\n description: nls.localize('enablePreview', \"Enable/disable the ability to preview changes before renaming\"),\n default: true,\n type: 'boolean'\n }\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nexport class BracketSelectionRangeProvider {\n provideSelectionRanges(model, positions) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = [];\n for (const position of positions) {\n const bucket = [];\n result.push(bucket);\n const ranges = new Map();\n yield new Promise(resolve => BracketSelectionRangeProvider._bracketsRightYield(resolve, 0, model, position, ranges));\n yield new Promise(resolve => BracketSelectionRangeProvider._bracketsLeftYield(resolve, 0, model, position, ranges, bucket));\n }\n return result;\n });\n }\n static _bracketsRightYield(resolve, round, model, pos, ranges) {\n const counts = new Map();\n const t1 = Date.now();\n while (true) {\n if (round >= BracketSelectionRangeProvider._maxRounds) {\n resolve();\n break;\n }\n if (!pos) {\n resolve();\n break;\n }\n const bracket = model.bracketPairs.findNextBracket(pos);\n if (!bracket) {\n resolve();\n break;\n }\n const d = Date.now() - t1;\n if (d > BracketSelectionRangeProvider._maxDuration) {\n setTimeout(() => BracketSelectionRangeProvider._bracketsRightYield(resolve, round + 1, model, pos, ranges));\n break;\n }\n if (bracket.bracketInfo.isOpeningBracket) {\n const key = bracket.bracketInfo.bracketText;\n // wait for closing\n const val = counts.has(key) ? counts.get(key) : 0;\n counts.set(key, val + 1);\n }\n else {\n const key = bracket.bracketInfo.getClosedBrackets()[0].bracketText;\n // process closing\n let val = counts.has(key) ? counts.get(key) : 0;\n val -= 1;\n counts.set(key, Math.max(0, val));\n if (val < 0) {\n let list = ranges.get(key);\n if (!list) {\n list = new LinkedList();\n ranges.set(key, list);\n }\n list.push(bracket.range);\n }\n }\n pos = bracket.range.getEndPosition();\n }\n }\n static _bracketsLeftYield(resolve, round, model, pos, ranges, bucket) {\n const counts = new Map();\n const t1 = Date.now();\n while (true) {\n if (round >= BracketSelectionRangeProvider._maxRounds && ranges.size === 0) {\n resolve();\n break;\n }\n if (!pos) {\n resolve();\n break;\n }\n const bracket = model.bracketPairs.findPrevBracket(pos);\n if (!bracket) {\n resolve();\n break;\n }\n const d = Date.now() - t1;\n if (d > BracketSelectionRangeProvider._maxDuration) {\n setTimeout(() => BracketSelectionRangeProvider._bracketsLeftYield(resolve, round + 1, model, pos, ranges, bucket));\n break;\n }\n if (!bracket.bracketInfo.isOpeningBracket) {\n const key = bracket.bracketInfo.getClosedBrackets()[0].bracketText;\n // wait for opening\n const val = counts.has(key) ? counts.get(key) : 0;\n counts.set(key, val + 1);\n }\n else {\n const key = bracket.bracketInfo.bracketText;\n // opening\n let val = counts.has(key) ? counts.get(key) : 0;\n val -= 1;\n counts.set(key, Math.max(0, val));\n if (val < 0) {\n const list = ranges.get(key);\n if (list) {\n const closing = list.shift();\n if (list.size === 0) {\n ranges.delete(key);\n }\n const innerBracket = Range.fromPositions(bracket.range.getEndPosition(), closing.getStartPosition());\n const outerBracket = Range.fromPositions(bracket.range.getStartPosition(), closing.getEndPosition());\n bucket.push({ range: innerBracket });\n bucket.push({ range: outerBracket });\n BracketSelectionRangeProvider._addBracketLeading(model, outerBracket, bucket);\n }\n }\n }\n pos = bracket.range.getStartPosition();\n }\n }\n static _addBracketLeading(model, bracket, bucket) {\n if (bracket.startLineNumber === bracket.endLineNumber) {\n return;\n }\n // xxxxxxxx {\n //\n // }\n const startLine = bracket.startLineNumber;\n const column = model.getLineFirstNonWhitespaceColumn(startLine);\n if (column !== 0 && column !== bracket.startColumn) {\n bucket.push({ range: Range.fromPositions(new Position(startLine, column), bracket.getEndPosition()) });\n bucket.push({ range: Range.fromPositions(new Position(startLine, 1), bracket.getEndPosition()) });\n }\n // xxxxxxxx\n // {\n //\n // }\n const aboveLine = startLine - 1;\n if (aboveLine > 0) {\n const column = model.getLineFirstNonWhitespaceColumn(aboveLine);\n if (column === bracket.startColumn && column !== model.getLineLastNonWhitespaceColumn(aboveLine)) {\n bucket.push({ range: Range.fromPositions(new Position(aboveLine, column), bracket.getEndPosition()) });\n bucket.push({ range: Range.fromPositions(new Position(aboveLine, 1), bracket.getEndPosition()) });\n }\n }\n }\n}\nBracketSelectionRangeProvider._maxDuration = 30;\nBracketSelectionRangeProvider._maxRounds = 2;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { isLowerAsciiLetter, isUpperAsciiLetter } from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nexport class WordSelectionRangeProvider {\n provideSelectionRanges(model, positions) {\n const result = [];\n for (const position of positions) {\n const bucket = [];\n result.push(bucket);\n this._addInWordRanges(bucket, model, position);\n this._addWordRanges(bucket, model, position);\n this._addWhitespaceLine(bucket, model, position);\n bucket.push({ range: model.getFullModelRange() });\n }\n return result;\n }\n _addInWordRanges(bucket, model, pos) {\n const obj = model.getWordAtPosition(pos);\n if (!obj) {\n return;\n }\n const { word, startColumn } = obj;\n const offset = pos.column - startColumn;\n let start = offset;\n let end = offset;\n let lastCh = 0;\n // LEFT anchor (start)\n for (; start >= 0; start--) {\n const ch = word.charCodeAt(start);\n if ((start !== offset) && (ch === 95 /* CharCode.Underline */ || ch === 45 /* CharCode.Dash */)) {\n // foo-bar OR foo_bar\n break;\n }\n else if (isLowerAsciiLetter(ch) && isUpperAsciiLetter(lastCh)) {\n // fooBar\n break;\n }\n lastCh = ch;\n }\n start += 1;\n // RIGHT anchor (end)\n for (; end < word.length; end++) {\n const ch = word.charCodeAt(end);\n if (isUpperAsciiLetter(ch) && isLowerAsciiLetter(lastCh)) {\n // fooBar\n break;\n }\n else if (ch === 95 /* CharCode.Underline */ || ch === 45 /* CharCode.Dash */) {\n // foo-bar OR foo_bar\n break;\n }\n lastCh = ch;\n }\n if (start < end) {\n bucket.push({ range: new Range(pos.lineNumber, startColumn + start, pos.lineNumber, startColumn + end) });\n }\n }\n _addWordRanges(bucket, model, pos) {\n const word = model.getWordAtPosition(pos);\n if (word) {\n bucket.push({ range: new Range(pos.lineNumber, word.startColumn, pos.lineNumber, word.endColumn) });\n }\n }\n _addWhitespaceLine(bucket, model, pos) {\n if (model.getLineLength(pos.lineNumber) > 0\n && model.getLineFirstNonWhitespaceColumn(pos.lineNumber) === 0\n && model.getLineLastNonWhitespaceColumn(pos.lineNumber) === 0) {\n bucket.push({ range: new Range(pos.lineNumber, 1, pos.lineNumber, model.getLineMaxColumn(pos.lineNumber)) });\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { BracketSelectionRangeProvider } from './bracketSelections.js';\nimport { WordSelectionRangeProvider } from './wordSelections.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nclass SelectionRanges {\n constructor(index, ranges) {\n this.index = index;\n this.ranges = ranges;\n }\n mov(fwd) {\n const index = this.index + (fwd ? 1 : -1);\n if (index < 0 || index >= this.ranges.length) {\n return this;\n }\n const res = new SelectionRanges(index, this.ranges);\n if (res.ranges[index].equalsRange(this.ranges[this.index])) {\n // next range equals this range, retry with next-next\n return res.mov(fwd);\n }\n return res;\n }\n}\nlet SmartSelectController = class SmartSelectController {\n constructor(_editor, _languageFeaturesService) {\n this._editor = _editor;\n this._languageFeaturesService = _languageFeaturesService;\n this._ignoreSelection = false;\n }\n static get(editor) {\n return editor.getContribution(SmartSelectController.ID);\n }\n dispose() {\n var _a;\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n }\n run(forward) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._editor.hasModel()) {\n return;\n }\n const selections = this._editor.getSelections();\n const model = this._editor.getModel();\n if (!this._state) {\n yield provideSelectionRanges(this._languageFeaturesService.selectionRangeProvider, model, selections.map(s => s.getPosition()), this._editor.getOption(104 /* EditorOption.smartSelect */), CancellationToken.None).then(ranges => {\n var _a;\n if (!arrays.isNonEmptyArray(ranges) || ranges.length !== selections.length) {\n // invalid result\n return;\n }\n if (!this._editor.hasModel() || !arrays.equals(this._editor.getSelections(), selections, (a, b) => a.equalsSelection(b))) {\n // invalid editor state\n return;\n }\n for (let i = 0; i < ranges.length; i++) {\n ranges[i] = ranges[i].filter(range => {\n // filter ranges inside the selection\n return range.containsPosition(selections[i].getStartPosition()) && range.containsPosition(selections[i].getEndPosition());\n });\n // prepend current selection\n ranges[i].unshift(selections[i]);\n }\n this._state = ranges.map(ranges => new SelectionRanges(0, ranges));\n // listen to caret move and forget about state\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n this._selectionListener = this._editor.onDidChangeCursorPosition(() => {\n var _a;\n if (!this._ignoreSelection) {\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n this._state = undefined;\n }\n });\n });\n }\n if (!this._state) {\n // no state\n return;\n }\n this._state = this._state.map(state => state.mov(forward));\n const newSelections = this._state.map(state => Selection.fromPositions(state.ranges[state.index].getStartPosition(), state.ranges[state.index].getEndPosition()));\n this._ignoreSelection = true;\n try {\n this._editor.setSelections(newSelections);\n }\n finally {\n this._ignoreSelection = false;\n }\n });\n }\n};\nSmartSelectController.ID = 'editor.contrib.smartSelectController';\nSmartSelectController = __decorate([\n __param(1, ILanguageFeaturesService)\n], SmartSelectController);\nclass AbstractSmartSelect extends EditorAction {\n constructor(forward, opts) {\n super(opts);\n this._forward = forward;\n }\n run(_accessor, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n const controller = SmartSelectController.get(editor);\n if (controller) {\n yield controller.run(this._forward);\n }\n });\n }\n}\nclass GrowSelectionAction extends AbstractSmartSelect {\n constructor() {\n super(true, {\n id: 'editor.action.smartSelect.expand',\n label: nls.localize('smartSelect.expand', \"Expand Selection\"),\n alias: 'Expand Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 17 /* KeyCode.RightArrow */,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */,\n secondary: [256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */],\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '1_basic',\n title: nls.localize({ key: 'miSmartSelectGrow', comment: ['&& denotes a mnemonic'] }, \"&&Expand Selection\"),\n order: 2\n }\n });\n }\n}\n// renamed command id\nCommandsRegistry.registerCommandAlias('editor.action.smartSelect.grow', 'editor.action.smartSelect.expand');\nclass ShrinkSelectionAction extends AbstractSmartSelect {\n constructor() {\n super(false, {\n id: 'editor.action.smartSelect.shrink',\n label: nls.localize('smartSelect.shrink', \"Shrink Selection\"),\n alias: 'Shrink Selection',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 512 /* KeyMod.Alt */ | 15 /* KeyCode.LeftArrow */,\n mac: {\n primary: 2048 /* KeyMod.CtrlCmd */ | 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */,\n secondary: [256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */],\n },\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n menuOpts: {\n menuId: MenuId.MenubarSelectionMenu,\n group: '1_basic',\n title: nls.localize({ key: 'miSmartSelectShrink', comment: ['&& denotes a mnemonic'] }, \"&&Shrink Selection\"),\n order: 3\n }\n });\n }\n}\nregisterEditorContribution(SmartSelectController.ID, SmartSelectController);\nregisterEditorAction(GrowSelectionAction);\nregisterEditorAction(ShrinkSelectionAction);\nexport function provideSelectionRanges(registry, model, positions, options, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const providers = registry.all(model)\n .concat(new WordSelectionRangeProvider()); // ALWAYS have word based selection range\n if (providers.length === 1) {\n // add word selection and bracket selection when no provider exists\n providers.unshift(new BracketSelectionRangeProvider());\n }\n const work = [];\n const allRawRanges = [];\n for (const provider of providers) {\n work.push(Promise.resolve(provider.provideSelectionRanges(model, positions, token)).then(allProviderRanges => {\n if (arrays.isNonEmptyArray(allProviderRanges) && allProviderRanges.length === positions.length) {\n for (let i = 0; i < positions.length; i++) {\n if (!allRawRanges[i]) {\n allRawRanges[i] = [];\n }\n for (const oneProviderRanges of allProviderRanges[i]) {\n if (Range.isIRange(oneProviderRanges.range) && Range.containsPosition(oneProviderRanges.range, positions[i])) {\n allRawRanges[i].push(Range.lift(oneProviderRanges.range));\n }\n }\n }\n }\n }, onUnexpectedExternalError));\n }\n yield Promise.all(work);\n return allRawRanges.map(oneRawRanges => {\n if (oneRawRanges.length === 0) {\n return [];\n }\n // sort all by start/end position\n oneRawRanges.sort((a, b) => {\n if (Position.isBefore(a.getStartPosition(), b.getStartPosition())) {\n return 1;\n }\n else if (Position.isBefore(b.getStartPosition(), a.getStartPosition())) {\n return -1;\n }\n else if (Position.isBefore(a.getEndPosition(), b.getEndPosition())) {\n return -1;\n }\n else if (Position.isBefore(b.getEndPosition(), a.getEndPosition())) {\n return 1;\n }\n else {\n return 0;\n }\n });\n // remove ranges that don't contain the former range or that are equal to the\n // former range\n const oneRanges = [];\n let last;\n for (const range of oneRawRanges) {\n if (!last || (Range.containsRange(range, last) && !Range.equalsRange(range, last))) {\n oneRanges.push(range);\n last = range;\n }\n }\n if (!options.selectLeadingAndTrailingWhitespace) {\n return oneRanges;\n }\n // add ranges that expand trivia at line starts and ends whenever a range\n // wraps onto the a new line\n const oneRangesWithTrivia = [oneRanges[0]];\n for (let i = 1; i < oneRanges.length; i++) {\n const prev = oneRanges[i - 1];\n const cur = oneRanges[i];\n if (cur.startLineNumber !== prev.startLineNumber || cur.endLineNumber !== prev.endLineNumber) {\n // add line/block range without leading/failing whitespace\n const rangeNoWhitespace = new Range(prev.startLineNumber, model.getLineFirstNonWhitespaceColumn(prev.startLineNumber), prev.endLineNumber, model.getLineLastNonWhitespaceColumn(prev.endLineNumber));\n if (rangeNoWhitespace.containsRange(prev) && !rangeNoWhitespace.equalsRange(prev) && cur.containsRange(rangeNoWhitespace) && !cur.equalsRange(rangeNoWhitespace)) {\n oneRangesWithTrivia.push(rangeNoWhitespace);\n }\n // add line/block range\n const rangeFull = new Range(prev.startLineNumber, 1, prev.endLineNumber, model.getLineMaxColumn(prev.endLineNumber));\n if (rangeFull.containsRange(prev) && !rangeFull.equalsRange(rangeNoWhitespace) && cur.containsRange(rangeFull) && !cur.equalsRange(rangeFull)) {\n oneRangesWithTrivia.push(rangeFull);\n }\n }\n oneRangesWithTrivia.push(cur);\n }\n return oneRangesWithTrivia;\n });\n });\n}\nCommandsRegistry.registerCommand('_executeSelectionRangeProvider', function (accessor, ...args) {\n return __awaiter(this, void 0, void 0, function* () {\n const [resource, positions] = args;\n assertType(URI.isUri(resource));\n const registry = accessor.get(ILanguageFeaturesService).selectionRangeProvider;\n const reference = yield accessor.get(ITextModelService).createModelReference(resource);\n try {\n return provideSelectionRanges(registry, reference.object.textEditorModel, positions, { selectLeadingAndTrailingWhitespace: true }, CancellationToken.None);\n }\n finally {\n reference.dispose();\n }\n });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { showSimpleSuggestions } from '../../suggest/browser/suggest.js';\nimport { localize } from '../../../../nls.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { SnippetSession } from './snippetSession.js';\nconst _defaultOptions = {\n overwriteBefore: 0,\n overwriteAfter: 0,\n undoStopBefore: true,\n undoStopAfter: true,\n adjustWhitespace: true,\n clipboardText: undefined,\n overtypingCapturer: undefined\n};\nlet SnippetController2 = class SnippetController2 {\n constructor(_editor, _logService, _languageFeaturesService, contextKeyService, _languageConfigurationService) {\n this._editor = _editor;\n this._logService = _logService;\n this._languageFeaturesService = _languageFeaturesService;\n this._languageConfigurationService = _languageConfigurationService;\n this._snippetListener = new DisposableStore();\n this._modelVersionId = -1;\n this._inSnippet = SnippetController2.InSnippetMode.bindTo(contextKeyService);\n this._hasNextTabstop = SnippetController2.HasNextTabstop.bindTo(contextKeyService);\n this._hasPrevTabstop = SnippetController2.HasPrevTabstop.bindTo(contextKeyService);\n }\n static get(editor) {\n return editor.getContribution(SnippetController2.ID);\n }\n dispose() {\n var _a;\n this._inSnippet.reset();\n this._hasPrevTabstop.reset();\n this._hasNextTabstop.reset();\n (_a = this._session) === null || _a === void 0 ? void 0 : _a.dispose();\n this._snippetListener.dispose();\n }\n apply(edits, opts) {\n try {\n this._doInsert(edits, typeof opts === 'undefined' ? _defaultOptions : Object.assign(Object.assign({}, _defaultOptions), opts));\n }\n catch (e) {\n this.cancel();\n this._logService.error(e);\n this._logService.error('snippet_error');\n this._logService.error('insert_edits=', edits);\n this._logService.error('existing_template=', this._session ? this._session._logInfo() : '');\n }\n }\n insert(template, opts) {\n // this is here to find out more about the yet-not-understood\n // error that sometimes happens when we fail to inserted a nested\n // snippet\n try {\n this._doInsert(template, typeof opts === 'undefined' ? _defaultOptions : Object.assign(Object.assign({}, _defaultOptions), opts));\n }\n catch (e) {\n this.cancel();\n this._logService.error(e);\n this._logService.error('snippet_error');\n this._logService.error('insert_template=', template);\n this._logService.error('existing_template=', this._session ? this._session._logInfo() : '');\n }\n }\n _doInsert(template, opts) {\n var _a;\n if (!this._editor.hasModel()) {\n return;\n }\n // don't listen while inserting the snippet\n // as that is the inflight state causing cancelation\n this._snippetListener.clear();\n if (opts.undoStopBefore) {\n this._editor.getModel().pushStackElement();\n }\n // don't merge\n if (this._session && typeof template !== 'string') {\n this.cancel();\n }\n if (!this._session) {\n this._modelVersionId = this._editor.getModel().getAlternativeVersionId();\n this._session = new SnippetSession(this._editor, template, opts, this._languageConfigurationService);\n this._session.insert();\n }\n else {\n assertType(typeof template === 'string');\n this._session.merge(template, opts);\n }\n if (opts.undoStopAfter) {\n this._editor.getModel().pushStackElement();\n }\n // regster completion item provider when there is any choice element\n if ((_a = this._session) === null || _a === void 0 ? void 0 : _a.hasChoice) {\n this._choiceCompletionItemProvider = {\n provideCompletionItems: (model, position) => {\n if (!this._session || model !== this._editor.getModel() || !Position.equals(this._editor.getPosition(), position)) {\n return undefined;\n }\n const { activeChoice } = this._session;\n if (!activeChoice || activeChoice.choice.options.length === 0) {\n return undefined;\n }\n const word = model.getValueInRange(activeChoice.range);\n const isAnyOfOptions = Boolean(activeChoice.choice.options.find(o => o.value === word));\n const suggestions = [];\n for (let i = 0; i < activeChoice.choice.options.length; i++) {\n const option = activeChoice.choice.options[i];\n suggestions.push({\n kind: 13 /* CompletionItemKind.Value */,\n label: option.value,\n insertText: option.value,\n sortText: 'a'.repeat(i + 1),\n range: activeChoice.range,\n filterText: isAnyOfOptions ? `${word}_${option.value}` : undefined,\n command: { id: 'jumpToNextSnippetPlaceholder', title: localize('next', 'Go to next placeholder...') }\n });\n }\n return { suggestions };\n }\n };\n const registration = this._languageFeaturesService.completionProvider.register({\n language: this._editor.getModel().getLanguageId(),\n pattern: this._editor.getModel().uri.fsPath,\n scheme: this._editor.getModel().uri.scheme\n }, this._choiceCompletionItemProvider);\n this._snippetListener.add(registration);\n }\n this._updateState();\n this._snippetListener.add(this._editor.onDidChangeModelContent(e => e.isFlush && this.cancel()));\n this._snippetListener.add(this._editor.onDidChangeModel(() => this.cancel()));\n this._snippetListener.add(this._editor.onDidChangeCursorSelection(() => this._updateState()));\n }\n _updateState() {\n if (!this._session || !this._editor.hasModel()) {\n // canceled in the meanwhile\n return;\n }\n if (this._modelVersionId === this._editor.getModel().getAlternativeVersionId()) {\n // undo until the 'before' state happened\n // and makes use cancel snippet mode\n return this.cancel();\n }\n if (!this._session.hasPlaceholder) {\n // don't listen for selection changes and don't\n // update context keys when the snippet is plain text\n return this.cancel();\n }\n if (this._session.isAtLastPlaceholder || !this._session.isSelectionWithinPlaceholders()) {\n this._editor.getModel().pushStackElement();\n return this.cancel();\n }\n this._inSnippet.set(true);\n this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder);\n this._hasNextTabstop.set(!this._session.isAtLastPlaceholder);\n this._handleChoice();\n }\n _handleChoice() {\n if (!this._session || !this._editor.hasModel()) {\n this._currentChoice = undefined;\n return;\n }\n const { activeChoice } = this._session;\n if (!activeChoice || !this._choiceCompletionItemProvider) {\n this._currentChoice = undefined;\n return;\n }\n if (this._currentChoice !== activeChoice.choice) {\n this._currentChoice = activeChoice.choice;\n // trigger suggest with the special choice completion provider\n queueMicrotask(() => {\n showSimpleSuggestions(this._editor, this._choiceCompletionItemProvider);\n });\n }\n }\n finish() {\n while (this._inSnippet.get()) {\n this.next();\n }\n }\n cancel(resetSelection = false) {\n var _a;\n this._inSnippet.reset();\n this._hasPrevTabstop.reset();\n this._hasNextTabstop.reset();\n this._snippetListener.clear();\n this._currentChoice = undefined;\n (_a = this._session) === null || _a === void 0 ? void 0 : _a.dispose();\n this._session = undefined;\n this._modelVersionId = -1;\n if (resetSelection) {\n // reset selection to the primary cursor when being asked\n // for. this happens when explicitly cancelling snippet mode,\n // e.g. when pressing ESC\n this._editor.setSelections([this._editor.getSelection()]);\n }\n }\n prev() {\n if (this._session) {\n this._session.prev();\n }\n this._updateState();\n }\n next() {\n if (this._session) {\n this._session.next();\n }\n this._updateState();\n }\n isInSnippet() {\n return Boolean(this._inSnippet.get());\n }\n};\nSnippetController2.ID = 'snippetController2';\nSnippetController2.InSnippetMode = new RawContextKey('inSnippetMode', false, localize('inSnippetMode', \"Whether the editor in current in snippet mode\"));\nSnippetController2.HasNextTabstop = new RawContextKey('hasNextTabstop', false, localize('hasNextTabstop', \"Whether there is a next tab stop when in snippet mode\"));\nSnippetController2.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false, localize('hasPrevTabstop', \"Whether there is a previous tab stop when in snippet mode\"));\nSnippetController2 = __decorate([\n __param(1, ILogService),\n __param(2, ILanguageFeaturesService),\n __param(3, IContextKeyService),\n __param(4, ILanguageConfigurationService)\n], SnippetController2);\nexport { SnippetController2 };\nregisterEditorContribution(SnippetController2.ID, SnippetController2);\nconst CommandCtor = EditorCommand.bindToContribution(SnippetController2.get);\nregisterEditorCommand(new CommandCtor({\n id: 'jumpToNextSnippetPlaceholder',\n precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasNextTabstop),\n handler: ctrl => ctrl.next(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 2 /* KeyCode.Tab */\n }\n}));\nregisterEditorCommand(new CommandCtor({\n id: 'jumpToPrevSnippetPlaceholder',\n precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasPrevTabstop),\n handler: ctrl => ctrl.prev(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */\n }\n}));\nregisterEditorCommand(new CommandCtor({\n id: 'leaveSnippet',\n precondition: SnippetController2.InSnippetMode,\n handler: ctrl => ctrl.cancel(true),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 30,\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterEditorCommand(new CommandCtor({\n id: 'acceptSnippet',\n precondition: SnippetController2.InSnippetMode,\n handler: ctrl => ctrl.finish(),\n // kbOpts: {\n // \tweight: KeybindingWeight.EditorContrib + 30,\n // \tkbExpr: EditorContextKeys.textFocus,\n // \tprimary: KeyCode.Enter,\n // }\n}));\n// ---\nexport function performSnippetEdit(editor, snippet, selections) {\n const controller = SnippetController2.get(editor);\n if (!controller) {\n return false;\n }\n editor.focus();\n controller.apply(selections.map(selection => {\n return {\n range: Selection.liftSelection(selection),\n template: snippet\n };\n }));\n return controller.isInSnippet();\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class Scanner {\n constructor() {\n this.value = '';\n this.pos = 0;\n }\n static isDigitCharacter(ch) {\n return ch >= 48 /* CharCode.Digit0 */ && ch <= 57 /* CharCode.Digit9 */;\n }\n static isVariableCharacter(ch) {\n return ch === 95 /* CharCode.Underline */\n || (ch >= 97 /* CharCode.a */ && ch <= 122 /* CharCode.z */)\n || (ch >= 65 /* CharCode.A */ && ch <= 90 /* CharCode.Z */);\n }\n text(value) {\n this.value = value;\n this.pos = 0;\n }\n tokenText(token) {\n return this.value.substr(token.pos, token.len);\n }\n next() {\n if (this.pos >= this.value.length) {\n return { type: 14 /* TokenType.EOF */, pos: this.pos, len: 0 };\n }\n const pos = this.pos;\n let len = 0;\n let ch = this.value.charCodeAt(pos);\n let type;\n // static types\n type = Scanner._table[ch];\n if (typeof type === 'number') {\n this.pos += 1;\n return { type, pos, len: 1 };\n }\n // number\n if (Scanner.isDigitCharacter(ch)) {\n type = 8 /* TokenType.Int */;\n do {\n len += 1;\n ch = this.value.charCodeAt(pos + len);\n } while (Scanner.isDigitCharacter(ch));\n this.pos += len;\n return { type, pos, len };\n }\n // variable name\n if (Scanner.isVariableCharacter(ch)) {\n type = 9 /* TokenType.VariableName */;\n do {\n ch = this.value.charCodeAt(pos + (++len));\n } while (Scanner.isVariableCharacter(ch) || Scanner.isDigitCharacter(ch));\n this.pos += len;\n return { type, pos, len };\n }\n // format\n type = 10 /* TokenType.Format */;\n do {\n len += 1;\n ch = this.value.charCodeAt(pos + len);\n } while (!isNaN(ch)\n && typeof Scanner._table[ch] === 'undefined' // not static token\n && !Scanner.isDigitCharacter(ch) // not number\n && !Scanner.isVariableCharacter(ch) // not variable\n );\n this.pos += len;\n return { type, pos, len };\n }\n}\nScanner._table = {\n [36 /* CharCode.DollarSign */]: 0 /* TokenType.Dollar */,\n [58 /* CharCode.Colon */]: 1 /* TokenType.Colon */,\n [44 /* CharCode.Comma */]: 2 /* TokenType.Comma */,\n [123 /* CharCode.OpenCurlyBrace */]: 3 /* TokenType.CurlyOpen */,\n [125 /* CharCode.CloseCurlyBrace */]: 4 /* TokenType.CurlyClose */,\n [92 /* CharCode.Backslash */]: 5 /* TokenType.Backslash */,\n [47 /* CharCode.Slash */]: 6 /* TokenType.Forwardslash */,\n [124 /* CharCode.Pipe */]: 7 /* TokenType.Pipe */,\n [43 /* CharCode.Plus */]: 11 /* TokenType.Plus */,\n [45 /* CharCode.Dash */]: 12 /* TokenType.Dash */,\n [63 /* CharCode.QuestionMark */]: 13 /* TokenType.QuestionMark */,\n};\nexport class Marker {\n constructor() {\n this._children = [];\n }\n appendChild(child) {\n if (child instanceof Text && this._children[this._children.length - 1] instanceof Text) {\n // this and previous child are text -> merge them\n this._children[this._children.length - 1].value += child.value;\n }\n else {\n // normal adoption of child\n child.parent = this;\n this._children.push(child);\n }\n return this;\n }\n replace(child, others) {\n const { parent } = child;\n const idx = parent.children.indexOf(child);\n const newChildren = parent.children.slice(0);\n newChildren.splice(idx, 1, ...others);\n parent._children = newChildren;\n (function _fixParent(children, parent) {\n for (const child of children) {\n child.parent = parent;\n _fixParent(child.children, child);\n }\n })(others, parent);\n }\n get children() {\n return this._children;\n }\n get snippet() {\n let candidate = this;\n while (true) {\n if (!candidate) {\n return undefined;\n }\n if (candidate instanceof TextmateSnippet) {\n return candidate;\n }\n candidate = candidate.parent;\n }\n }\n toString() {\n return this.children.reduce((prev, cur) => prev + cur.toString(), '');\n }\n len() {\n return 0;\n }\n}\nexport class Text extends Marker {\n constructor(value) {\n super();\n this.value = value;\n }\n toString() {\n return this.value;\n }\n len() {\n return this.value.length;\n }\n clone() {\n return new Text(this.value);\n }\n}\nexport class TransformableMarker extends Marker {\n}\nexport class Placeholder extends TransformableMarker {\n constructor(index) {\n super();\n this.index = index;\n }\n static compareByIndex(a, b) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.isFinalTabstop) {\n return 1;\n }\n else if (b.isFinalTabstop) {\n return -1;\n }\n else if (a.index < b.index) {\n return -1;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return 0;\n }\n }\n get isFinalTabstop() {\n return this.index === 0;\n }\n get choice() {\n return this._children.length === 1 && this._children[0] instanceof Choice\n ? this._children[0]\n : undefined;\n }\n clone() {\n const ret = new Placeholder(this.index);\n if (this.transform) {\n ret.transform = this.transform.clone();\n }\n ret._children = this.children.map(child => child.clone());\n return ret;\n }\n}\nexport class Choice extends Marker {\n constructor() {\n super(...arguments);\n this.options = [];\n }\n appendChild(marker) {\n if (marker instanceof Text) {\n marker.parent = this;\n this.options.push(marker);\n }\n return this;\n }\n toString() {\n return this.options[0].value;\n }\n len() {\n return this.options[0].len();\n }\n clone() {\n const ret = new Choice();\n this.options.forEach(ret.appendChild, ret);\n return ret;\n }\n}\nexport class Transform extends Marker {\n constructor() {\n super(...arguments);\n this.regexp = new RegExp('');\n }\n resolve(value) {\n const _this = this;\n let didMatch = false;\n let ret = value.replace(this.regexp, function () {\n didMatch = true;\n return _this._replace(Array.prototype.slice.call(arguments, 0, -2));\n });\n // when the regex didn't match and when the transform has\n // else branches, then run those\n if (!didMatch && this._children.some(child => child instanceof FormatString && Boolean(child.elseValue))) {\n ret = this._replace([]);\n }\n return ret;\n }\n _replace(groups) {\n let ret = '';\n for (const marker of this._children) {\n if (marker instanceof FormatString) {\n let value = groups[marker.index] || '';\n value = marker.resolve(value);\n ret += value;\n }\n else {\n ret += marker.toString();\n }\n }\n return ret;\n }\n toString() {\n return '';\n }\n clone() {\n const ret = new Transform();\n ret.regexp = new RegExp(this.regexp.source, '' + (this.regexp.ignoreCase ? 'i' : '') + (this.regexp.global ? 'g' : ''));\n ret._children = this.children.map(child => child.clone());\n return ret;\n }\n}\nexport class FormatString extends Marker {\n constructor(index, shorthandName, ifValue, elseValue) {\n super();\n this.index = index;\n this.shorthandName = shorthandName;\n this.ifValue = ifValue;\n this.elseValue = elseValue;\n }\n resolve(value) {\n if (this.shorthandName === 'upcase') {\n return !value ? '' : value.toLocaleUpperCase();\n }\n else if (this.shorthandName === 'downcase') {\n return !value ? '' : value.toLocaleLowerCase();\n }\n else if (this.shorthandName === 'capitalize') {\n return !value ? '' : (value[0].toLocaleUpperCase() + value.substr(1));\n }\n else if (this.shorthandName === 'pascalcase') {\n return !value ? '' : this._toPascalCase(value);\n }\n else if (this.shorthandName === 'camelcase') {\n return !value ? '' : this._toCamelCase(value);\n }\n else if (Boolean(value) && typeof this.ifValue === 'string') {\n return this.ifValue;\n }\n else if (!Boolean(value) && typeof this.elseValue === 'string') {\n return this.elseValue;\n }\n else {\n return value || '';\n }\n }\n _toPascalCase(value) {\n const match = value.match(/[a-z0-9]+/gi);\n if (!match) {\n return value;\n }\n return match.map(word => {\n return word.charAt(0).toUpperCase() + word.substr(1);\n })\n .join('');\n }\n _toCamelCase(value) {\n const match = value.match(/[a-z0-9]+/gi);\n if (!match) {\n return value;\n }\n return match.map((word, index) => {\n if (index === 0) {\n return word.charAt(0).toLowerCase() + word.substr(1);\n }\n return word.charAt(0).toUpperCase() + word.substr(1);\n })\n .join('');\n }\n clone() {\n const ret = new FormatString(this.index, this.shorthandName, this.ifValue, this.elseValue);\n return ret;\n }\n}\nexport class Variable extends TransformableMarker {\n constructor(name) {\n super();\n this.name = name;\n }\n resolve(resolver) {\n let value = resolver.resolve(this);\n if (this.transform) {\n value = this.transform.resolve(value || '');\n }\n if (value !== undefined) {\n this._children = [new Text(value)];\n return true;\n }\n return false;\n }\n clone() {\n const ret = new Variable(this.name);\n if (this.transform) {\n ret.transform = this.transform.clone();\n }\n ret._children = this.children.map(child => child.clone());\n return ret;\n }\n}\nfunction walk(marker, visitor) {\n const stack = [...marker];\n while (stack.length > 0) {\n const marker = stack.shift();\n const recurse = visitor(marker);\n if (!recurse) {\n break;\n }\n stack.unshift(...marker.children);\n }\n}\nexport class TextmateSnippet extends Marker {\n get placeholderInfo() {\n if (!this._placeholders) {\n // fill in placeholders\n const all = [];\n let last;\n this.walk(function (candidate) {\n if (candidate instanceof Placeholder) {\n all.push(candidate);\n last = !last || last.index < candidate.index ? candidate : last;\n }\n return true;\n });\n this._placeholders = { all, last };\n }\n return this._placeholders;\n }\n get placeholders() {\n const { all } = this.placeholderInfo;\n return all;\n }\n offset(marker) {\n let pos = 0;\n let found = false;\n this.walk(candidate => {\n if (candidate === marker) {\n found = true;\n return false;\n }\n pos += candidate.len();\n return true;\n });\n if (!found) {\n return -1;\n }\n return pos;\n }\n fullLen(marker) {\n let ret = 0;\n walk([marker], marker => {\n ret += marker.len();\n return true;\n });\n return ret;\n }\n enclosingPlaceholders(placeholder) {\n const ret = [];\n let { parent } = placeholder;\n while (parent) {\n if (parent instanceof Placeholder) {\n ret.push(parent);\n }\n parent = parent.parent;\n }\n return ret;\n }\n resolveVariables(resolver) {\n this.walk(candidate => {\n if (candidate instanceof Variable) {\n if (candidate.resolve(resolver)) {\n this._placeholders = undefined;\n }\n }\n return true;\n });\n return this;\n }\n appendChild(child) {\n this._placeholders = undefined;\n return super.appendChild(child);\n }\n replace(child, others) {\n this._placeholders = undefined;\n return super.replace(child, others);\n }\n clone() {\n const ret = new TextmateSnippet();\n this._children = this.children.map(child => child.clone());\n return ret;\n }\n walk(visitor) {\n walk(this.children, visitor);\n }\n}\nexport class SnippetParser {\n constructor() {\n this._scanner = new Scanner();\n this._token = { type: 14 /* TokenType.EOF */, pos: 0, len: 0 };\n }\n static escape(value) {\n return value.replace(/\\$|}|\\\\/g, '\\\\$&');\n }\n static guessNeedsClipboard(template) {\n return /\\${?CLIPBOARD/.test(template);\n }\n parse(value, insertFinalTabstop, enforceFinalTabstop) {\n const snippet = new TextmateSnippet();\n this.parseFragment(value, snippet);\n this.ensureFinalTabstop(snippet, enforceFinalTabstop !== null && enforceFinalTabstop !== void 0 ? enforceFinalTabstop : false, insertFinalTabstop !== null && insertFinalTabstop !== void 0 ? insertFinalTabstop : false);\n return snippet;\n }\n parseFragment(value, snippet) {\n const offset = snippet.children.length;\n this._scanner.text(value);\n this._token = this._scanner.next();\n while (this._parse(snippet)) {\n // nothing\n }\n // fill in values for placeholders. the first placeholder of an index\n // that has a value defines the value for all placeholders with that index\n const placeholderDefaultValues = new Map();\n const incompletePlaceholders = [];\n snippet.walk(marker => {\n if (marker instanceof Placeholder) {\n if (marker.isFinalTabstop) {\n placeholderDefaultValues.set(0, undefined);\n }\n else if (!placeholderDefaultValues.has(marker.index) && marker.children.length > 0) {\n placeholderDefaultValues.set(marker.index, marker.children);\n }\n else {\n incompletePlaceholders.push(marker);\n }\n }\n return true;\n });\n for (const placeholder of incompletePlaceholders) {\n const defaultValues = placeholderDefaultValues.get(placeholder.index);\n if (defaultValues) {\n const clone = new Placeholder(placeholder.index);\n clone.transform = placeholder.transform;\n for (const child of defaultValues) {\n clone.appendChild(child.clone());\n }\n snippet.replace(placeholder, [clone]);\n }\n }\n return snippet.children.slice(offset);\n }\n ensureFinalTabstop(snippet, enforceFinalTabstop, insertFinalTabstop) {\n if (enforceFinalTabstop || insertFinalTabstop && snippet.placeholders.length > 0) {\n const finalTabstop = snippet.placeholders.find(p => p.index === 0);\n if (!finalTabstop) {\n // the snippet uses placeholders but has no\n // final tabstop defined -> insert at the end\n snippet.appendChild(new Placeholder(0));\n }\n }\n }\n _accept(type, value) {\n if (type === undefined || this._token.type === type) {\n const ret = !value ? true : this._scanner.tokenText(this._token);\n this._token = this._scanner.next();\n return ret;\n }\n return false;\n }\n _backTo(token) {\n this._scanner.pos = token.pos + token.len;\n this._token = token;\n return false;\n }\n _until(type) {\n const start = this._token;\n while (this._token.type !== type) {\n if (this._token.type === 14 /* TokenType.EOF */) {\n return false;\n }\n else if (this._token.type === 5 /* TokenType.Backslash */) {\n const nextToken = this._scanner.next();\n if (nextToken.type !== 0 /* TokenType.Dollar */\n && nextToken.type !== 4 /* TokenType.CurlyClose */\n && nextToken.type !== 5 /* TokenType.Backslash */) {\n return false;\n }\n }\n this._token = this._scanner.next();\n }\n const value = this._scanner.value.substring(start.pos, this._token.pos).replace(/\\\\(\\$|}|\\\\)/g, '$1');\n this._token = this._scanner.next();\n return value;\n }\n _parse(marker) {\n return this._parseEscaped(marker)\n || this._parseTabstopOrVariableName(marker)\n || this._parseComplexPlaceholder(marker)\n || this._parseComplexVariable(marker)\n || this._parseAnything(marker);\n }\n // \\$, \\\\, \\} -> just text\n _parseEscaped(marker) {\n let value;\n if (value = this._accept(5 /* TokenType.Backslash */, true)) {\n // saw a backslash, append escaped token or that backslash\n value = this._accept(0 /* TokenType.Dollar */, true)\n || this._accept(4 /* TokenType.CurlyClose */, true)\n || this._accept(5 /* TokenType.Backslash */, true)\n || value;\n marker.appendChild(new Text(value));\n return true;\n }\n return false;\n }\n // $foo -> variable, $1 -> tabstop\n _parseTabstopOrVariableName(parent) {\n let value;\n const token = this._token;\n const match = this._accept(0 /* TokenType.Dollar */)\n && (value = this._accept(9 /* TokenType.VariableName */, true) || this._accept(8 /* TokenType.Int */, true));\n if (!match) {\n return this._backTo(token);\n }\n parent.appendChild(/^\\d+$/.test(value)\n ? new Placeholder(Number(value))\n : new Variable(value));\n return true;\n }\n // ${1:}, ${1} -> placeholder\n _parseComplexPlaceholder(parent) {\n let index;\n const token = this._token;\n const match = this._accept(0 /* TokenType.Dollar */)\n && this._accept(3 /* TokenType.CurlyOpen */)\n && (index = this._accept(8 /* TokenType.Int */, true));\n if (!match) {\n return this._backTo(token);\n }\n const placeholder = new Placeholder(Number(index));\n if (this._accept(1 /* TokenType.Colon */)) {\n // ${1:}\n while (true) {\n // ...} -> done\n if (this._accept(4 /* TokenType.CurlyClose */)) {\n parent.appendChild(placeholder);\n return true;\n }\n if (this._parse(placeholder)) {\n continue;\n }\n // fallback\n parent.appendChild(new Text('${' + index + ':'));\n placeholder.children.forEach(parent.appendChild, parent);\n return true;\n }\n }\n else if (placeholder.index > 0 && this._accept(7 /* TokenType.Pipe */)) {\n // ${1|one,two,three|}\n const choice = new Choice();\n while (true) {\n if (this._parseChoiceElement(choice)) {\n if (this._accept(2 /* TokenType.Comma */)) {\n // opt, -> more\n continue;\n }\n if (this._accept(7 /* TokenType.Pipe */)) {\n placeholder.appendChild(choice);\n if (this._accept(4 /* TokenType.CurlyClose */)) {\n // ..|} -> done\n parent.appendChild(placeholder);\n return true;\n }\n }\n }\n this._backTo(token);\n return false;\n }\n }\n else if (this._accept(6 /* TokenType.Forwardslash */)) {\n // ${1///}\n if (this._parseTransform(placeholder)) {\n parent.appendChild(placeholder);\n return true;\n }\n this._backTo(token);\n return false;\n }\n else if (this._accept(4 /* TokenType.CurlyClose */)) {\n // ${1}\n parent.appendChild(placeholder);\n return true;\n }\n else {\n // ${1 <- missing curly or colon\n return this._backTo(token);\n }\n }\n _parseChoiceElement(parent) {\n const token = this._token;\n const values = [];\n while (true) {\n if (this._token.type === 2 /* TokenType.Comma */ || this._token.type === 7 /* TokenType.Pipe */) {\n break;\n }\n let value;\n if (value = this._accept(5 /* TokenType.Backslash */, true)) {\n // \\, \\|, or \\\\\n value = this._accept(2 /* TokenType.Comma */, true)\n || this._accept(7 /* TokenType.Pipe */, true)\n || this._accept(5 /* TokenType.Backslash */, true)\n || value;\n }\n else {\n value = this._accept(undefined, true);\n }\n if (!value) {\n // EOF\n this._backTo(token);\n return false;\n }\n values.push(value);\n }\n if (values.length === 0) {\n this._backTo(token);\n return false;\n }\n parent.appendChild(new Text(values.join('')));\n return true;\n }\n // ${foo:}, ${foo} -> variable\n _parseComplexVariable(parent) {\n let name;\n const token = this._token;\n const match = this._accept(0 /* TokenType.Dollar */)\n && this._accept(3 /* TokenType.CurlyOpen */)\n && (name = this._accept(9 /* TokenType.VariableName */, true));\n if (!match) {\n return this._backTo(token);\n }\n const variable = new Variable(name);\n if (this._accept(1 /* TokenType.Colon */)) {\n // ${foo:}\n while (true) {\n // ...} -> done\n if (this._accept(4 /* TokenType.CurlyClose */)) {\n parent.appendChild(variable);\n return true;\n }\n if (this._parse(variable)) {\n continue;\n }\n // fallback\n parent.appendChild(new Text('${' + name + ':'));\n variable.children.forEach(parent.appendChild, parent);\n return true;\n }\n }\n else if (this._accept(6 /* TokenType.Forwardslash */)) {\n // ${foo///}\n if (this._parseTransform(variable)) {\n parent.appendChild(variable);\n return true;\n }\n this._backTo(token);\n return false;\n }\n else if (this._accept(4 /* TokenType.CurlyClose */)) {\n // ${foo}\n parent.appendChild(variable);\n return true;\n }\n else {\n // ${foo <- missing curly or colon\n return this._backTo(token);\n }\n }\n _parseTransform(parent) {\n // ...//}\n const transform = new Transform();\n let regexValue = '';\n let regexOptions = '';\n // (1) /regex\n while (true) {\n if (this._accept(6 /* TokenType.Forwardslash */)) {\n break;\n }\n let escaped;\n if (escaped = this._accept(5 /* TokenType.Backslash */, true)) {\n escaped = this._accept(6 /* TokenType.Forwardslash */, true) || escaped;\n regexValue += escaped;\n continue;\n }\n if (this._token.type !== 14 /* TokenType.EOF */) {\n regexValue += this._accept(undefined, true);\n continue;\n }\n return false;\n }\n // (2) /format\n while (true) {\n if (this._accept(6 /* TokenType.Forwardslash */)) {\n break;\n }\n let escaped;\n if (escaped = this._accept(5 /* TokenType.Backslash */, true)) {\n escaped = this._accept(5 /* TokenType.Backslash */, true) || this._accept(6 /* TokenType.Forwardslash */, true) || escaped;\n transform.appendChild(new Text(escaped));\n continue;\n }\n if (this._parseFormatString(transform) || this._parseAnything(transform)) {\n continue;\n }\n return false;\n }\n // (3) /option\n while (true) {\n if (this._accept(4 /* TokenType.CurlyClose */)) {\n break;\n }\n if (this._token.type !== 14 /* TokenType.EOF */) {\n regexOptions += this._accept(undefined, true);\n continue;\n }\n return false;\n }\n try {\n transform.regexp = new RegExp(regexValue, regexOptions);\n }\n catch (e) {\n // invalid regexp\n return false;\n }\n parent.transform = transform;\n return true;\n }\n _parseFormatString(parent) {\n const token = this._token;\n if (!this._accept(0 /* TokenType.Dollar */)) {\n return false;\n }\n let complex = false;\n if (this._accept(3 /* TokenType.CurlyOpen */)) {\n complex = true;\n }\n const index = this._accept(8 /* TokenType.Int */, true);\n if (!index) {\n this._backTo(token);\n return false;\n }\n else if (!complex) {\n // $1\n parent.appendChild(new FormatString(Number(index)));\n return true;\n }\n else if (this._accept(4 /* TokenType.CurlyClose */)) {\n // ${1}\n parent.appendChild(new FormatString(Number(index)));\n return true;\n }\n else if (!this._accept(1 /* TokenType.Colon */)) {\n this._backTo(token);\n return false;\n }\n if (this._accept(6 /* TokenType.Forwardslash */)) {\n // ${1:/upcase}\n const shorthand = this._accept(9 /* TokenType.VariableName */, true);\n if (!shorthand || !this._accept(4 /* TokenType.CurlyClose */)) {\n this._backTo(token);\n return false;\n }\n else {\n parent.appendChild(new FormatString(Number(index), shorthand));\n return true;\n }\n }\n else if (this._accept(11 /* TokenType.Plus */)) {\n // ${1:+}\n const ifValue = this._until(4 /* TokenType.CurlyClose */);\n if (ifValue) {\n parent.appendChild(new FormatString(Number(index), undefined, ifValue, undefined));\n return true;\n }\n }\n else if (this._accept(12 /* TokenType.Dash */)) {\n // ${2:-}\n const elseValue = this._until(4 /* TokenType.CurlyClose */);\n if (elseValue) {\n parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\n return true;\n }\n }\n else if (this._accept(13 /* TokenType.QuestionMark */)) {\n // ${2:?:}\n const ifValue = this._until(1 /* TokenType.Colon */);\n if (ifValue) {\n const elseValue = this._until(4 /* TokenType.CurlyClose */);\n if (elseValue) {\n parent.appendChild(new FormatString(Number(index), undefined, ifValue, elseValue));\n return true;\n }\n }\n }\n else {\n // ${1:}\n const elseValue = this._until(4 /* TokenType.CurlyClose */);\n if (elseValue) {\n parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\n return true;\n }\n }\n this._backTo(token);\n return false;\n }\n _parseAnything(marker) {\n if (this._token.type !== 14 /* TokenType.EOF */) {\n marker.appendChild(new Text(this._scanner.tokenText(this._token)));\n this._accept(undefined);\n return true;\n }\n return false;\n }\n}\n","import { hasDriveLetter } from './extpath.js';\nimport { isWindows } from './platform.js';\nexport function normalizeDriveLetter(path, isWindowsOS = isWindows) {\n if (hasDriveLetter(path, isWindowsOS)) {\n return path.charAt(0).toUpperCase() + path.slice(1);\n }\n return path;\n}\nlet normalizedUserHomeCached = Object.create(null);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { normalizeDriveLetter } from '../../../../base/common/labels.js';\nimport * as path from '../../../../base/common/path.js';\nimport { dirname } from '../../../../base/common/resources.js';\nimport { commonPrefixLength, getLeadingWhitespace, isFalsyOrWhitespace, splitLines } from '../../../../base/common/strings.js';\nimport { generateUuid } from '../../../../base/common/uuid.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { Text } from './snippetParser.js';\nimport * as nls from '../../../../nls.js';\nimport { WORKSPACE_EXTENSION, isSingleFolderWorkspaceIdentifier, toWorkspaceIdentifier } from '../../../../platform/workspace/common/workspace.js';\nexport const KnownSnippetVariableNames = Object.freeze({\n 'CURRENT_YEAR': true,\n 'CURRENT_YEAR_SHORT': true,\n 'CURRENT_MONTH': true,\n 'CURRENT_DATE': true,\n 'CURRENT_HOUR': true,\n 'CURRENT_MINUTE': true,\n 'CURRENT_SECOND': true,\n 'CURRENT_DAY_NAME': true,\n 'CURRENT_DAY_NAME_SHORT': true,\n 'CURRENT_MONTH_NAME': true,\n 'CURRENT_MONTH_NAME_SHORT': true,\n 'CURRENT_SECONDS_UNIX': true,\n 'SELECTION': true,\n 'CLIPBOARD': true,\n 'TM_SELECTED_TEXT': true,\n 'TM_CURRENT_LINE': true,\n 'TM_CURRENT_WORD': true,\n 'TM_LINE_INDEX': true,\n 'TM_LINE_NUMBER': true,\n 'TM_FILENAME': true,\n 'TM_FILENAME_BASE': true,\n 'TM_DIRECTORY': true,\n 'TM_FILEPATH': true,\n 'CURSOR_INDEX': true,\n 'CURSOR_NUMBER': true,\n 'RELATIVE_FILEPATH': true,\n 'BLOCK_COMMENT_START': true,\n 'BLOCK_COMMENT_END': true,\n 'LINE_COMMENT': true,\n 'WORKSPACE_NAME': true,\n 'WORKSPACE_FOLDER': true,\n 'RANDOM': true,\n 'RANDOM_HEX': true,\n 'UUID': true\n});\nexport class CompositeSnippetVariableResolver {\n constructor(_delegates) {\n this._delegates = _delegates;\n //\n }\n resolve(variable) {\n for (const delegate of this._delegates) {\n const value = delegate.resolve(variable);\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n }\n}\nexport class SelectionBasedVariableResolver {\n constructor(_model, _selection, _selectionIdx, _overtypingCapturer) {\n this._model = _model;\n this._selection = _selection;\n this._selectionIdx = _selectionIdx;\n this._overtypingCapturer = _overtypingCapturer;\n //\n }\n resolve(variable) {\n const { name } = variable;\n if (name === 'SELECTION' || name === 'TM_SELECTED_TEXT') {\n let value = this._model.getValueInRange(this._selection) || undefined;\n let isMultiline = this._selection.startLineNumber !== this._selection.endLineNumber;\n // If there was no selected text, try to get last overtyped text\n if (!value && this._overtypingCapturer) {\n const info = this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);\n if (info) {\n value = info.value;\n isMultiline = info.multiline;\n }\n }\n if (value && isMultiline && variable.snippet) {\n // Selection is a multiline string which we indentation we now\n // need to adjust. We compare the indentation of this variable\n // with the indentation at the editor position and add potential\n // extra indentation to the value\n const line = this._model.getLineContent(this._selection.startLineNumber);\n const lineLeadingWhitespace = getLeadingWhitespace(line, 0, this._selection.startColumn - 1);\n let varLeadingWhitespace = lineLeadingWhitespace;\n variable.snippet.walk(marker => {\n if (marker === variable) {\n return false;\n }\n if (marker instanceof Text) {\n varLeadingWhitespace = getLeadingWhitespace(splitLines(marker.value).pop());\n }\n return true;\n });\n const whitespaceCommonLength = commonPrefixLength(varLeadingWhitespace, lineLeadingWhitespace);\n value = value.replace(/(\\r\\n|\\r|\\n)(.*)/g, (m, newline, rest) => `${newline}${varLeadingWhitespace.substr(whitespaceCommonLength)}${rest}`);\n }\n return value;\n }\n else if (name === 'TM_CURRENT_LINE') {\n return this._model.getLineContent(this._selection.positionLineNumber);\n }\n else if (name === 'TM_CURRENT_WORD') {\n const info = this._model.getWordAtPosition({\n lineNumber: this._selection.positionLineNumber,\n column: this._selection.positionColumn\n });\n return info && info.word || undefined;\n }\n else if (name === 'TM_LINE_INDEX') {\n return String(this._selection.positionLineNumber - 1);\n }\n else if (name === 'TM_LINE_NUMBER') {\n return String(this._selection.positionLineNumber);\n }\n else if (name === 'CURSOR_INDEX') {\n return String(this._selectionIdx);\n }\n else if (name === 'CURSOR_NUMBER') {\n return String(this._selectionIdx + 1);\n }\n return undefined;\n }\n}\nexport class ModelBasedVariableResolver {\n constructor(_labelService, _model) {\n this._labelService = _labelService;\n this._model = _model;\n //\n }\n resolve(variable) {\n const { name } = variable;\n if (name === 'TM_FILENAME') {\n return path.basename(this._model.uri.fsPath);\n }\n else if (name === 'TM_FILENAME_BASE') {\n const name = path.basename(this._model.uri.fsPath);\n const idx = name.lastIndexOf('.');\n if (idx <= 0) {\n return name;\n }\n else {\n return name.slice(0, idx);\n }\n }\n else if (name === 'TM_DIRECTORY') {\n if (path.dirname(this._model.uri.fsPath) === '.') {\n return '';\n }\n return this._labelService.getUriLabel(dirname(this._model.uri));\n }\n else if (name === 'TM_FILEPATH') {\n return this._labelService.getUriLabel(this._model.uri);\n }\n else if (name === 'RELATIVE_FILEPATH') {\n return this._labelService.getUriLabel(this._model.uri, { relative: true, noPrefix: true });\n }\n return undefined;\n }\n}\nexport class ClipboardBasedVariableResolver {\n constructor(_readClipboardText, _selectionIdx, _selectionCount, _spread) {\n this._readClipboardText = _readClipboardText;\n this._selectionIdx = _selectionIdx;\n this._selectionCount = _selectionCount;\n this._spread = _spread;\n //\n }\n resolve(variable) {\n if (variable.name !== 'CLIPBOARD') {\n return undefined;\n }\n const clipboardText = this._readClipboardText();\n if (!clipboardText) {\n return undefined;\n }\n // `spread` is assigning each cursor a line of the clipboard\n // text whenever there the line count equals the cursor count\n // and when enabled\n if (this._spread) {\n const lines = clipboardText.split(/\\r\\n|\\n|\\r/).filter(s => !isFalsyOrWhitespace(s));\n if (lines.length === this._selectionCount) {\n return lines[this._selectionIdx];\n }\n }\n return clipboardText;\n }\n}\nlet CommentBasedVariableResolver = class CommentBasedVariableResolver {\n constructor(_model, _selection, _languageConfigurationService) {\n this._model = _model;\n this._selection = _selection;\n this._languageConfigurationService = _languageConfigurationService;\n //\n }\n resolve(variable) {\n const { name } = variable;\n const langId = this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber, this._selection.selectionStartColumn);\n const config = this._languageConfigurationService.getLanguageConfiguration(langId).comments;\n if (!config) {\n return undefined;\n }\n if (name === 'LINE_COMMENT') {\n return config.lineCommentToken || undefined;\n }\n else if (name === 'BLOCK_COMMENT_START') {\n return config.blockCommentStartToken || undefined;\n }\n else if (name === 'BLOCK_COMMENT_END') {\n return config.blockCommentEndToken || undefined;\n }\n return undefined;\n }\n};\nCommentBasedVariableResolver = __decorate([\n __param(2, ILanguageConfigurationService)\n], CommentBasedVariableResolver);\nexport { CommentBasedVariableResolver };\nexport class TimeBasedVariableResolver {\n constructor() {\n this._date = new Date();\n }\n resolve(variable) {\n const { name } = variable;\n if (name === 'CURRENT_YEAR') {\n return String(this._date.getFullYear());\n }\n else if (name === 'CURRENT_YEAR_SHORT') {\n return String(this._date.getFullYear()).slice(-2);\n }\n else if (name === 'CURRENT_MONTH') {\n return String(this._date.getMonth().valueOf() + 1).padStart(2, '0');\n }\n else if (name === 'CURRENT_DATE') {\n return String(this._date.getDate().valueOf()).padStart(2, '0');\n }\n else if (name === 'CURRENT_HOUR') {\n return String(this._date.getHours().valueOf()).padStart(2, '0');\n }\n else if (name === 'CURRENT_MINUTE') {\n return String(this._date.getMinutes().valueOf()).padStart(2, '0');\n }\n else if (name === 'CURRENT_SECOND') {\n return String(this._date.getSeconds().valueOf()).padStart(2, '0');\n }\n else if (name === 'CURRENT_DAY_NAME') {\n return TimeBasedVariableResolver.dayNames[this._date.getDay()];\n }\n else if (name === 'CURRENT_DAY_NAME_SHORT') {\n return TimeBasedVariableResolver.dayNamesShort[this._date.getDay()];\n }\n else if (name === 'CURRENT_MONTH_NAME') {\n return TimeBasedVariableResolver.monthNames[this._date.getMonth()];\n }\n else if (name === 'CURRENT_MONTH_NAME_SHORT') {\n return TimeBasedVariableResolver.monthNamesShort[this._date.getMonth()];\n }\n else if (name === 'CURRENT_SECONDS_UNIX') {\n return String(Math.floor(this._date.getTime() / 1000));\n }\n return undefined;\n }\n}\nTimeBasedVariableResolver.dayNames = [nls.localize('Sunday', \"Sunday\"), nls.localize('Monday', \"Monday\"), nls.localize('Tuesday', \"Tuesday\"), nls.localize('Wednesday', \"Wednesday\"), nls.localize('Thursday', \"Thursday\"), nls.localize('Friday', \"Friday\"), nls.localize('Saturday', \"Saturday\")];\nTimeBasedVariableResolver.dayNamesShort = [nls.localize('SundayShort', \"Sun\"), nls.localize('MondayShort', \"Mon\"), nls.localize('TuesdayShort', \"Tue\"), nls.localize('WednesdayShort', \"Wed\"), nls.localize('ThursdayShort', \"Thu\"), nls.localize('FridayShort', \"Fri\"), nls.localize('SaturdayShort', \"Sat\")];\nTimeBasedVariableResolver.monthNames = [nls.localize('January', \"January\"), nls.localize('February', \"February\"), nls.localize('March', \"March\"), nls.localize('April', \"April\"), nls.localize('May', \"May\"), nls.localize('June', \"June\"), nls.localize('July', \"July\"), nls.localize('August', \"August\"), nls.localize('September', \"September\"), nls.localize('October', \"October\"), nls.localize('November', \"November\"), nls.localize('December', \"December\")];\nTimeBasedVariableResolver.monthNamesShort = [nls.localize('JanuaryShort', \"Jan\"), nls.localize('FebruaryShort', \"Feb\"), nls.localize('MarchShort', \"Mar\"), nls.localize('AprilShort', \"Apr\"), nls.localize('MayShort', \"May\"), nls.localize('JuneShort', \"Jun\"), nls.localize('JulyShort', \"Jul\"), nls.localize('AugustShort', \"Aug\"), nls.localize('SeptemberShort', \"Sep\"), nls.localize('OctoberShort', \"Oct\"), nls.localize('NovemberShort', \"Nov\"), nls.localize('DecemberShort', \"Dec\")];\nexport class WorkspaceBasedVariableResolver {\n constructor(_workspaceService) {\n this._workspaceService = _workspaceService;\n //\n }\n resolve(variable) {\n if (!this._workspaceService) {\n return undefined;\n }\n const workspaceIdentifier = toWorkspaceIdentifier(this._workspaceService.getWorkspace());\n if (!workspaceIdentifier) {\n return undefined;\n }\n if (variable.name === 'WORKSPACE_NAME') {\n return this._resolveWorkspaceName(workspaceIdentifier);\n }\n else if (variable.name === 'WORKSPACE_FOLDER') {\n return this._resoveWorkspacePath(workspaceIdentifier);\n }\n return undefined;\n }\n _resolveWorkspaceName(workspaceIdentifier) {\n if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n return path.basename(workspaceIdentifier.uri.path);\n }\n let filename = path.basename(workspaceIdentifier.configPath.path);\n if (filename.endsWith(WORKSPACE_EXTENSION)) {\n filename = filename.substr(0, filename.length - WORKSPACE_EXTENSION.length - 1);\n }\n return filename;\n }\n _resoveWorkspacePath(workspaceIdentifier) {\n if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\n return normalizeDriveLetter(workspaceIdentifier.uri.fsPath);\n }\n const filename = path.basename(workspaceIdentifier.configPath.path);\n let folderpath = workspaceIdentifier.configPath.fsPath;\n if (folderpath.endsWith(filename)) {\n folderpath = folderpath.substr(0, folderpath.length - filename.length - 1);\n }\n return (folderpath ? normalizeDriveLetter(folderpath) : '/');\n }\n}\nexport class RandomBasedVariableResolver {\n resolve(variable) {\n const { name } = variable;\n if (name === 'RANDOM') {\n return Math.random().toString().slice(-6);\n }\n else if (name === 'RANDOM_HEX') {\n return Math.random().toString(16).slice(-6);\n }\n else if (name === 'UUID') {\n return generateUuid();\n }\n return undefined;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { groupBy } from '../../../../base/common/arrays.js';\nimport { dispose } from '../../../../base/common/lifecycle.js';\nimport { getLeadingWhitespace } from '../../../../base/common/strings.js';\nimport './snippetSession.css';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { ILabelService } from '../../../../platform/label/common/label.js';\nimport { IWorkspaceContextService } from '../../../../platform/workspace/common/workspace.js';\nimport { Choice, Placeholder, SnippetParser, Text, TextmateSnippet } from './snippetParser.js';\nimport { ClipboardBasedVariableResolver, CommentBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, RandomBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, WorkspaceBasedVariableResolver } from './snippetVariables.js';\nexport class OneSnippet {\n constructor(_editor, _snippet, _snippetLineLeadingWhitespace) {\n this._editor = _editor;\n this._snippet = _snippet;\n this._snippetLineLeadingWhitespace = _snippetLineLeadingWhitespace;\n this._offset = -1;\n this._nestingLevel = 1;\n this._placeholderGroups = groupBy(_snippet.placeholders, Placeholder.compareByIndex);\n this._placeholderGroupsIdx = -1;\n }\n initialize(textChange) {\n this._offset = textChange.newPosition;\n }\n dispose() {\n if (this._placeholderDecorations) {\n this._editor.removeDecorations([...this._placeholderDecorations.values()]);\n }\n this._placeholderGroups.length = 0;\n }\n _initDecorations() {\n if (this._offset === -1) {\n throw new Error(`Snippet not initialized!`);\n }\n if (this._placeholderDecorations) {\n // already initialized\n return;\n }\n this._placeholderDecorations = new Map();\n const model = this._editor.getModel();\n this._editor.changeDecorations(accessor => {\n // create a decoration for each placeholder\n for (const placeholder of this._snippet.placeholders) {\n const placeholderOffset = this._snippet.offset(placeholder);\n const placeholderLen = this._snippet.fullLen(placeholder);\n const range = Range.fromPositions(model.getPositionAt(this._offset + placeholderOffset), model.getPositionAt(this._offset + placeholderOffset + placeholderLen));\n const options = placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive;\n const handle = accessor.addDecoration(range, options);\n this._placeholderDecorations.set(placeholder, handle);\n }\n });\n }\n move(fwd) {\n if (!this._editor.hasModel()) {\n return [];\n }\n this._initDecorations();\n // Transform placeholder text if necessary\n if (this._placeholderGroupsIdx >= 0) {\n const operations = [];\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\n // Check if the placeholder has a transformation\n if (placeholder.transform) {\n const id = this._placeholderDecorations.get(placeholder);\n const range = this._editor.getModel().getDecorationRange(id);\n const currentValue = this._editor.getModel().getValueInRange(range);\n const transformedValueLines = placeholder.transform.resolve(currentValue).split(/\\r\\n|\\r|\\n/);\n // fix indentation for transformed lines\n for (let i = 1; i < transformedValueLines.length; i++) {\n transformedValueLines[i] = this._editor.getModel().normalizeIndentation(this._snippetLineLeadingWhitespace + transformedValueLines[i]);\n }\n operations.push(EditOperation.replace(range, transformedValueLines.join(this._editor.getModel().getEOL())));\n }\n }\n if (operations.length > 0) {\n this._editor.executeEdits('snippet.placeholderTransform', operations);\n }\n }\n let couldSkipThisPlaceholder = false;\n if (fwd === true && this._placeholderGroupsIdx < this._placeholderGroups.length - 1) {\n this._placeholderGroupsIdx += 1;\n couldSkipThisPlaceholder = true;\n }\n else if (fwd === false && this._placeholderGroupsIdx > 0) {\n this._placeholderGroupsIdx -= 1;\n couldSkipThisPlaceholder = true;\n }\n else {\n // the selection of the current placeholder might\n // not acurate any more -> simply restore it\n }\n const newSelections = this._editor.getModel().changeDecorations(accessor => {\n const activePlaceholders = new Set();\n // change stickiness to always grow when typing at its edges\n // because these decorations represent the currently active\n // tabstop.\n // Special case #1: reaching the final tabstop\n // Special case #2: placeholders enclosing active placeholders\n const selections = [];\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\n const id = this._placeholderDecorations.get(placeholder);\n const range = this._editor.getModel().getDecorationRange(id);\n selections.push(new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn));\n // consider to skip this placeholder index when the decoration\n // range is empty but when the placeholder wasn't. that's a strong\n // hint that the placeholder has been deleted. (all placeholder must match this)\n couldSkipThisPlaceholder = couldSkipThisPlaceholder && this._hasPlaceholderBeenCollapsed(placeholder);\n accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\n activePlaceholders.add(placeholder);\n for (const enclosingPlaceholder of this._snippet.enclosingPlaceholders(placeholder)) {\n const id = this._placeholderDecorations.get(enclosingPlaceholder);\n accessor.changeDecorationOptions(id, enclosingPlaceholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\n activePlaceholders.add(enclosingPlaceholder);\n }\n }\n // change stickness to never grow when typing at its edges\n // so that in-active tabstops never grow\n for (const [placeholder, id] of this._placeholderDecorations) {\n if (!activePlaceholders.has(placeholder)) {\n accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive);\n }\n }\n return selections;\n });\n return !couldSkipThisPlaceholder ? newSelections !== null && newSelections !== void 0 ? newSelections : [] : this.move(fwd);\n }\n _hasPlaceholderBeenCollapsed(placeholder) {\n // A placeholder is empty when it wasn't empty when authored but\n // when its tracking decoration is empty. This also applies to all\n // potential parent placeholders\n let marker = placeholder;\n while (marker) {\n if (marker instanceof Placeholder) {\n const id = this._placeholderDecorations.get(marker);\n const range = this._editor.getModel().getDecorationRange(id);\n if (range.isEmpty() && marker.toString().length > 0) {\n return true;\n }\n }\n marker = marker.parent;\n }\n return false;\n }\n get isAtFirstPlaceholder() {\n return this._placeholderGroupsIdx <= 0 || this._placeholderGroups.length === 0;\n }\n get isAtLastPlaceholder() {\n return this._placeholderGroupsIdx === this._placeholderGroups.length - 1;\n }\n get hasPlaceholder() {\n return this._snippet.placeholders.length > 0;\n }\n get isTrivialSnippet() {\n return this._snippet.placeholders.length === 0\n || (this._snippet.placeholders.length === 1 && this._snippet.placeholders[0].isFinalTabstop);\n }\n computePossibleSelections() {\n const result = new Map();\n for (const placeholdersWithEqualIndex of this._placeholderGroups) {\n let ranges;\n for (const placeholder of placeholdersWithEqualIndex) {\n if (placeholder.isFinalTabstop) {\n // ignore those\n break;\n }\n if (!ranges) {\n ranges = [];\n result.set(placeholder.index, ranges);\n }\n const id = this._placeholderDecorations.get(placeholder);\n const range = this._editor.getModel().getDecorationRange(id);\n if (!range) {\n // one of the placeholder lost its decoration and\n // therefore we bail out and pretend the placeholder\n // (with its mirrors) doesn't exist anymore.\n result.delete(placeholder.index);\n break;\n }\n ranges.push(range);\n }\n }\n return result;\n }\n get activeChoice() {\n if (!this._placeholderDecorations) {\n return undefined;\n }\n const placeholder = this._placeholderGroups[this._placeholderGroupsIdx][0];\n if (!(placeholder === null || placeholder === void 0 ? void 0 : placeholder.choice)) {\n return undefined;\n }\n const id = this._placeholderDecorations.get(placeholder);\n if (!id) {\n return undefined;\n }\n const range = this._editor.getModel().getDecorationRange(id);\n if (!range) {\n return undefined;\n }\n return { range, choice: placeholder.choice };\n }\n get hasChoice() {\n let result = false;\n this._snippet.walk(marker => {\n result = marker instanceof Choice;\n return !result;\n });\n return result;\n }\n merge(others) {\n const model = this._editor.getModel();\n this._nestingLevel *= 10;\n this._editor.changeDecorations(accessor => {\n // For each active placeholder take one snippet and merge it\n // in that the placeholder (can be many for `$1foo$1foo`). Because\n // everything is sorted by editor selection we can simply remove\n // elements from the beginning of the array\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\n const nested = others.shift();\n console.assert(nested._offset !== -1);\n console.assert(!nested._placeholderDecorations);\n // Massage placeholder-indicies of the nested snippet to be\n // sorted right after the insertion point. This ensures we move\n // through the placeholders in the correct order\n const indexLastPlaceholder = nested._snippet.placeholderInfo.last.index;\n for (const nestedPlaceholder of nested._snippet.placeholderInfo.all) {\n if (nestedPlaceholder.isFinalTabstop) {\n nestedPlaceholder.index = placeholder.index + ((indexLastPlaceholder + 1) / this._nestingLevel);\n }\n else {\n nestedPlaceholder.index = placeholder.index + (nestedPlaceholder.index / this._nestingLevel);\n }\n }\n this._snippet.replace(placeholder, nested._snippet.children);\n // Remove the placeholder at which position are inserting\n // the snippet and also remove its decoration.\n const id = this._placeholderDecorations.get(placeholder);\n accessor.removeDecoration(id);\n this._placeholderDecorations.delete(placeholder);\n // For each *new* placeholder we create decoration to monitor\n // how and if it grows/shrinks.\n for (const placeholder of nested._snippet.placeholders) {\n const placeholderOffset = nested._snippet.offset(placeholder);\n const placeholderLen = nested._snippet.fullLen(placeholder);\n const range = Range.fromPositions(model.getPositionAt(nested._offset + placeholderOffset), model.getPositionAt(nested._offset + placeholderOffset + placeholderLen));\n const handle = accessor.addDecoration(range, OneSnippet._decor.inactive);\n this._placeholderDecorations.set(placeholder, handle);\n }\n }\n // Last, re-create the placeholder groups by sorting placeholders by their index.\n this._placeholderGroups = groupBy(this._snippet.placeholders, Placeholder.compareByIndex);\n });\n }\n}\nOneSnippet._decor = {\n active: ModelDecorationOptions.register({ description: 'snippet-placeholder-1', stickiness: 0 /* TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\n inactive: ModelDecorationOptions.register({ description: 'snippet-placeholder-2', stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\n activeFinal: ModelDecorationOptions.register({ description: 'snippet-placeholder-3', stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\n inactiveFinal: ModelDecorationOptions.register({ description: 'snippet-placeholder-4', stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\n};\nconst _defaultOptions = {\n overwriteBefore: 0,\n overwriteAfter: 0,\n adjustWhitespace: true,\n clipboardText: undefined,\n overtypingCapturer: undefined\n};\nlet SnippetSession = class SnippetSession {\n constructor(_editor, _template, _options = _defaultOptions, _languageConfigurationService) {\n this._editor = _editor;\n this._template = _template;\n this._options = _options;\n this._languageConfigurationService = _languageConfigurationService;\n this._templateMerges = [];\n this._snippets = [];\n }\n static adjustWhitespace(model, position, snippet, adjustIndentation, adjustNewlines) {\n const line = model.getLineContent(position.lineNumber);\n const lineLeadingWhitespace = getLeadingWhitespace(line, 0, position.column - 1);\n // the snippet as inserted\n let snippetTextString;\n snippet.walk(marker => {\n // all text elements that are not inside choice\n if (!(marker instanceof Text) || marker.parent instanceof Choice) {\n return true;\n }\n const lines = marker.value.split(/\\r\\n|\\r|\\n/);\n if (adjustIndentation) {\n // adjust indentation of snippet test\n // -the snippet-start doesn't get extra-indented (lineLeadingWhitespace), only normalized\n // -all N+1 lines get extra-indented and normalized\n // -the text start get extra-indented and normalized when following a linebreak\n const offset = snippet.offset(marker);\n if (offset === 0) {\n // snippet start\n lines[0] = model.normalizeIndentation(lines[0]);\n }\n else {\n // check if text start is after a linebreak\n snippetTextString = snippetTextString !== null && snippetTextString !== void 0 ? snippetTextString : snippet.toString();\n const prevChar = snippetTextString.charCodeAt(offset - 1);\n if (prevChar === 10 /* CharCode.LineFeed */ || prevChar === 13 /* CharCode.CarriageReturn */) {\n lines[0] = model.normalizeIndentation(lineLeadingWhitespace + lines[0]);\n }\n }\n for (let i = 1; i < lines.length; i++) {\n lines[i] = model.normalizeIndentation(lineLeadingWhitespace + lines[i]);\n }\n }\n const newValue = lines.join(model.getEOL());\n if (newValue !== marker.value) {\n marker.parent.replace(marker, [new Text(newValue)]);\n snippetTextString = undefined;\n }\n return true;\n });\n return lineLeadingWhitespace;\n }\n static adjustSelection(model, selection, overwriteBefore, overwriteAfter) {\n if (overwriteBefore !== 0 || overwriteAfter !== 0) {\n // overwrite[Before|After] is compute using the position, not the whole\n // selection. therefore we adjust the selection around that position\n const { positionLineNumber, positionColumn } = selection;\n const positionColumnBefore = positionColumn - overwriteBefore;\n const positionColumnAfter = positionColumn + overwriteAfter;\n const range = model.validateRange({\n startLineNumber: positionLineNumber,\n startColumn: positionColumnBefore,\n endLineNumber: positionLineNumber,\n endColumn: positionColumnAfter\n });\n selection = Selection.createWithDirection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn, selection.getDirection());\n }\n return selection;\n }\n static createEditsAndSnippetsFromSelections(editor, template, overwriteBefore, overwriteAfter, enforceFinalTabstop, adjustWhitespace, clipboardText, overtypingCapturer, languageConfigurationService) {\n const edits = [];\n const snippets = [];\n if (!editor.hasModel()) {\n return { edits, snippets };\n }\n const model = editor.getModel();\n const workspaceService = editor.invokeWithinContext(accessor => accessor.get(IWorkspaceContextService));\n const modelBasedVariableResolver = editor.invokeWithinContext(accessor => new ModelBasedVariableResolver(accessor.get(ILabelService), model));\n const readClipboardText = () => clipboardText;\n // know what text the overwrite[Before|After] extensions\n // of the primary curser have selected because only when\n // secondary selections extend to the same text we can grow them\n const firstBeforeText = model.getValueInRange(SnippetSession.adjustSelection(model, editor.getSelection(), overwriteBefore, 0));\n const firstAfterText = model.getValueInRange(SnippetSession.adjustSelection(model, editor.getSelection(), 0, overwriteAfter));\n // remember the first non-whitespace column to decide if\n // `keepWhitespace` should be overruled for secondary selections\n const firstLineFirstNonWhitespace = model.getLineFirstNonWhitespaceColumn(editor.getSelection().positionLineNumber);\n // sort selections by their start position but remeber\n // the original index. that allows you to create correct\n // offset-based selection logic without changing the\n // primary selection\n const indexedSelections = editor.getSelections()\n .map((selection, idx) => ({ selection, idx }))\n .sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n for (const { selection, idx } of indexedSelections) {\n // extend selection with the `overwriteBefore` and `overwriteAfter` and then\n // compare if this matches the extensions of the primary selection\n let extensionBefore = SnippetSession.adjustSelection(model, selection, overwriteBefore, 0);\n let extensionAfter = SnippetSession.adjustSelection(model, selection, 0, overwriteAfter);\n if (firstBeforeText !== model.getValueInRange(extensionBefore)) {\n extensionBefore = selection;\n }\n if (firstAfterText !== model.getValueInRange(extensionAfter)) {\n extensionAfter = selection;\n }\n // merge the before and after selection into one\n const snippetSelection = selection\n .setStartPosition(extensionBefore.startLineNumber, extensionBefore.startColumn)\n .setEndPosition(extensionAfter.endLineNumber, extensionAfter.endColumn);\n const snippet = new SnippetParser().parse(template, true, enforceFinalTabstop);\n // adjust the template string to match the indentation and\n // whitespace rules of this insert location (can be different for each cursor)\n // happens when being asked for (default) or when this is a secondary\n // cursor and the leading whitespace is different\n const start = snippetSelection.getStartPosition();\n const snippetLineLeadingWhitespace = SnippetSession.adjustWhitespace(model, start, snippet, adjustWhitespace || (idx > 0 && firstLineFirstNonWhitespace !== model.getLineFirstNonWhitespaceColumn(selection.positionLineNumber)), true);\n snippet.resolveVariables(new CompositeSnippetVariableResolver([\n modelBasedVariableResolver,\n new ClipboardBasedVariableResolver(readClipboardText, idx, indexedSelections.length, editor.getOption(73 /* EditorOption.multiCursorPaste */) === 'spread'),\n new SelectionBasedVariableResolver(model, selection, idx, overtypingCapturer),\n new CommentBasedVariableResolver(model, selection, languageConfigurationService),\n new TimeBasedVariableResolver,\n new WorkspaceBasedVariableResolver(workspaceService),\n new RandomBasedVariableResolver,\n ]));\n // store snippets with the index of their originating selection.\n // that ensures the primiary cursor stays primary despite not being\n // the one with lowest start position\n edits[idx] = EditOperation.replace(snippetSelection, snippet.toString());\n edits[idx].identifier = { major: idx, minor: 0 }; // mark the edit so only our undo edits will be used to generate end cursors\n edits[idx]._isTracked = true;\n snippets[idx] = new OneSnippet(editor, snippet, snippetLineLeadingWhitespace);\n }\n return { edits, snippets };\n }\n static createEditsAndSnippetsFromEdits(editor, snippetEdits, enforceFinalTabstop, adjustWhitespace, clipboardText, overtypingCapturer, languageConfigurationService) {\n if (!editor.hasModel() || snippetEdits.length === 0) {\n return { edits: [], snippets: [] };\n }\n const edits = [];\n const model = editor.getModel();\n const parser = new SnippetParser();\n const snippet = new TextmateSnippet();\n // snippet variables resolver\n const resolver = new CompositeSnippetVariableResolver([\n editor.invokeWithinContext(accessor => new ModelBasedVariableResolver(accessor.get(ILabelService), model)),\n new ClipboardBasedVariableResolver(() => clipboardText, 0, editor.getSelections().length, editor.getOption(73 /* EditorOption.multiCursorPaste */) === 'spread'),\n new SelectionBasedVariableResolver(model, editor.getSelection(), 0, overtypingCapturer),\n new CommentBasedVariableResolver(model, editor.getSelection(), languageConfigurationService),\n new TimeBasedVariableResolver,\n new WorkspaceBasedVariableResolver(editor.invokeWithinContext(accessor => accessor.get(IWorkspaceContextService))),\n new RandomBasedVariableResolver,\n ]);\n //\n snippetEdits = snippetEdits.sort((a, b) => Range.compareRangesUsingStarts(a.range, b.range));\n let offset = 0;\n for (let i = 0; i < snippetEdits.length; i++) {\n const { range, template } = snippetEdits[i];\n // gaps between snippet edits are appended as text nodes. this\n // ensures placeholder-offsets are later correct\n if (i > 0) {\n const lastRange = snippetEdits[i - 1].range;\n const textRange = Range.fromPositions(lastRange.getEndPosition(), range.getStartPosition());\n const textNode = new Text(model.getValueInRange(textRange));\n snippet.appendChild(textNode);\n offset += textNode.value.length;\n }\n parser.parseFragment(template, snippet);\n snippet.resolveVariables(resolver);\n const snippetText = snippet.toString();\n const snippetFragmentText = snippetText.slice(offset);\n offset = snippetText.length;\n // make edit\n const edit = EditOperation.replace(range, snippetFragmentText);\n edit.identifier = { major: i, minor: 0 }; // mark the edit so only our undo edits will be used to generate end cursors\n edit._isTracked = true;\n edits.push(edit);\n }\n //\n parser.ensureFinalTabstop(snippet, enforceFinalTabstop, true);\n return {\n edits,\n snippets: [new OneSnippet(editor, snippet, '')]\n };\n }\n dispose() {\n dispose(this._snippets);\n }\n _logInfo() {\n return `template=\"${this._template}\", merged_templates=\"${this._templateMerges.join(' -> ')}\"`;\n }\n insert() {\n if (!this._editor.hasModel()) {\n return;\n }\n // make insert edit and start with first selections\n const { edits, snippets } = typeof this._template === 'string'\n ? SnippetSession.createEditsAndSnippetsFromSelections(this._editor, this._template, this._options.overwriteBefore, this._options.overwriteAfter, false, this._options.adjustWhitespace, this._options.clipboardText, this._options.overtypingCapturer, this._languageConfigurationService)\n : SnippetSession.createEditsAndSnippetsFromEdits(this._editor, this._template, false, this._options.adjustWhitespace, this._options.clipboardText, this._options.overtypingCapturer, this._languageConfigurationService);\n this._snippets = snippets;\n this._editor.executeEdits('snippet', edits, _undoEdits => {\n // Sometimes, the text buffer will remove automatic whitespace when doing any edits,\n // so we need to look only at the undo edits relevant for us.\n // Our edits have an identifier set so that's how we can distinguish them\n const undoEdits = _undoEdits.filter(edit => !!edit.identifier);\n for (let idx = 0; idx < snippets.length; idx++) {\n snippets[idx].initialize(undoEdits[idx].textChange);\n }\n if (this._snippets[0].hasPlaceholder) {\n return this._move(true);\n }\n else {\n return undoEdits\n .map(edit => Selection.fromPositions(edit.range.getEndPosition()));\n }\n });\n this._editor.revealRange(this._editor.getSelections()[0]);\n }\n merge(template, options = _defaultOptions) {\n if (!this._editor.hasModel()) {\n return;\n }\n this._templateMerges.push([this._snippets[0]._nestingLevel, this._snippets[0]._placeholderGroupsIdx, template]);\n const { edits, snippets } = SnippetSession.createEditsAndSnippetsFromSelections(this._editor, template, options.overwriteBefore, options.overwriteAfter, true, options.adjustWhitespace, options.clipboardText, options.overtypingCapturer, this._languageConfigurationService);\n this._editor.executeEdits('snippet', edits, _undoEdits => {\n // Sometimes, the text buffer will remove automatic whitespace when doing any edits,\n // so we need to look only at the undo edits relevant for us.\n // Our edits have an identifier set so that's how we can distinguish them\n const undoEdits = _undoEdits.filter(edit => !!edit.identifier);\n for (let idx = 0; idx < snippets.length; idx++) {\n snippets[idx].initialize(undoEdits[idx].textChange);\n }\n // Trivial snippets have no placeholder or are just the final placeholder. That means they\n // are just text insertions and we don't need to merge the nested snippet into the existing\n // snippet\n const isTrivialSnippet = snippets[0].isTrivialSnippet;\n if (!isTrivialSnippet) {\n for (const snippet of this._snippets) {\n snippet.merge(snippets);\n }\n console.assert(snippets.length === 0);\n }\n if (this._snippets[0].hasPlaceholder && !isTrivialSnippet) {\n return this._move(undefined);\n }\n else {\n return undoEdits.map(edit => Selection.fromPositions(edit.range.getEndPosition()));\n }\n });\n }\n next() {\n const newSelections = this._move(true);\n this._editor.setSelections(newSelections);\n this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\n }\n prev() {\n const newSelections = this._move(false);\n this._editor.setSelections(newSelections);\n this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\n }\n _move(fwd) {\n const selections = [];\n for (const snippet of this._snippets) {\n const oneSelection = snippet.move(fwd);\n selections.push(...oneSelection);\n }\n return selections;\n }\n get isAtFirstPlaceholder() {\n return this._snippets[0].isAtFirstPlaceholder;\n }\n get isAtLastPlaceholder() {\n return this._snippets[0].isAtLastPlaceholder;\n }\n get hasPlaceholder() {\n return this._snippets[0].hasPlaceholder;\n }\n get hasChoice() {\n return this._snippets[0].hasChoice;\n }\n get activeChoice() {\n return this._snippets[0].activeChoice;\n }\n isSelectionWithinPlaceholders() {\n if (!this.hasPlaceholder) {\n return false;\n }\n const selections = this._editor.getSelections();\n if (selections.length < this._snippets.length) {\n // this means we started snippet mode with N\n // selections and have M (N > M) selections.\n // So one snippet is without selection -> cancel\n return false;\n }\n const allPossibleSelections = new Map();\n for (const snippet of this._snippets) {\n const possibleSelections = snippet.computePossibleSelections();\n // for the first snippet find the placeholder (and its ranges)\n // that contain at least one selection. for all remaining snippets\n // the same placeholder (and their ranges) must be used.\n if (allPossibleSelections.size === 0) {\n for (const [index, ranges] of possibleSelections) {\n ranges.sort(Range.compareRangesUsingStarts);\n for (const selection of selections) {\n if (ranges[0].containsRange(selection)) {\n allPossibleSelections.set(index, []);\n break;\n }\n }\n }\n }\n if (allPossibleSelections.size === 0) {\n // return false if we couldn't associate a selection to\n // this (the first) snippet\n return false;\n }\n // add selections from 'this' snippet so that we know all\n // selections for this placeholder\n allPossibleSelections.forEach((array, index) => {\n array.push(...possibleSelections.get(index));\n });\n }\n // sort selections (and later placeholder-ranges). then walk both\n // arrays and make sure the placeholder-ranges contain the corresponding\n // selection\n selections.sort(Range.compareRangesUsingStarts);\n for (const [index, ranges] of allPossibleSelections) {\n if (ranges.length !== selections.length) {\n allPossibleSelections.delete(index);\n continue;\n }\n ranges.sort(Range.compareRangesUsingStarts);\n for (let i = 0; i < ranges.length; i++) {\n if (!ranges[i].containsRange(selections[i])) {\n allPossibleSelections.delete(index);\n continue;\n }\n }\n }\n // from all possible selections we have deleted those\n // that don't match with the current selection. if we don't\n // have any left, we don't have a selection anymore\n return allPossibleSelections.size > 0;\n }\n};\nSnippetSession = __decorate([\n __param(3, ILanguageConfigurationService)\n], SnippetSession);\nexport { SnippetSession };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { OutlineModel, OutlineElement } from '../../documentSymbols/browser/outlineModel.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { createStringBuilder } from '../../../common/core/stringBuilder.js';\nimport { RenderLineInput, renderViewLine } from '../../../common/viewLayout/viewLineRenderer.js';\nimport { LineDecoration } from '../../../common/viewLayout/lineDecorations.js';\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Position } from '../../../common/core/position.js';\nlet StickyScrollController = class StickyScrollController extends Disposable {\n constructor(editor, _languageFeaturesService) {\n super();\n this._sessionStore = new DisposableStore();\n this._ranges = [];\n this._rangesVersionId = 0;\n this._editor = editor;\n this._languageFeaturesService = _languageFeaturesService;\n this.stickyScrollWidget = new StickyScrollWidget(this._editor);\n this._register(this._editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(34 /* EditorOption.experimental */)) {\n this.onConfigurationChange();\n }\n }));\n this._updateSoon = this._register(new RunOnceScheduler(() => this._update(true), 50));\n this.onConfigurationChange();\n }\n onConfigurationChange() {\n const options = this._editor.getOption(34 /* EditorOption.experimental */);\n if (options.stickyScroll.enabled === false) {\n this.stickyScrollWidget.emptyRootNode();\n this._editor.removeOverlayWidget(this.stickyScrollWidget);\n this._sessionStore.clear();\n return;\n }\n else {\n this._editor.addOverlayWidget(this.stickyScrollWidget);\n this._sessionStore.add(this._editor.onDidChangeModel(() => this._update(true)));\n this._sessionStore.add(this._editor.onDidScrollChange(() => this._update(false)));\n this._sessionStore.add(this._editor.onDidChangeHiddenAreas(() => this._update(true)));\n this._sessionStore.add(this._editor.onDidChangeModelTokens((e) => this._onTokensChange(e)));\n this._sessionStore.add(this._editor.onDidChangeModelContent(() => this._updateSoon.schedule()));\n this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => this._update(true)));\n this._update(true);\n }\n }\n _needsUpdate(event) {\n const stickyLineNumbers = this.stickyScrollWidget.getCurrentLines();\n for (const stickyLineNumber of stickyLineNumbers) {\n for (const range of event.ranges) {\n if (stickyLineNumber >= range.fromLineNumber && stickyLineNumber <= range.toLineNumber) {\n return true;\n }\n }\n }\n return false;\n }\n _onTokensChange(event) {\n if (this._needsUpdate(event)) {\n this._update(false);\n }\n }\n _update(updateOutline = false) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (updateOutline) {\n (_a = this._cts) === null || _a === void 0 ? void 0 : _a.dispose(true);\n this._cts = new CancellationTokenSource();\n yield this._updateOutlineModel(this._cts.token);\n }\n const hiddenRanges = (_b = this._editor._getViewModel()) === null || _b === void 0 ? void 0 : _b.getHiddenAreas();\n if (hiddenRanges) {\n for (const hiddenRange of hiddenRanges) {\n this._ranges = this._ranges.filter(range => { return !(range[0] >= hiddenRange.startLineNumber && range[1] <= hiddenRange.endLineNumber + 1); });\n }\n }\n this._renderStickyScroll();\n });\n }\n _findLineRanges(outlineElement, depth) {\n if (outlineElement === null || outlineElement === void 0 ? void 0 : outlineElement.children.size) {\n let didRecursion = false;\n for (const outline of outlineElement === null || outlineElement === void 0 ? void 0 : outlineElement.children.values()) {\n const kind = outline.symbol.kind;\n if (kind === 4 /* SymbolKind.Class */ || kind === 8 /* SymbolKind.Constructor */ || kind === 11 /* SymbolKind.Function */ || kind === 10 /* SymbolKind.Interface */ || kind === 5 /* SymbolKind.Method */ || kind === 1 /* SymbolKind.Module */) {\n didRecursion = true;\n this._findLineRanges(outline, depth + 1);\n }\n }\n if (!didRecursion) {\n this._addOutlineRanges(outlineElement, depth);\n }\n }\n else {\n this._addOutlineRanges(outlineElement, depth);\n }\n }\n _addOutlineRanges(outlineElement, depth) {\n let currentStartLine = 0;\n let currentEndLine = 0;\n while (outlineElement) {\n const kind = outlineElement.symbol.kind;\n if (kind === 4 /* SymbolKind.Class */ || kind === 8 /* SymbolKind.Constructor */ || kind === 11 /* SymbolKind.Function */ || kind === 10 /* SymbolKind.Interface */ || kind === 5 /* SymbolKind.Method */ || kind === 1 /* SymbolKind.Module */) {\n currentStartLine = outlineElement === null || outlineElement === void 0 ? void 0 : outlineElement.symbol.range.startLineNumber;\n currentEndLine = outlineElement === null || outlineElement === void 0 ? void 0 : outlineElement.symbol.range.endLineNumber;\n this._ranges.push([currentStartLine, currentEndLine, depth]);\n depth--;\n }\n if (outlineElement.parent instanceof OutlineElement) {\n outlineElement = outlineElement.parent;\n }\n else {\n break;\n }\n }\n }\n _updateOutlineModel(token) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._editor.hasModel()) {\n const model = this._editor.getModel();\n const modelVersionId = model.getVersionId();\n const outlineModel = yield OutlineModel.create(this._languageFeaturesService.documentSymbolProvider, model, token);\n if (token.isCancellationRequested) {\n return;\n }\n this._ranges = [];\n this._rangesVersionId = modelVersionId;\n for (const outline of outlineModel.children.values()) {\n if (outline instanceof OutlineElement) {\n const kind = outline.symbol.kind;\n if (kind === 4 /* SymbolKind.Class */ || kind === 8 /* SymbolKind.Constructor */ || kind === 11 /* SymbolKind.Function */ || kind === 10 /* SymbolKind.Interface */ || kind === 5 /* SymbolKind.Method */ || kind === 1 /* SymbolKind.Module */) {\n this._findLineRanges(outline, 1);\n }\n else {\n this._findLineRanges(outline, 0);\n }\n }\n this._ranges = this._ranges.sort(function (a, b) {\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n else if (a[1] !== b[1]) {\n return b[1] - a[1];\n }\n else {\n return a[2] - b[2];\n }\n });\n let previous = [];\n for (const [index, arr] of this._ranges.entries()) {\n const [start, end, _depth] = arr;\n if (previous[0] === start && previous[1] === end) {\n this._ranges.splice(index, 1);\n }\n else {\n previous = arr;\n }\n }\n }\n }\n });\n }\n _renderStickyScroll() {\n if (!(this._editor.hasModel())) {\n return;\n }\n const lineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */);\n const model = this._editor.getModel();\n if (this._rangesVersionId !== model.getVersionId()) {\n // Old _ranges not updated yet\n return;\n }\n const scrollTop = this._editor.getScrollTop();\n this.stickyScrollWidget.emptyRootNode();\n const beginningLinesConsidered = new Set();\n for (const [index, arr] of this._ranges.entries()) {\n const [start, end, depth] = arr;\n if (end - start > 0 && model.getLineContent(start) !== '') {\n const topOfElementAtDepth = (depth - 1) * lineHeight;\n const bottomOfElementAtDepth = depth * lineHeight;\n const bottomOfBeginningLine = this._editor.getBottomForLineNumber(start) - scrollTop;\n const topOfEndLine = this._editor.getTopForLineNumber(end) - scrollTop;\n const bottomOfEndLine = this._editor.getBottomForLineNumber(end) - scrollTop;\n if (!beginningLinesConsidered.has(start)) {\n if (topOfElementAtDepth >= topOfEndLine - 1 && topOfElementAtDepth < bottomOfEndLine - 2) {\n beginningLinesConsidered.add(start);\n this.stickyScrollWidget.pushCodeLine(new StickyScrollCodeLine(start, depth, this._editor, -1, bottomOfEndLine - bottomOfElementAtDepth));\n break;\n }\n else if (bottomOfElementAtDepth > bottomOfBeginningLine && bottomOfElementAtDepth < bottomOfEndLine - 1) {\n beginningLinesConsidered.add(start);\n this.stickyScrollWidget.pushCodeLine(new StickyScrollCodeLine(start, depth, this._editor, 0, 0));\n }\n }\n else {\n this._ranges.splice(index, 1);\n }\n }\n }\n this.stickyScrollWidget.updateRootNode();\n }\n dispose() {\n super.dispose();\n this._sessionStore.dispose();\n }\n};\nStickyScrollController.ID = 'store.contrib.stickyScrollController';\nStickyScrollController = __decorate([\n __param(1, ILanguageFeaturesService)\n], StickyScrollController);\nconst _ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('stickyScrollViewLayer', { createHTML: value => value });\nclass StickyScrollCodeLine {\n constructor(_lineNumber, _depth, _editor, _zIndex, _relativePosition) {\n this._lineNumber = _lineNumber;\n this._depth = _depth;\n this._editor = _editor;\n this._zIndex = _zIndex;\n this._relativePosition = _relativePosition;\n this.effectiveLineHeight = 0;\n this.effectiveLineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */) + this._relativePosition;\n }\n get lineNumber() {\n return this._lineNumber;\n }\n getDomNode() {\n const root = document.createElement('div');\n const viewModel = this._editor._getViewModel();\n const viewLineNumber = viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(this._lineNumber, 1)).lineNumber;\n const lineRenderingData = viewModel.getViewLineRenderingData(viewLineNumber);\n let actualInlineDecorations;\n try {\n actualInlineDecorations = LineDecoration.filter(lineRenderingData.inlineDecorations, viewLineNumber, lineRenderingData.minColumn, lineRenderingData.maxColumn);\n }\n catch (err) {\n actualInlineDecorations = [];\n }\n const renderLineInput = new RenderLineInput(true, true, lineRenderingData.content, lineRenderingData.continuesWithWrappedLine, lineRenderingData.isBasicASCII, lineRenderingData.containsRTL, 0, lineRenderingData.tokens, actualInlineDecorations, lineRenderingData.tabSize, lineRenderingData.startVisibleColumn, 1, 1, 1, 100, 'none', true, true, null);\n const sb = createStringBuilder(400);\n renderViewLine(renderLineInput, sb);\n let newLine;\n if (_ttPolicy) {\n newLine = _ttPolicy.createHTML(sb.build());\n }\n else {\n newLine = sb.build();\n }\n const lineHTMLNode = document.createElement('span');\n lineHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n lineHTMLNode.style.overflow = 'hidden';\n lineHTMLNode.style.whiteSpace = 'nowrap';\n lineHTMLNode.style.display = 'inline-block';\n lineHTMLNode.style.lineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */).toString() + 'px';\n lineHTMLNode.innerHTML = newLine;\n const lineNumberHTMLNode = document.createElement('span');\n lineNumberHTMLNode.style.width = this._editor.getLayoutInfo().contentLeft.toString() + 'px';\n lineNumberHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n lineNumberHTMLNode.style.color = 'var(--vscode-editorLineNumber-foreground)';\n lineNumberHTMLNode.style.display = 'inline-block';\n lineNumberHTMLNode.style.lineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */).toString() + 'px';\n const innerLineNumberHTML = document.createElement('span');\n innerLineNumberHTML.innerText = this._lineNumber.toString();\n innerLineNumberHTML.style.paddingLeft = this._editor.getLayoutInfo().lineNumbersLeft.toString() + 'px';\n innerLineNumberHTML.style.width = this._editor.getLayoutInfo().lineNumbersWidth.toString() + 'px';\n innerLineNumberHTML.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n innerLineNumberHTML.style.textAlign = 'right';\n innerLineNumberHTML.style.float = 'left';\n innerLineNumberHTML.style.lineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */).toString() + 'px';\n lineNumberHTMLNode.appendChild(innerLineNumberHTML);\n root.onclick = e => {\n e.stopPropagation();\n e.preventDefault();\n this._editor.revealPosition({ lineNumber: this._lineNumber - this._depth + 1, column: 1 });\n };\n root.onmouseover = e => {\n innerLineNumberHTML.style.background = `var(--vscode-editorStickyScrollHover-background)`;\n lineHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScrollHover-background)`;\n lineNumberHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScrollHover-background)`;\n root.style.backgroundColor = `var(--vscode-editorStickyScrollHover-background)`;\n innerLineNumberHTML.style.cursor = `pointer`;\n lineHTMLNode.style.cursor = `pointer`;\n root.style.cursor = `pointer`;\n lineNumberHTMLNode.style.cursor = `pointer`;\n };\n root.onmouseleave = e => {\n innerLineNumberHTML.style.background = `var(--vscode-editorStickyScroll-background)`;\n lineHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n lineNumberHTMLNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n root.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n };\n this._editor.applyFontInfo(lineHTMLNode);\n this._editor.applyFontInfo(innerLineNumberHTML);\n root.appendChild(lineNumberHTMLNode);\n root.appendChild(lineHTMLNode);\n root.style.zIndex = this._zIndex.toString();\n root.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n root.style.overflow = 'hidden';\n root.style.whiteSpace = 'nowrap';\n root.style.width = '100%';\n root.style.lineHeight = this._editor.getOption(61 /* EditorOption.lineHeight */).toString() + 'px';\n root.style.height = this._editor.getOption(61 /* EditorOption.lineHeight */).toString() + 'px';\n // Special case for last line of sticky scroll\n if (this._relativePosition) {\n root.style.position = 'relative';\n root.style.top = this._relativePosition + 'px';\n root.style.width = '100%';\n }\n return root;\n }\n}\nclass StickyScrollWidget {\n constructor(_editor) {\n this._editor = _editor;\n this.arrayOfCodeLines = [];\n this.rootDomNode = document.createElement('div');\n this.rootDomNode = document.createElement('div');\n this.rootDomNode.style.width = '100%';\n this.rootDomNode.style.boxShadow = `var(--vscode-scrollbar-shadow) 0 6px 6px -6px`;\n }\n getCurrentLines() {\n const widgetLineRange = [];\n for (const codeLine of this.arrayOfCodeLines) {\n widgetLineRange.push(codeLine.lineNumber);\n }\n return widgetLineRange;\n }\n pushCodeLine(codeLine) {\n this.arrayOfCodeLines.push(codeLine);\n }\n updateRootNode() {\n let widgetHeight = 0;\n for (const line of this.arrayOfCodeLines) {\n widgetHeight += line.effectiveLineHeight;\n this.rootDomNode.appendChild(line.getDomNode());\n }\n this.rootDomNode.style.height = widgetHeight.toString() + 'px';\n }\n emptyRootNode() {\n this.arrayOfCodeLines.length = 0;\n dom.clearNode(this.rootDomNode);\n }\n getId() {\n return 'editor.contrib.stickyScrollWidget';\n }\n getDomNode() {\n this.rootDomNode.style.zIndex = '2';\n this.rootDomNode.style.backgroundColor = `var(--vscode-editorStickyScroll-background)`;\n return this.rootDomNode;\n }\n getPosition() {\n return {\n preference: null\n };\n }\n}\nregisterEditorContribution(StickyScrollController.ID, StickyScrollController);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { quickSelect } from '../../../../base/common/arrays.js';\nimport { anyScore, fuzzyScore, FuzzyScore, fuzzyScoreGracefulAggressive, FuzzyScoreOptions } from '../../../../base/common/filters.js';\nimport { compareIgnoreCase } from '../../../../base/common/strings.js';\nexport class LineContext {\n constructor(leadingLineContent, characterCountDelta) {\n this.leadingLineContent = leadingLineContent;\n this.characterCountDelta = characterCountDelta;\n }\n}\n/**\n * Sorted, filtered completion view model\n * */\nexport class CompletionModel {\n constructor(items, column, lineContext, wordDistance, options, snippetSuggestions, fuzzyScoreOptions = FuzzyScoreOptions.default, clipboardText = undefined) {\n this.clipboardText = clipboardText;\n this._snippetCompareFn = CompletionModel._compareCompletionItems;\n this._items = items;\n this._column = column;\n this._wordDistance = wordDistance;\n this._options = options;\n this._refilterKind = 1 /* Refilter.All */;\n this._lineContext = lineContext;\n this._fuzzyScoreOptions = fuzzyScoreOptions;\n if (snippetSuggestions === 'top') {\n this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsUp;\n }\n else if (snippetSuggestions === 'bottom') {\n this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsDown;\n }\n }\n get lineContext() {\n return this._lineContext;\n }\n set lineContext(value) {\n if (this._lineContext.leadingLineContent !== value.leadingLineContent\n || this._lineContext.characterCountDelta !== value.characterCountDelta) {\n this._refilterKind = this._lineContext.characterCountDelta < value.characterCountDelta && this._filteredItems ? 2 /* Refilter.Incr */ : 1 /* Refilter.All */;\n this._lineContext = value;\n }\n }\n get items() {\n this._ensureCachedState();\n return this._filteredItems;\n }\n get allProvider() {\n this._ensureCachedState();\n return this._providerInfo.keys();\n }\n get incomplete() {\n this._ensureCachedState();\n const result = new Set();\n for (const [provider, incomplete] of this._providerInfo) {\n if (incomplete) {\n result.add(provider);\n }\n }\n return result;\n }\n adopt(except) {\n const res = [];\n for (let i = 0; i < this._items.length;) {\n if (!except.has(this._items[i].provider)) {\n res.push(this._items[i]);\n // unordered removed\n this._items[i] = this._items[this._items.length - 1];\n this._items.pop();\n }\n else {\n // continue with next item\n i++;\n }\n }\n this._refilterKind = 1 /* Refilter.All */;\n return res;\n }\n get stats() {\n this._ensureCachedState();\n return this._stats;\n }\n _ensureCachedState() {\n if (this._refilterKind !== 0 /* Refilter.Nothing */) {\n this._createCachedState();\n }\n }\n _createCachedState() {\n this._providerInfo = new Map();\n const labelLengths = [];\n const { leadingLineContent, characterCountDelta } = this._lineContext;\n let word = '';\n let wordLow = '';\n // incrementally filter less\n const source = this._refilterKind === 1 /* Refilter.All */ ? this._items : this._filteredItems;\n const target = [];\n // picks a score function based on the number of\n // items that we have to score/filter and based on the\n // user-configuration\n const scoreFn = (!this._options.filterGraceful || source.length > 2000) ? fuzzyScore : fuzzyScoreGracefulAggressive;\n for (let i = 0; i < source.length; i++) {\n const item = source[i];\n if (item.isInvalid) {\n continue; // SKIP invalid items\n }\n // collect all support, know if their result is incomplete\n this._providerInfo.set(item.provider, Boolean(item.container.incomplete));\n // 'word' is that remainder of the current line that we\n // filter and score against. In theory each suggestion uses a\n // different word, but in practice not - that's why we cache\n const overwriteBefore = item.position.column - item.editStart.column;\n const wordLen = overwriteBefore + characterCountDelta - (item.position.column - this._column);\n if (word.length !== wordLen) {\n word = wordLen === 0 ? '' : leadingLineContent.slice(-wordLen);\n wordLow = word.toLowerCase();\n }\n // remember the word against which this item was\n // scored\n item.word = word;\n if (wordLen === 0) {\n // when there is nothing to score against, don't\n // event try to do. Use a const rank and rely on\n // the fallback-sort using the initial sort order.\n // use a score of `-100` because that is out of the\n // bound of values `fuzzyScore` will return\n item.score = FuzzyScore.Default;\n }\n else {\n // skip word characters that are whitespace until\n // we have hit the replace range (overwriteBefore)\n let wordPos = 0;\n while (wordPos < overwriteBefore) {\n const ch = word.charCodeAt(wordPos);\n if (ch === 32 /* CharCode.Space */ || ch === 9 /* CharCode.Tab */) {\n wordPos += 1;\n }\n else {\n break;\n }\n }\n if (wordPos >= wordLen) {\n // the wordPos at which scoring starts is the whole word\n // and therefore the same rules as not having a word apply\n item.score = FuzzyScore.Default;\n }\n else if (typeof item.completion.filterText === 'string') {\n // when there is a `filterText` it must match the `word`.\n // if it matches we check with the label to compute highlights\n // and if that doesn't yield a result we have no highlights,\n // despite having the match\n const match = scoreFn(word, wordLow, wordPos, item.completion.filterText, item.filterTextLow, 0, this._fuzzyScoreOptions);\n if (!match) {\n continue; // NO match\n }\n if (compareIgnoreCase(item.completion.filterText, item.textLabel) === 0) {\n // filterText and label are actually the same -> use good highlights\n item.score = match;\n }\n else {\n // re-run the scorer on the label in the hope of a result BUT use the rank\n // of the filterText-match\n item.score = anyScore(word, wordLow, wordPos, item.textLabel, item.labelLow, 0);\n item.score[0] = match[0]; // use score from filterText\n }\n }\n else {\n // by default match `word` against the `label`\n const match = scoreFn(word, wordLow, wordPos, item.textLabel, item.labelLow, 0, this._fuzzyScoreOptions);\n if (!match) {\n continue; // NO match\n }\n item.score = match;\n }\n }\n item.idx = i;\n item.distance = this._wordDistance.distance(item.position, item.completion);\n target.push(item);\n // update stats\n labelLengths.push(item.textLabel.length);\n }\n this._filteredItems = target.sort(this._snippetCompareFn);\n this._refilterKind = 0 /* Refilter.Nothing */;\n this._stats = {\n pLabelLen: labelLengths.length ?\n quickSelect(labelLengths.length - .85, labelLengths, (a, b) => a - b)\n : 0\n };\n }\n static _compareCompletionItems(a, b) {\n if (a.score[0] > b.score[0]) {\n return -1;\n }\n else if (a.score[0] < b.score[0]) {\n return 1;\n }\n else if (a.distance < b.distance) {\n return -1;\n }\n else if (a.distance > b.distance) {\n return 1;\n }\n else if (a.idx < b.idx) {\n return -1;\n }\n else if (a.idx > b.idx) {\n return 1;\n }\n else {\n return 0;\n }\n }\n static _compareCompletionItemsSnippetsDown(a, b) {\n if (a.completion.kind !== b.completion.kind) {\n if (a.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n return 1;\n }\n else if (b.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n return -1;\n }\n }\n return CompletionModel._compareCompletionItems(a, b);\n }\n static _compareCompletionItemsSnippetsUp(a, b) {\n if (a.completion.kind !== b.completion.kind) {\n if (a.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n return -1;\n }\n else if (b.completion.kind === 27 /* CompletionItemKind.Snippet */) {\n return 1;\n }\n }\n return CompletionModel._compareCompletionItems(a, b);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { CancellationError, isCancellationError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { FuzzyScore } from '../../../../base/common/filters.js';\nimport { DisposableStore, isDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { localize } from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { historyNavigationVisible } from '../../../../platform/history/browser/contextScopedHistoryWidget.js';\nexport const Context = {\n Visible: historyNavigationVisible,\n HasFocusedSuggestion: new RawContextKey('suggestWidgetHasFocusedSuggestion', false, localize('suggestWidgetHasSelection', \"Whether any suggestion is focused\")),\n DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false, localize('suggestWidgetDetailsVisible', \"Whether suggestion details are visible\")),\n MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false, localize('suggestWidgetMultipleSuggestions', \"Whether there are multiple suggestions to pick from\")),\n MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true, localize('suggestionMakesTextEdit', \"Whether inserting the current suggestion yields in a change or has everything already been typed\")),\n AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true, localize('acceptSuggestionOnEnter', \"Whether suggestions are inserted when pressing Enter\")),\n HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false, localize('suggestionHasInsertAndReplaceRange', \"Whether the current suggestion has insert and replace behaviour\")),\n InsertMode: new RawContextKey('suggestionInsertMode', undefined, { type: 'string', description: localize('suggestionInsertMode', \"Whether the default behaviour is to insert or replace\") }),\n CanResolve: new RawContextKey('suggestionCanResolve', false, localize('suggestionCanResolve', \"Whether the current suggestion supports to resolve further details\")),\n};\nexport const suggestWidgetStatusbarMenu = new MenuId('suggestWidgetStatusBar');\nexport class CompletionItem {\n constructor(position, completion, container, provider) {\n this.position = position;\n this.completion = completion;\n this.container = container;\n this.provider = provider;\n // validation\n this.isInvalid = false;\n // sorting, filtering\n this.score = FuzzyScore.Default;\n this.distance = 0;\n this.textLabel = typeof completion.label === 'string'\n ? completion.label\n : completion.label.label;\n // ensure lower-variants (perf)\n this.labelLow = this.textLabel.toLowerCase();\n // validate label\n this.isInvalid = !this.textLabel;\n this.sortTextLow = completion.sortText && completion.sortText.toLowerCase();\n this.filterTextLow = completion.filterText && completion.filterText.toLowerCase();\n this.extensionId = completion.extensionId;\n // normalize ranges\n if (Range.isIRange(completion.range)) {\n this.editStart = new Position(completion.range.startLineNumber, completion.range.startColumn);\n this.editInsertEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\n this.editReplaceEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\n // validate range\n this.isInvalid = this.isInvalid\n || Range.spansMultipleLines(completion.range) || completion.range.startLineNumber !== position.lineNumber;\n }\n else {\n this.editStart = new Position(completion.range.insert.startLineNumber, completion.range.insert.startColumn);\n this.editInsertEnd = new Position(completion.range.insert.endLineNumber, completion.range.insert.endColumn);\n this.editReplaceEnd = new Position(completion.range.replace.endLineNumber, completion.range.replace.endColumn);\n // validate ranges\n this.isInvalid = this.isInvalid\n || Range.spansMultipleLines(completion.range.insert) || Range.spansMultipleLines(completion.range.replace)\n || completion.range.insert.startLineNumber !== position.lineNumber || completion.range.replace.startLineNumber !== position.lineNumber\n || completion.range.insert.startColumn !== completion.range.replace.startColumn;\n }\n // create the suggestion resolver\n if (typeof provider.resolveCompletionItem !== 'function') {\n this._resolveCache = Promise.resolve();\n this._isResolved = true;\n }\n }\n // ---- resolving\n get isResolved() {\n return !!this._isResolved;\n }\n resolve(token) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._resolveCache) {\n const sub = token.onCancellationRequested(() => {\n this._resolveCache = undefined;\n this._isResolved = false;\n });\n this._resolveCache = Promise.resolve(this.provider.resolveCompletionItem(this.completion, token)).then(value => {\n Object.assign(this.completion, value);\n this._isResolved = true;\n sub.dispose();\n }, err => {\n if (isCancellationError(err)) {\n // the IPC queue will reject the request with the\n // cancellation error -> reset cached\n this._resolveCache = undefined;\n this._isResolved = false;\n }\n });\n }\n return this._resolveCache;\n });\n }\n}\nexport class CompletionOptions {\n constructor(snippetSortOrder = 2 /* SnippetSortOrder.Bottom */, kindFilter = new Set(), providerFilter = new Set(), showDeprecated = true) {\n this.snippetSortOrder = snippetSortOrder;\n this.kindFilter = kindFilter;\n this.providerFilter = providerFilter;\n this.showDeprecated = showDeprecated;\n }\n}\nCompletionOptions.default = new CompletionOptions();\nlet _snippetSuggestSupport;\nexport function getSnippetSuggestSupport() {\n return _snippetSuggestSupport;\n}\nexport class CompletionItemModel {\n constructor(items, needsClipboard, durations, disposable) {\n this.items = items;\n this.needsClipboard = needsClipboard;\n this.durations = durations;\n this.disposable = disposable;\n }\n}\nexport function provideSuggestionItems(registry, model, position, options = CompletionOptions.default, context = { triggerKind: 0 /* languages.CompletionTriggerKind.Invoke */ }, token = CancellationToken.None) {\n return __awaiter(this, void 0, void 0, function* () {\n const sw = new StopWatch(true);\n position = position.clone();\n const word = model.getWordAtPosition(position);\n const defaultReplaceRange = word ? new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn) : Range.fromPositions(position);\n const defaultRange = { replace: defaultReplaceRange, insert: defaultReplaceRange.setEndPosition(position.lineNumber, position.column) };\n const result = [];\n const disposables = new DisposableStore();\n const durations = [];\n let needsClipboard = false;\n const onCompletionList = (provider, container, sw) => {\n var _a, _b, _c;\n let didAddResult = false;\n if (!container) {\n return didAddResult;\n }\n for (const suggestion of container.suggestions) {\n if (!options.kindFilter.has(suggestion.kind)) {\n // skip if not showing deprecated suggestions\n if (!options.showDeprecated && ((_a = suggestion === null || suggestion === void 0 ? void 0 : suggestion.tags) === null || _a === void 0 ? void 0 : _a.includes(1 /* languages.CompletionItemTag.Deprecated */))) {\n continue;\n }\n // fill in default range when missing\n if (!suggestion.range) {\n suggestion.range = defaultRange;\n }\n // fill in default sortText when missing\n if (!suggestion.sortText) {\n suggestion.sortText = typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.label;\n }\n if (!needsClipboard && suggestion.insertTextRules && suggestion.insertTextRules & 4 /* languages.CompletionItemInsertTextRule.InsertAsSnippet */) {\n needsClipboard = SnippetParser.guessNeedsClipboard(suggestion.insertText);\n }\n result.push(new CompletionItem(position, suggestion, container, provider));\n didAddResult = true;\n }\n }\n if (isDisposable(container)) {\n disposables.add(container);\n }\n durations.push({\n providerName: (_b = provider._debugDisplayName) !== null && _b !== void 0 ? _b : 'unknown_provider', elapsedProvider: (_c = container.duration) !== null && _c !== void 0 ? _c : -1, elapsedOverall: sw.elapsed()\n });\n return didAddResult;\n };\n // ask for snippets in parallel to asking \"real\" providers. Only do something if configured to\n // do so - no snippet filter, no special-providers-only request\n const snippetCompletions = (() => __awaiter(this, void 0, void 0, function* () {\n if (!_snippetSuggestSupport || options.kindFilter.has(27 /* languages.CompletionItemKind.Snippet */)) {\n return;\n }\n if (options.providerFilter.size > 0 && !options.providerFilter.has(_snippetSuggestSupport)) {\n return;\n }\n const sw = new StopWatch(true);\n const list = yield _snippetSuggestSupport.provideCompletionItems(model, position, context, token);\n onCompletionList(_snippetSuggestSupport, list, sw);\n }))();\n // add suggestions from contributed providers - providers are ordered in groups of\n // equal score and once a group produces a result the process stops\n // get provider groups, always add snippet suggestion provider\n for (const providerGroup of registry.orderedGroups(model)) {\n // for each support in the group ask for suggestions\n let didAddResult = false;\n yield Promise.all(providerGroup.map((provider) => __awaiter(this, void 0, void 0, function* () {\n if (options.providerFilter.size > 0 && !options.providerFilter.has(provider)) {\n return;\n }\n try {\n const sw = new StopWatch(true);\n const list = yield provider.provideCompletionItems(model, position, context, token);\n didAddResult = onCompletionList(provider, list, sw) || didAddResult;\n }\n catch (err) {\n onUnexpectedExternalError(err);\n }\n })));\n if (didAddResult || token.isCancellationRequested) {\n break;\n }\n }\n yield snippetCompletions;\n if (token.isCancellationRequested) {\n disposables.dispose();\n return Promise.reject(new CancellationError());\n }\n return new CompletionItemModel(result.sort(getSuggestionComparator(options.snippetSortOrder)), needsClipboard, { entries: durations, elapsed: sw.elapsed() }, disposables);\n });\n}\nfunction defaultComparator(a, b) {\n // check with 'sortText'\n if (a.sortTextLow && b.sortTextLow) {\n if (a.sortTextLow < b.sortTextLow) {\n return -1;\n }\n else if (a.sortTextLow > b.sortTextLow) {\n return 1;\n }\n }\n // check with 'label'\n if (a.textLabel < b.textLabel) {\n return -1;\n }\n else if (a.textLabel > b.textLabel) {\n return 1;\n }\n // check with 'type'\n return a.completion.kind - b.completion.kind;\n}\nfunction snippetUpComparator(a, b) {\n if (a.completion.kind !== b.completion.kind) {\n if (a.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n return -1;\n }\n else if (b.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n return 1;\n }\n }\n return defaultComparator(a, b);\n}\nfunction snippetDownComparator(a, b) {\n if (a.completion.kind !== b.completion.kind) {\n if (a.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n return 1;\n }\n else if (b.completion.kind === 27 /* languages.CompletionItemKind.Snippet */) {\n return -1;\n }\n }\n return defaultComparator(a, b);\n}\nconst _snippetComparators = new Map();\n_snippetComparators.set(0 /* SnippetSortOrder.Top */, snippetUpComparator);\n_snippetComparators.set(2 /* SnippetSortOrder.Bottom */, snippetDownComparator);\n_snippetComparators.set(1 /* SnippetSortOrder.Inline */, defaultComparator);\nexport function getSuggestionComparator(snippetConfig) {\n return _snippetComparators.get(snippetConfig);\n}\nCommandsRegistry.registerCommand('_executeCompletionItemProvider', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\n const [uri, position, triggerCharacter, maxItemsToResolve] = args;\n assertType(URI.isUri(uri));\n assertType(Position.isIPosition(position));\n assertType(typeof triggerCharacter === 'string' || !triggerCharacter);\n assertType(typeof maxItemsToResolve === 'number' || !maxItemsToResolve);\n const { completionProvider } = accessor.get(ILanguageFeaturesService);\n const ref = yield accessor.get(ITextModelService).createModelReference(uri);\n try {\n const result = {\n incomplete: false,\n suggestions: []\n };\n const resolving = [];\n const completions = yield provideSuggestionItems(completionProvider, ref.object.textEditorModel, Position.lift(position), undefined, { triggerCharacter, triggerKind: triggerCharacter ? 1 /* languages.CompletionTriggerKind.TriggerCharacter */ : 0 /* languages.CompletionTriggerKind.Invoke */ });\n for (const item of completions.items) {\n if (resolving.length < (maxItemsToResolve !== null && maxItemsToResolve !== void 0 ? maxItemsToResolve : 0)) {\n resolving.push(item.resolve(CancellationToken.None));\n }\n result.incomplete = result.incomplete || item.container.incomplete;\n result.suggestions.push(item.completion);\n }\n try {\n yield Promise.all(resolving);\n return result;\n }\n finally {\n setTimeout(() => completions.disposable.dispose(), 100);\n }\n }\n finally {\n ref.dispose();\n }\n}));\nexport function showSimpleSuggestions(editor, provider) {\n var _a;\n (_a = editor.getContribution('editor.contrib.suggestController')) === null || _a === void 0 ? void 0 : _a.triggerSuggest(new Set().add(provider), undefined, true);\n}\nexport class QuickSuggestionsOptions {\n static isAllOff(config) {\n return config.other === 'off' && config.comments === 'off' && config.strings === 'off';\n }\n static isAllOn(config) {\n return config.other === 'on' && config.comments === 'on' && config.strings === 'on';\n }\n static valueFor(config, tokenType) {\n switch (tokenType) {\n case 1 /* StandardTokenType.Comment */: return config.comments;\n case 2 /* StandardTokenType.String */: return config.strings;\n default: return config.other;\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nlet WordContextKey = class WordContextKey {\n constructor(_editor, contextKeyService) {\n this._editor = _editor;\n this._enabled = false;\n this._ckAtEnd = WordContextKey.AtEnd.bindTo(contextKeyService);\n this._configListener = this._editor.onDidChangeConfiguration(e => e.hasChanged(113 /* EditorOption.tabCompletion */) && this._update());\n this._update();\n }\n dispose() {\n var _a;\n this._configListener.dispose();\n (_a = this._selectionListener) === null || _a === void 0 ? void 0 : _a.dispose();\n this._ckAtEnd.reset();\n }\n _update() {\n // only update this when tab completions are enabled\n const enabled = this._editor.getOption(113 /* EditorOption.tabCompletion */) === 'on';\n if (this._enabled === enabled) {\n return;\n }\n this._enabled = enabled;\n if (this._enabled) {\n const checkForWordEnd = () => {\n if (!this._editor.hasModel()) {\n this._ckAtEnd.set(false);\n return;\n }\n const model = this._editor.getModel();\n const selection = this._editor.getSelection();\n const word = model.getWordAtPosition(selection.getStartPosition());\n if (!word) {\n this._ckAtEnd.set(false);\n return;\n }\n this._ckAtEnd.set(word.endColumn === selection.getStartPosition().column);\n };\n this._selectionListener = this._editor.onDidChangeCursorSelection(checkForWordEnd);\n checkForWordEnd();\n }\n else if (this._selectionListener) {\n this._ckAtEnd.reset();\n this._selectionListener.dispose();\n this._selectionListener = undefined;\n }\n }\n};\nWordContextKey.AtEnd = new RawContextKey('atEndOfWord', false);\nWordContextKey = __decorate([\n __param(1, IContextKeyService)\n], WordContextKey);\nexport { WordContextKey };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nlet SuggestAlternatives = class SuggestAlternatives {\n constructor(_editor, contextKeyService) {\n this._editor = _editor;\n this._index = 0;\n this._ckOtherSuggestions = SuggestAlternatives.OtherSuggestions.bindTo(contextKeyService);\n }\n dispose() {\n this.reset();\n }\n reset() {\n var _a;\n this._ckOtherSuggestions.reset();\n (_a = this._listener) === null || _a === void 0 ? void 0 : _a.dispose();\n this._model = undefined;\n this._acceptNext = undefined;\n this._ignore = false;\n }\n set({ model, index }, acceptNext) {\n // no suggestions -> nothing to do\n if (model.items.length === 0) {\n this.reset();\n return;\n }\n // no alternative suggestions -> nothing to do\n const nextIndex = SuggestAlternatives._moveIndex(true, model, index);\n if (nextIndex === index) {\n this.reset();\n return;\n }\n this._acceptNext = acceptNext;\n this._model = model;\n this._index = index;\n this._listener = this._editor.onDidChangeCursorPosition(() => {\n if (!this._ignore) {\n this.reset();\n }\n });\n this._ckOtherSuggestions.set(true);\n }\n static _moveIndex(fwd, model, index) {\n let newIndex = index;\n while (true) {\n newIndex = (newIndex + model.items.length + (fwd ? +1 : -1)) % model.items.length;\n if (newIndex === index) {\n break;\n }\n if (!model.items[newIndex].completion.additionalTextEdits) {\n break;\n }\n }\n return newIndex;\n }\n next() {\n this._move(true);\n }\n prev() {\n this._move(false);\n }\n _move(fwd) {\n if (!this._model) {\n // nothing to reason about\n return;\n }\n try {\n this._ignore = true;\n this._index = SuggestAlternatives._moveIndex(fwd, this._model, this._index);\n this._acceptNext({ index: this._index, item: this._model.items[this._index], model: this._model });\n }\n finally {\n this._ignore = false;\n }\n }\n};\nSuggestAlternatives.OtherSuggestions = new RawContextKey('hasOtherSuggestions', false);\nSuggestAlternatives = __decorate([\n __param(1, IContextKeyService)\n], SuggestAlternatives);\nexport { SuggestAlternatives };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { CharacterSet } from '../../../common/core/characterClassifier.js';\nexport class CommitCharacterController {\n constructor(editor, widget, accept) {\n this._disposables = new DisposableStore();\n this._disposables.add(widget.onDidShow(() => this._onItem(widget.getFocusedItem())));\n this._disposables.add(widget.onDidFocus(this._onItem, this));\n this._disposables.add(widget.onDidHide(this.reset, this));\n this._disposables.add(editor.onWillType(text => {\n if (this._active && !widget.isFrozen()) {\n const ch = text.charCodeAt(text.length - 1);\n if (this._active.acceptCharacters.has(ch) && editor.getOption(0 /* EditorOption.acceptSuggestionOnCommitCharacter */)) {\n accept(this._active.item);\n }\n }\n }));\n }\n _onItem(selected) {\n if (!selected || !isNonEmptyArray(selected.item.completion.commitCharacters)) {\n // no item or no commit characters\n this.reset();\n return;\n }\n if (this._active && this._active.item.item === selected.item) {\n // still the same item\n return;\n }\n // keep item and its commit characters\n const acceptCharacters = new CharacterSet();\n for (const ch of selected.item.completion.commitCharacters) {\n if (ch.length > 0) {\n acceptCharacters.add(ch.charCodeAt(0));\n }\n }\n this._active = { acceptCharacters, item: selected };\n }\n reset() {\n this._active = undefined;\n }\n dispose() {\n this._disposables.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { TimeoutTimer } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore, dispose } from '../../../../base/common/lifecycle.js';\nimport { getLeadingWhitespace, isHighSurrogate, isLowSurrogate } from '../../../../base/common/strings.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { WordDistance } from './wordDistance.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { CompletionModel } from './completionModel.js';\nimport { CompletionOptions, getSnippetSuggestSupport, getSuggestionComparator, provideSuggestionItems, QuickSuggestionsOptions } from './suggest.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nexport class LineContext {\n constructor(model, position, auto, shy, noSelect) {\n this.leadingLineContent = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\n this.leadingWord = model.getWordUntilPosition(position);\n this.lineNumber = position.lineNumber;\n this.column = position.column;\n this.auto = auto;\n this.shy = shy;\n this.noSelect = noSelect;\n }\n static shouldAutoTrigger(editor) {\n if (!editor.hasModel()) {\n return false;\n }\n const model = editor.getModel();\n const pos = editor.getPosition();\n model.tokenization.tokenizeIfCheap(pos.lineNumber);\n const word = model.getWordAtPosition(pos);\n if (!word) {\n return false;\n }\n if (word.endColumn !== pos.column) {\n return false;\n }\n if (!isNaN(Number(word.word))) {\n return false;\n }\n return true;\n }\n}\nfunction isSuggestPreviewEnabled(editor) {\n return editor.getOption(108 /* EditorOption.suggest */).preview;\n}\nfunction canShowQuickSuggest(editor, contextKeyService, configurationService) {\n if (!Boolean(contextKeyService.getContextKeyValue('inlineSuggestionVisible'))) {\n // Allow if there is no inline suggestion.\n return true;\n }\n const allowQuickSuggestions = configurationService.getValue('editor.inlineSuggest.allowQuickSuggestions');\n if (allowQuickSuggestions !== undefined) {\n // Use setting if available.\n return Boolean(allowQuickSuggestions);\n }\n // Don't allow if inline suggestions are visible and no suggest preview is configured.\n // TODO disabled for copilot\n return false && isSuggestPreviewEnabled(editor);\n}\nfunction canShowSuggestOnTriggerCharacters(editor, contextKeyService, configurationService) {\n if (!Boolean(contextKeyService.getContextKeyValue('inlineSuggestionVisible'))) {\n // Allow if there is no inline suggestion.\n return true;\n }\n const allowQuickSuggestions = configurationService.getValue('editor.inlineSuggest.allowSuggestOnTriggerCharacters');\n if (allowQuickSuggestions !== undefined) {\n // Use setting if available.\n return Boolean(allowQuickSuggestions);\n }\n // Don't allow if inline suggestions are visible and no suggest preview is configured.\n // TODO disabled for copilot\n return false && isSuggestPreviewEnabled(editor);\n}\nlet SuggestModel = class SuggestModel {\n constructor(_editor, _editorWorkerService, _clipboardService, _telemetryService, _logService, _contextKeyService, _configurationService, _languageFeaturesService) {\n this._editor = _editor;\n this._editorWorkerService = _editorWorkerService;\n this._clipboardService = _clipboardService;\n this._telemetryService = _telemetryService;\n this._logService = _logService;\n this._contextKeyService = _contextKeyService;\n this._configurationService = _configurationService;\n this._languageFeaturesService = _languageFeaturesService;\n this._toDispose = new DisposableStore();\n this._triggerCharacterListener = new DisposableStore();\n this._triggerQuickSuggest = new TimeoutTimer();\n this._state = 0 /* State.Idle */;\n this._completionDisposables = new DisposableStore();\n this._onDidCancel = new Emitter();\n this._onDidTrigger = new Emitter();\n this._onDidSuggest = new Emitter();\n this.onDidCancel = this._onDidCancel.event;\n this.onDidTrigger = this._onDidTrigger.event;\n this.onDidSuggest = this._onDidSuggest.event;\n this._telemetryGate = 0;\n this._currentSelection = this._editor.getSelection() || new Selection(1, 1, 1, 1);\n // wire up various listeners\n this._toDispose.add(this._editor.onDidChangeModel(() => {\n this._updateTriggerCharacters();\n this.cancel();\n }));\n this._toDispose.add(this._editor.onDidChangeModelLanguage(() => {\n this._updateTriggerCharacters();\n this.cancel();\n }));\n this._toDispose.add(this._editor.onDidChangeConfiguration(() => {\n this._updateTriggerCharacters();\n }));\n this._toDispose.add(this._languageFeaturesService.completionProvider.onDidChange(() => {\n this._updateTriggerCharacters();\n this._updateActiveSuggestSession();\n }));\n let editorIsComposing = false;\n this._toDispose.add(this._editor.onDidCompositionStart(() => {\n editorIsComposing = true;\n }));\n this._toDispose.add(this._editor.onDidCompositionEnd(() => {\n editorIsComposing = false;\n this._onCompositionEnd();\n }));\n this._toDispose.add(this._editor.onDidChangeCursorSelection(e => {\n // only trigger suggest when the editor isn't composing a character\n if (!editorIsComposing) {\n this._onCursorChange(e);\n }\n }));\n this._toDispose.add(this._editor.onDidChangeModelContent(() => {\n // only filter completions when the editor isn't composing a character\n // allow-any-unicode-next-line\n // e.g. ¨ + u makes ü but just ¨ cannot be used for filtering\n if (!editorIsComposing) {\n this._refilterCompletionItems();\n }\n }));\n this._updateTriggerCharacters();\n }\n dispose() {\n dispose(this._triggerCharacterListener);\n dispose([this._onDidCancel, this._onDidSuggest, this._onDidTrigger, this._triggerQuickSuggest]);\n this._toDispose.dispose();\n this._completionDisposables.dispose();\n this.cancel();\n }\n _updateTriggerCharacters() {\n this._triggerCharacterListener.clear();\n if (this._editor.getOption(83 /* EditorOption.readOnly */)\n || !this._editor.hasModel()\n || !this._editor.getOption(111 /* EditorOption.suggestOnTriggerCharacters */)) {\n return;\n }\n const supportsByTriggerCharacter = new Map();\n for (const support of this._languageFeaturesService.completionProvider.all(this._editor.getModel())) {\n for (const ch of support.triggerCharacters || []) {\n let set = supportsByTriggerCharacter.get(ch);\n if (!set) {\n set = new Set();\n set.add(getSnippetSuggestSupport());\n supportsByTriggerCharacter.set(ch, set);\n }\n set.add(support);\n }\n }\n const checkTriggerCharacter = (text) => {\n if (!canShowSuggestOnTriggerCharacters(this._editor, this._contextKeyService, this._configurationService)) {\n return;\n }\n if (LineContext.shouldAutoTrigger(this._editor)) {\n // don't trigger by trigger characters when this is a case for quick suggest\n return;\n }\n if (!text) {\n // came here from the compositionEnd-event\n const position = this._editor.getPosition();\n const model = this._editor.getModel();\n text = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\n }\n let lastChar = '';\n if (isLowSurrogate(text.charCodeAt(text.length - 1))) {\n if (isHighSurrogate(text.charCodeAt(text.length - 2))) {\n lastChar = text.substr(text.length - 2);\n }\n }\n else {\n lastChar = text.charAt(text.length - 1);\n }\n const supports = supportsByTriggerCharacter.get(lastChar);\n if (supports) {\n // keep existing items that where not computed by the\n // supports/providers that want to trigger now\n const existing = this._completionModel\n ? { items: this._completionModel.adopt(supports), clipboardText: this._completionModel.clipboardText }\n : undefined;\n this.trigger({ auto: true, shy: false, noSelect: false, triggerCharacter: lastChar }, Boolean(this._completionModel), supports, existing);\n }\n };\n this._triggerCharacterListener.add(this._editor.onDidType(checkTriggerCharacter));\n this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(() => checkTriggerCharacter()));\n }\n // --- trigger/retrigger/cancel suggest\n get state() {\n return this._state;\n }\n cancel(retrigger = false) {\n var _a;\n if (this._state !== 0 /* State.Idle */) {\n this._triggerQuickSuggest.cancel();\n (_a = this._requestToken) === null || _a === void 0 ? void 0 : _a.cancel();\n this._requestToken = undefined;\n this._state = 0 /* State.Idle */;\n this._completionModel = undefined;\n this._context = undefined;\n this._onDidCancel.fire({ retrigger });\n }\n }\n clear() {\n this._completionDisposables.clear();\n }\n _updateActiveSuggestSession() {\n if (this._state !== 0 /* State.Idle */) {\n if (!this._editor.hasModel() || !this._languageFeaturesService.completionProvider.has(this._editor.getModel())) {\n this.cancel();\n }\n else {\n this.trigger({ auto: this._state === 2 /* State.Auto */, shy: false, noSelect: false }, true);\n }\n }\n }\n _onCursorChange(e) {\n if (!this._editor.hasModel()) {\n return;\n }\n const prevSelection = this._currentSelection;\n this._currentSelection = this._editor.getSelection();\n if (!e.selection.isEmpty()\n || (e.reason !== 0 /* CursorChangeReason.NotSet */ && e.reason !== 3 /* CursorChangeReason.Explicit */)\n || (e.source !== 'keyboard' && e.source !== 'deleteLeft')) {\n // Early exit if nothing needs to be done!\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n this.cancel();\n return;\n }\n if (this._state === 0 /* State.Idle */ && e.reason === 0 /* CursorChangeReason.NotSet */) {\n if (prevSelection.containsRange(this._currentSelection) || prevSelection.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition())) {\n // cursor did move RIGHT due to typing -> trigger quick suggest\n this._doTriggerQuickSuggest();\n }\n }\n else if (this._state !== 0 /* State.Idle */ && e.reason === 3 /* CursorChangeReason.Explicit */) {\n // suggest is active and something like cursor keys are used to move\n // the cursor. this means we can refilter at the new position\n this._refilterCompletionItems();\n }\n }\n _onCompositionEnd() {\n // trigger or refilter when composition ends\n if (this._state === 0 /* State.Idle */) {\n this._doTriggerQuickSuggest();\n }\n else {\n this._refilterCompletionItems();\n }\n }\n _doTriggerQuickSuggest() {\n var _a;\n if (QuickSuggestionsOptions.isAllOff(this._editor.getOption(81 /* EditorOption.quickSuggestions */))) {\n // not enabled\n return;\n }\n if (this._editor.getOption(108 /* EditorOption.suggest */).snippetsPreventQuickSuggestions && ((_a = SnippetController2.get(this._editor)) === null || _a === void 0 ? void 0 : _a.isInSnippet())) {\n // no quick suggestion when in snippet mode\n return;\n }\n this.cancel();\n this._triggerQuickSuggest.cancelAndSet(() => {\n if (this._state !== 0 /* State.Idle */) {\n return;\n }\n if (!LineContext.shouldAutoTrigger(this._editor)) {\n return;\n }\n if (!this._editor.hasModel() || !this._editor.hasWidgetFocus()) {\n return;\n }\n const model = this._editor.getModel();\n const pos = this._editor.getPosition();\n // validate enabled now\n const config = this._editor.getOption(81 /* EditorOption.quickSuggestions */);\n if (QuickSuggestionsOptions.isAllOff(config)) {\n return;\n }\n if (!QuickSuggestionsOptions.isAllOn(config)) {\n // Check the type of the token that triggered this\n model.tokenization.tokenizeIfCheap(pos.lineNumber);\n const lineTokens = model.tokenization.getLineTokens(pos.lineNumber);\n const tokenType = lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(pos.column - 1 - 1, 0)));\n if (QuickSuggestionsOptions.valueFor(config, tokenType) !== 'on') {\n return;\n }\n }\n if (!canShowQuickSuggest(this._editor, this._contextKeyService, this._configurationService)) {\n // do not trigger quick suggestions if inline suggestions are shown\n return;\n }\n if (!this._languageFeaturesService.completionProvider.has(model)) {\n return;\n }\n // we made it till here -> trigger now\n this.trigger({ auto: true, shy: false, noSelect: false });\n }, this._editor.getOption(82 /* EditorOption.quickSuggestionsDelay */));\n }\n _refilterCompletionItems() {\n // Re-filter suggestions. This MUST run async because filtering/scoring\n // uses the model content AND the cursor position. The latter is NOT\n // updated when the document has changed (the event which drives this method)\n // and therefore a little pause (next mirco task) is needed. See:\n // https://stackoverflow.com/questions/25915634/difference-between-microtask-and-macrotask-within-an-event-loop-context#25933985\n Promise.resolve().then(() => {\n if (this._state === 0 /* State.Idle */) {\n return;\n }\n if (!this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n const position = this._editor.getPosition();\n const ctx = new LineContext(model, position, this._state === 2 /* State.Auto */, false, false);\n this._onNewContext(ctx);\n });\n }\n trigger(context, retrigger = false, onlyFrom, existing, noFilter) {\n var _a;\n if (!this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n const auto = context.auto;\n const ctx = new LineContext(model, this._editor.getPosition(), auto, context.shy, context.noSelect);\n // Cancel previous requests, change state & update UI\n this.cancel(retrigger);\n this._state = auto ? 2 /* State.Auto */ : 1 /* State.Manual */;\n this._onDidTrigger.fire({ auto, shy: context.shy, position: this._editor.getPosition() });\n // Capture context when request was sent\n this._context = ctx;\n // Build context for request\n let suggestCtx = { triggerKind: (_a = context.triggerKind) !== null && _a !== void 0 ? _a : 0 /* CompletionTriggerKind.Invoke */ };\n if (context.triggerCharacter) {\n suggestCtx = {\n triggerKind: 1 /* CompletionTriggerKind.TriggerCharacter */,\n triggerCharacter: context.triggerCharacter\n };\n }\n this._requestToken = new CancellationTokenSource();\n // kind filter and snippet sort rules\n const snippetSuggestions = this._editor.getOption(103 /* EditorOption.snippetSuggestions */);\n let snippetSortOrder = 1 /* SnippetSortOrder.Inline */;\n switch (snippetSuggestions) {\n case 'top':\n snippetSortOrder = 0 /* SnippetSortOrder.Top */;\n break;\n // \t↓ that's the default anyways...\n // case 'inline':\n // \tsnippetSortOrder = SnippetSortOrder.Inline;\n // \tbreak;\n case 'bottom':\n snippetSortOrder = 2 /* SnippetSortOrder.Bottom */;\n break;\n }\n const { itemKind: itemKindFilter, showDeprecated } = SuggestModel._createSuggestFilter(this._editor);\n const completionOptions = new CompletionOptions(snippetSortOrder, !noFilter ? itemKindFilter : new Set(), onlyFrom, showDeprecated);\n const wordDistance = WordDistance.create(this._editorWorkerService, this._editor);\n const completions = provideSuggestionItems(this._languageFeaturesService.completionProvider, model, this._editor.getPosition(), completionOptions, suggestCtx, this._requestToken.token);\n Promise.all([completions, wordDistance]).then(([completions, wordDistance]) => __awaiter(this, void 0, void 0, function* () {\n var _b;\n (_b = this._requestToken) === null || _b === void 0 ? void 0 : _b.dispose();\n if (!this._editor.hasModel()) {\n return;\n }\n let clipboardText = existing === null || existing === void 0 ? void 0 : existing.clipboardText;\n if (!clipboardText && completions.needsClipboard) {\n clipboardText = yield this._clipboardService.readText();\n }\n if (this._state === 0 /* State.Idle */) {\n return;\n }\n const model = this._editor.getModel();\n let items = completions.items;\n if (existing) {\n const cmpFn = getSuggestionComparator(snippetSortOrder);\n items = items.concat(existing.items).sort(cmpFn);\n }\n const ctx = new LineContext(model, this._editor.getPosition(), auto, context.shy, context.noSelect);\n this._completionModel = new CompletionModel(items, this._context.column, {\n leadingLineContent: ctx.leadingLineContent,\n characterCountDelta: ctx.column - this._context.column\n }, wordDistance, this._editor.getOption(108 /* EditorOption.suggest */), this._editor.getOption(103 /* EditorOption.snippetSuggestions */), undefined, clipboardText);\n // store containers so that they can be disposed later\n this._completionDisposables.add(completions.disposable);\n this._onNewContext(ctx);\n // finally report telemetry about durations\n this._reportDurationsTelemetry(completions.durations);\n })).catch(onUnexpectedError);\n }\n _reportDurationsTelemetry(durations) {\n if (this._telemetryGate++ % 230 !== 0) {\n return;\n }\n setTimeout(() => {\n this._telemetryService.publicLog2('suggest.durations.json', { data: JSON.stringify(durations) });\n this._logService.debug('suggest.durations.json', durations);\n });\n }\n static _createSuggestFilter(editor) {\n // kind filter and snippet sort rules\n const result = new Set();\n // snippet setting\n const snippetSuggestions = editor.getOption(103 /* EditorOption.snippetSuggestions */);\n if (snippetSuggestions === 'none') {\n result.add(27 /* CompletionItemKind.Snippet */);\n }\n // type setting\n const suggestOptions = editor.getOption(108 /* EditorOption.suggest */);\n if (!suggestOptions.showMethods) {\n result.add(0 /* CompletionItemKind.Method */);\n }\n if (!suggestOptions.showFunctions) {\n result.add(1 /* CompletionItemKind.Function */);\n }\n if (!suggestOptions.showConstructors) {\n result.add(2 /* CompletionItemKind.Constructor */);\n }\n if (!suggestOptions.showFields) {\n result.add(3 /* CompletionItemKind.Field */);\n }\n if (!suggestOptions.showVariables) {\n result.add(4 /* CompletionItemKind.Variable */);\n }\n if (!suggestOptions.showClasses) {\n result.add(5 /* CompletionItemKind.Class */);\n }\n if (!suggestOptions.showStructs) {\n result.add(6 /* CompletionItemKind.Struct */);\n }\n if (!suggestOptions.showInterfaces) {\n result.add(7 /* CompletionItemKind.Interface */);\n }\n if (!suggestOptions.showModules) {\n result.add(8 /* CompletionItemKind.Module */);\n }\n if (!suggestOptions.showProperties) {\n result.add(9 /* CompletionItemKind.Property */);\n }\n if (!suggestOptions.showEvents) {\n result.add(10 /* CompletionItemKind.Event */);\n }\n if (!suggestOptions.showOperators) {\n result.add(11 /* CompletionItemKind.Operator */);\n }\n if (!suggestOptions.showUnits) {\n result.add(12 /* CompletionItemKind.Unit */);\n }\n if (!suggestOptions.showValues) {\n result.add(13 /* CompletionItemKind.Value */);\n }\n if (!suggestOptions.showConstants) {\n result.add(14 /* CompletionItemKind.Constant */);\n }\n if (!suggestOptions.showEnums) {\n result.add(15 /* CompletionItemKind.Enum */);\n }\n if (!suggestOptions.showEnumMembers) {\n result.add(16 /* CompletionItemKind.EnumMember */);\n }\n if (!suggestOptions.showKeywords) {\n result.add(17 /* CompletionItemKind.Keyword */);\n }\n if (!suggestOptions.showWords) {\n result.add(18 /* CompletionItemKind.Text */);\n }\n if (!suggestOptions.showColors) {\n result.add(19 /* CompletionItemKind.Color */);\n }\n if (!suggestOptions.showFiles) {\n result.add(20 /* CompletionItemKind.File */);\n }\n if (!suggestOptions.showReferences) {\n result.add(21 /* CompletionItemKind.Reference */);\n }\n if (!suggestOptions.showColors) {\n result.add(22 /* CompletionItemKind.Customcolor */);\n }\n if (!suggestOptions.showFolders) {\n result.add(23 /* CompletionItemKind.Folder */);\n }\n if (!suggestOptions.showTypeParameters) {\n result.add(24 /* CompletionItemKind.TypeParameter */);\n }\n if (!suggestOptions.showSnippets) {\n result.add(27 /* CompletionItemKind.Snippet */);\n }\n if (!suggestOptions.showUsers) {\n result.add(25 /* CompletionItemKind.User */);\n }\n if (!suggestOptions.showIssues) {\n result.add(26 /* CompletionItemKind.Issue */);\n }\n return { itemKind: result, showDeprecated: suggestOptions.showDeprecated };\n }\n _onNewContext(ctx) {\n if (!this._context) {\n // happens when 24x7 IntelliSense is enabled and still in its delay\n return;\n }\n if (ctx.lineNumber !== this._context.lineNumber) {\n // e.g. happens when pressing Enter while IntelliSense is computed\n this.cancel();\n return;\n }\n if (getLeadingWhitespace(ctx.leadingLineContent) !== getLeadingWhitespace(this._context.leadingLineContent)) {\n // cancel IntelliSense when line start changes\n // happens when the current word gets outdented\n this.cancel();\n return;\n }\n if (ctx.column < this._context.column) {\n // typed -> moved cursor LEFT -> retrigger if still on a word\n if (ctx.leadingWord.word) {\n this.trigger({ auto: this._context.auto, shy: false, noSelect: false }, true);\n }\n else {\n this.cancel();\n }\n return;\n }\n if (!this._completionModel) {\n // happens when IntelliSense is not yet computed\n return;\n }\n if (ctx.leadingWord.word.length !== 0 && ctx.leadingWord.startColumn > this._context.leadingWord.startColumn) {\n // started a new word while IntelliSense shows -> retrigger\n // Select those providers have not contributed to this completion model and re-trigger completions for\n // them. Also adopt the existing items and merge them into the new completion model\n const inactiveProvider = new Set(this._languageFeaturesService.completionProvider.all(this._editor.getModel()));\n for (const provider of this._completionModel.allProvider) {\n inactiveProvider.delete(provider);\n }\n const items = this._completionModel.adopt(new Set());\n this.trigger({ auto: this._context.auto, shy: false, noSelect: false }, true, inactiveProvider, { items, clipboardText: this._completionModel.clipboardText });\n return;\n }\n if (ctx.column > this._context.column && this._completionModel.incomplete.size > 0 && ctx.leadingWord.word.length !== 0) {\n // typed -> moved cursor RIGHT & incomple model & still on a word -> retrigger\n const { incomplete } = this._completionModel;\n const items = this._completionModel.adopt(incomplete);\n this.trigger({ auto: this._state === 2 /* State.Auto */, shy: false, noSelect: false, triggerKind: 2 /* CompletionTriggerKind.TriggerForIncompleteCompletions */ }, true, incomplete, { items, clipboardText: this._completionModel.clipboardText });\n }\n else {\n // typed -> moved cursor RIGHT -> update UI\n const oldLineContext = this._completionModel.lineContext;\n let isFrozen = false;\n this._completionModel.lineContext = {\n leadingLineContent: ctx.leadingLineContent,\n characterCountDelta: ctx.column - this._context.column\n };\n if (this._completionModel.items.length === 0) {\n if (LineContext.shouldAutoTrigger(this._editor) && this._context.leadingWord.endColumn < ctx.leadingWord.startColumn) {\n // retrigger when heading into a new word\n this.trigger({ auto: this._context.auto, shy: false, noSelect: false }, true);\n return;\n }\n if (!this._context.auto) {\n // freeze when IntelliSense was manually requested\n this._completionModel.lineContext = oldLineContext;\n isFrozen = this._completionModel.items.length > 0;\n if (isFrozen && ctx.leadingWord.word.length === 0) {\n // there were results before but now there aren't\n // and also we are not on a word anymore -> cancel\n this.cancel();\n return;\n }\n }\n else {\n // nothing left\n this.cancel();\n return;\n }\n }\n this._onDidSuggest.fire({\n completionModel: this._completionModel,\n auto: this._context.auto,\n shy: this._context.shy,\n noSelect: this._context.noSelect,\n isFrozen,\n });\n }\n }\n};\nSuggestModel = __decorate([\n __param(1, IEditorWorkerService),\n __param(2, IClipboardService),\n __param(3, ITelemetryService),\n __param(4, ILogService),\n __param(5, IContextKeyService),\n __param(6, IConfigurationService),\n __param(7, ILanguageFeaturesService)\n], SuggestModel);\nexport { SuggestModel };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nexport class OvertypingCapturer {\n constructor(editor, suggestModel) {\n this._disposables = new DisposableStore();\n this._lastOvertyped = [];\n this._empty = true;\n this._disposables.add(editor.onWillType(() => {\n if (!this._empty) {\n return;\n }\n if (!editor.hasModel()) {\n return;\n }\n const selections = editor.getSelections();\n const selectionsLength = selections.length;\n // Check if it will overtype any selections\n let willOvertype = false;\n for (let i = 0; i < selectionsLength; i++) {\n if (!selections[i].isEmpty()) {\n willOvertype = true;\n break;\n }\n }\n if (!willOvertype) {\n return;\n }\n this._lastOvertyped = [];\n const model = editor.getModel();\n for (let i = 0; i < selectionsLength; i++) {\n const selection = selections[i];\n // Check for overtyping capturer restrictions\n if (model.getValueLengthInRange(selection) > OvertypingCapturer._maxSelectionLength) {\n return;\n }\n this._lastOvertyped[i] = { value: model.getValueInRange(selection), multiline: selection.startLineNumber !== selection.endLineNumber };\n }\n this._empty = false;\n }));\n this._disposables.add(suggestModel.onDidCancel(e => {\n if (!this._empty && !e.retrigger) {\n this._empty = true;\n }\n }));\n }\n getLastOvertypedInfo(idx) {\n if (!this._empty && idx >= 0 && idx < this._lastOvertyped.length) {\n return this._lastOvertyped[idx];\n }\n return undefined;\n }\n dispose() {\n this._disposables.dispose();\n }\n}\nOvertypingCapturer._maxSelectionLength = 51200;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { suggestWidgetStatusbarMenu } from './suggest.js';\nimport { localize } from '../../../../nls.js';\nimport { MenuEntryActionViewItem } from '../../../../platform/actions/browser/menuEntryActionViewItem.js';\nimport { IMenuService, MenuItemAction } from '../../../../platform/actions/common/actions.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nclass StatusBarViewItem extends MenuEntryActionViewItem {\n updateLabel() {\n const kb = this._keybindingService.lookupKeybinding(this._action.id, this._contextKeyService);\n if (!kb) {\n return super.updateLabel();\n }\n if (this.label) {\n this.label.textContent = localize('ddd', '{0} ({1})', this._action.label, StatusBarViewItem.symbolPrintEnter(kb));\n }\n }\n static symbolPrintEnter(kb) {\n var _a;\n return (_a = kb.getLabel()) === null || _a === void 0 ? void 0 : _a.replace(/\\benter\\b/gi, '\\u23CE');\n }\n}\nlet SuggestWidgetStatus = class SuggestWidgetStatus {\n constructor(container, instantiationService, _menuService, _contextKeyService) {\n this._menuService = _menuService;\n this._contextKeyService = _contextKeyService;\n this._menuDisposables = new DisposableStore();\n this.element = dom.append(container, dom.$('.suggest-status-bar'));\n const actionViewItemProvider = (action => {\n return action instanceof MenuItemAction ? instantiationService.createInstance(StatusBarViewItem, action, undefined) : undefined;\n });\n this._leftActions = new ActionBar(this.element, { actionViewItemProvider });\n this._rightActions = new ActionBar(this.element, { actionViewItemProvider });\n this._leftActions.domNode.classList.add('left');\n this._rightActions.domNode.classList.add('right');\n }\n dispose() {\n this._menuDisposables.dispose();\n this.element.remove();\n }\n show() {\n const menu = this._menuService.createMenu(suggestWidgetStatusbarMenu, this._contextKeyService);\n const renderMenu = () => {\n const left = [];\n const right = [];\n for (const [group, actions] of menu.getActions()) {\n if (group === 'left') {\n left.push(...actions);\n }\n else {\n right.push(...actions);\n }\n }\n this._leftActions.clear();\n this._leftActions.push(left);\n this._rightActions.clear();\n this._rightActions.push(right);\n };\n this._menuDisposables.add(menu.onDidChange(() => renderMenu()));\n this._menuDisposables.add(menu);\n }\n hide() {\n this._menuDisposables.clear();\n }\n};\nSuggestWidgetStatus = __decorate([\n __param(1, IInstantiationService),\n __param(2, IMenuService),\n __param(3, IContextKeyService)\n], SuggestWidgetStatus);\nexport { SuggestWidgetStatus };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Dimension } from '../../dom.js';\nimport { OrthogonalEdge, Sash } from '../sash/sash.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { DisposableStore } from '../../../common/lifecycle.js';\nexport class ResizableHTMLElement {\n constructor() {\n this._onDidWillResize = new Emitter();\n this.onDidWillResize = this._onDidWillResize.event;\n this._onDidResize = new Emitter();\n this.onDidResize = this._onDidResize.event;\n this._sashListener = new DisposableStore();\n this._size = new Dimension(0, 0);\n this._minSize = new Dimension(0, 0);\n this._maxSize = new Dimension(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n this.domNode = document.createElement('div');\n this._eastSash = new Sash(this.domNode, { getVerticalSashLeft: () => this._size.width }, { orientation: 0 /* Orientation.VERTICAL */ });\n this._westSash = new Sash(this.domNode, { getVerticalSashLeft: () => 0 }, { orientation: 0 /* Orientation.VERTICAL */ });\n this._northSash = new Sash(this.domNode, { getHorizontalSashTop: () => 0 }, { orientation: 1 /* Orientation.HORIZONTAL */, orthogonalEdge: OrthogonalEdge.North });\n this._southSash = new Sash(this.domNode, { getHorizontalSashTop: () => this._size.height }, { orientation: 1 /* Orientation.HORIZONTAL */, orthogonalEdge: OrthogonalEdge.South });\n this._northSash.orthogonalStartSash = this._westSash;\n this._northSash.orthogonalEndSash = this._eastSash;\n this._southSash.orthogonalStartSash = this._westSash;\n this._southSash.orthogonalEndSash = this._eastSash;\n let currentSize;\n let deltaY = 0;\n let deltaX = 0;\n this._sashListener.add(Event.any(this._northSash.onDidStart, this._eastSash.onDidStart, this._southSash.onDidStart, this._westSash.onDidStart)(() => {\n if (currentSize === undefined) {\n this._onDidWillResize.fire();\n currentSize = this._size;\n deltaY = 0;\n deltaX = 0;\n }\n }));\n this._sashListener.add(Event.any(this._northSash.onDidEnd, this._eastSash.onDidEnd, this._southSash.onDidEnd, this._westSash.onDidEnd)(() => {\n if (currentSize !== undefined) {\n currentSize = undefined;\n deltaY = 0;\n deltaX = 0;\n this._onDidResize.fire({ dimension: this._size, done: true });\n }\n }));\n this._sashListener.add(this._eastSash.onDidChange(e => {\n if (currentSize) {\n deltaX = e.currentX - e.startX;\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, east: true });\n }\n }));\n this._sashListener.add(this._westSash.onDidChange(e => {\n if (currentSize) {\n deltaX = -(e.currentX - e.startX);\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, west: true });\n }\n }));\n this._sashListener.add(this._northSash.onDidChange(e => {\n if (currentSize) {\n deltaY = -(e.currentY - e.startY);\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, north: true });\n }\n }));\n this._sashListener.add(this._southSash.onDidChange(e => {\n if (currentSize) {\n deltaY = e.currentY - e.startY;\n this.layout(currentSize.height + deltaY, currentSize.width + deltaX);\n this._onDidResize.fire({ dimension: this._size, done: false, south: true });\n }\n }));\n this._sashListener.add(Event.any(this._eastSash.onDidReset, this._westSash.onDidReset)(e => {\n if (this._preferredSize) {\n this.layout(this._size.height, this._preferredSize.width);\n this._onDidResize.fire({ dimension: this._size, done: true });\n }\n }));\n this._sashListener.add(Event.any(this._northSash.onDidReset, this._southSash.onDidReset)(e => {\n if (this._preferredSize) {\n this.layout(this._preferredSize.height, this._size.width);\n this._onDidResize.fire({ dimension: this._size, done: true });\n }\n }));\n }\n dispose() {\n this._northSash.dispose();\n this._southSash.dispose();\n this._eastSash.dispose();\n this._westSash.dispose();\n this._sashListener.dispose();\n this._onDidResize.dispose();\n this._onDidWillResize.dispose();\n this.domNode.remove();\n }\n enableSashes(north, east, south, west) {\n this._northSash.state = north ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n this._eastSash.state = east ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n this._southSash.state = south ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n this._westSash.state = west ? 3 /* SashState.Enabled */ : 0 /* SashState.Disabled */;\n }\n layout(height = this.size.height, width = this.size.width) {\n const { height: minHeight, width: minWidth } = this._minSize;\n const { height: maxHeight, width: maxWidth } = this._maxSize;\n height = Math.max(minHeight, Math.min(maxHeight, height));\n width = Math.max(minWidth, Math.min(maxWidth, width));\n const newSize = new Dimension(width, height);\n if (!Dimension.equals(newSize, this._size)) {\n this.domNode.style.height = height + 'px';\n this.domNode.style.width = width + 'px';\n this._size = newSize;\n this._northSash.layout();\n this._eastSash.layout();\n this._southSash.layout();\n this._westSash.layout();\n }\n }\n clearSashHoverState() {\n this._eastSash.clearSashHoverState();\n this._westSash.clearSashHoverState();\n this._northSash.clearSashHoverState();\n this._southSash.clearSashHoverState();\n }\n get size() {\n return this._size;\n }\n set maxSize(value) {\n this._maxSize = value;\n }\n get maxSize() {\n return this._maxSize;\n }\n set minSize(value) {\n this._minSize = value;\n }\n get minSize() {\n return this._minSize;\n }\n set preferredSize(value) {\n this._preferredSize = value;\n }\n get preferredSize() {\n return this._preferredSize;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport { DomScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../markdownRenderer/browser/markdownRenderer.js';\nimport { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport * as nls from '../../../../nls.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nexport function canExpandCompletionItem(item) {\n return !!item && Boolean(item.completion.documentation || item.completion.detail && item.completion.detail !== item.completion.label);\n}\nlet SuggestDetailsWidget = class SuggestDetailsWidget {\n constructor(_editor, instaService) {\n this._editor = _editor;\n this._onDidClose = new Emitter();\n this.onDidClose = this._onDidClose.event;\n this._onDidChangeContents = new Emitter();\n this.onDidChangeContents = this._onDidChangeContents.event;\n this._disposables = new DisposableStore();\n this._renderDisposeable = new DisposableStore();\n this._borderWidth = 1;\n this._size = new dom.Dimension(330, 0);\n this.domNode = dom.$('.suggest-details');\n this.domNode.classList.add('no-docs');\n this._markdownRenderer = instaService.createInstance(MarkdownRenderer, { editor: _editor });\n this._body = dom.$('.body');\n this._scrollbar = new DomScrollableElement(this._body, {\n alwaysConsumeMouseWheel: true,\n });\n dom.append(this.domNode, this._scrollbar.getDomNode());\n this._disposables.add(this._scrollbar);\n this._header = dom.append(this._body, dom.$('.header'));\n this._close = dom.append(this._header, dom.$('span' + Codicon.close.cssSelector));\n this._close.title = nls.localize('details.close', \"Close\");\n this._type = dom.append(this._header, dom.$('p.type'));\n this._docs = dom.append(this._body, dom.$('p.docs'));\n this._configureFont();\n this._disposables.add(this._editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(46 /* EditorOption.fontInfo */)) {\n this._configureFont();\n }\n }));\n }\n dispose() {\n this._disposables.dispose();\n this._renderDisposeable.dispose();\n }\n _configureFont() {\n const options = this._editor.getOptions();\n const fontInfo = options.get(46 /* EditorOption.fontInfo */);\n const fontFamily = fontInfo.getMassagedFontFamily();\n const fontSize = options.get(109 /* EditorOption.suggestFontSize */) || fontInfo.fontSize;\n const lineHeight = options.get(110 /* EditorOption.suggestLineHeight */) || fontInfo.lineHeight;\n const fontWeight = fontInfo.fontWeight;\n const fontSizePx = `${fontSize}px`;\n const lineHeightPx = `${lineHeight}px`;\n this.domNode.style.fontSize = fontSizePx;\n this.domNode.style.lineHeight = `${lineHeight / fontSize}`;\n this.domNode.style.fontWeight = fontWeight;\n this.domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\n this._type.style.fontFamily = fontFamily;\n this._close.style.height = lineHeightPx;\n this._close.style.width = lineHeightPx;\n }\n getLayoutInfo() {\n const lineHeight = this._editor.getOption(110 /* EditorOption.suggestLineHeight */) || this._editor.getOption(46 /* EditorOption.fontInfo */).lineHeight;\n const borderWidth = this._borderWidth;\n const borderHeight = borderWidth * 2;\n return {\n lineHeight,\n borderWidth,\n borderHeight,\n verticalPadding: 22,\n horizontalPadding: 14\n };\n }\n renderLoading() {\n this._type.textContent = nls.localize('loading', \"Loading...\");\n this._docs.textContent = '';\n this.domNode.classList.remove('no-docs', 'no-type');\n this.layout(this.size.width, this.getLayoutInfo().lineHeight * 2);\n this._onDidChangeContents.fire(this);\n }\n renderItem(item, explainMode) {\n var _a, _b;\n this._renderDisposeable.clear();\n let { detail, documentation } = item.completion;\n if (explainMode) {\n let md = '';\n md += `score: ${item.score[0]}\\n`;\n md += `prefix: ${(_a = item.word) !== null && _a !== void 0 ? _a : '(no prefix)'}\\n`;\n md += `word: ${item.completion.filterText ? item.completion.filterText + ' (filterText)' : item.textLabel}\\n`;\n md += `distance: ${item.distance} (localityBonus-setting)\\n`;\n md += `index: ${item.idx}, based on ${item.completion.sortText && `sortText: \"${item.completion.sortText}\"` || 'label'}\\n`;\n md += `commit_chars: ${(_b = item.completion.commitCharacters) === null || _b === void 0 ? void 0 : _b.join('')}\\n`;\n documentation = new MarkdownString().appendCodeblock('empty', md);\n detail = `Provider: ${item.provider._debugDisplayName}`;\n }\n if (!explainMode && !canExpandCompletionItem(item)) {\n this.clearContents();\n return;\n }\n this.domNode.classList.remove('no-docs', 'no-type');\n // --- details\n if (detail) {\n const cappedDetail = detail.length > 100000 ? `${detail.substr(0, 100000)}…` : detail;\n this._type.textContent = cappedDetail;\n this._type.title = cappedDetail;\n dom.show(this._type);\n this._type.classList.toggle('auto-wrap', !/\\r?\\n^\\s+/gmi.test(cappedDetail));\n }\n else {\n dom.clearNode(this._type);\n this._type.title = '';\n dom.hide(this._type);\n this.domNode.classList.add('no-type');\n }\n // --- documentation\n dom.clearNode(this._docs);\n if (typeof documentation === 'string') {\n this._docs.classList.remove('markdown-docs');\n this._docs.textContent = documentation;\n }\n else if (documentation) {\n this._docs.classList.add('markdown-docs');\n dom.clearNode(this._docs);\n const renderedContents = this._markdownRenderer.render(documentation);\n this._docs.appendChild(renderedContents.element);\n this._renderDisposeable.add(renderedContents);\n this._renderDisposeable.add(this._markdownRenderer.onDidRenderAsync(() => {\n this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n this._onDidChangeContents.fire(this);\n }));\n }\n this.domNode.style.userSelect = 'text';\n this.domNode.tabIndex = -1;\n this._close.onmousedown = e => {\n e.preventDefault();\n e.stopPropagation();\n };\n this._close.onclick = e => {\n e.preventDefault();\n e.stopPropagation();\n this._onDidClose.fire();\n };\n this._body.scrollTop = 0;\n this.layout(this._size.width, this._type.clientHeight + this._docs.clientHeight);\n this._onDidChangeContents.fire(this);\n }\n clearContents() {\n this.domNode.classList.add('no-docs');\n this._type.textContent = '';\n this._docs.textContent = '';\n }\n get size() {\n return this._size;\n }\n layout(width, height) {\n const newSize = new dom.Dimension(width, height);\n if (!dom.Dimension.equals(newSize, this._size)) {\n this._size = newSize;\n dom.size(this.domNode, width, height);\n }\n this._scrollbar.scanDomNode();\n }\n scrollDown(much = 8) {\n this._body.scrollTop += much;\n }\n scrollUp(much = 8) {\n this._body.scrollTop -= much;\n }\n scrollTop() {\n this._body.scrollTop = 0;\n }\n scrollBottom() {\n this._body.scrollTop = this._body.scrollHeight;\n }\n pageDown() {\n this.scrollDown(80);\n }\n pageUp() {\n this.scrollUp(80);\n }\n set borderWidth(width) {\n this._borderWidth = width;\n }\n get borderWidth() {\n return this._borderWidth;\n }\n};\nSuggestDetailsWidget = __decorate([\n __param(1, IInstantiationService)\n], SuggestDetailsWidget);\nexport { SuggestDetailsWidget };\nexport class SuggestDetailsOverlay {\n constructor(widget, _editor) {\n this.widget = widget;\n this._editor = _editor;\n this._disposables = new DisposableStore();\n this._added = false;\n this._preferAlignAtTop = true;\n this._resizable = new ResizableHTMLElement();\n this._resizable.domNode.classList.add('suggest-details-container');\n this._resizable.domNode.appendChild(widget.domNode);\n this._resizable.enableSashes(false, true, true, false);\n let topLeftNow;\n let sizeNow;\n let deltaTop = 0;\n let deltaLeft = 0;\n this._disposables.add(this._resizable.onDidWillResize(() => {\n topLeftNow = this._topLeft;\n sizeNow = this._resizable.size;\n }));\n this._disposables.add(this._resizable.onDidResize(e => {\n if (topLeftNow && sizeNow) {\n this.widget.layout(e.dimension.width, e.dimension.height);\n let updateTopLeft = false;\n if (e.west) {\n deltaLeft = sizeNow.width - e.dimension.width;\n updateTopLeft = true;\n }\n if (e.north) {\n deltaTop = sizeNow.height - e.dimension.height;\n updateTopLeft = true;\n }\n if (updateTopLeft) {\n this._applyTopLeft({\n top: topLeftNow.top + deltaTop,\n left: topLeftNow.left + deltaLeft,\n });\n }\n }\n if (e.done) {\n topLeftNow = undefined;\n sizeNow = undefined;\n deltaTop = 0;\n deltaLeft = 0;\n this._userSize = e.dimension;\n }\n }));\n this._disposables.add(this.widget.onDidChangeContents(() => {\n var _a;\n if (this._anchorBox) {\n this._placeAtAnchor(this._anchorBox, (_a = this._userSize) !== null && _a !== void 0 ? _a : this.widget.size, this._preferAlignAtTop);\n }\n }));\n }\n dispose() {\n this._resizable.dispose();\n this._disposables.dispose();\n this.hide();\n }\n getId() {\n return 'suggest.details';\n }\n getDomNode() {\n return this._resizable.domNode;\n }\n getPosition() {\n return null;\n }\n show() {\n if (!this._added) {\n this._editor.addOverlayWidget(this);\n this.getDomNode().style.position = 'fixed';\n this._added = true;\n }\n }\n hide(sessionEnded = false) {\n this._resizable.clearSashHoverState();\n if (this._added) {\n this._editor.removeOverlayWidget(this);\n this._added = false;\n this._anchorBox = undefined;\n this._topLeft = undefined;\n }\n if (sessionEnded) {\n this._userSize = undefined;\n this.widget.clearContents();\n }\n }\n placeAtAnchor(anchor, preferAlignAtTop) {\n var _a;\n const anchorBox = anchor.getBoundingClientRect();\n this._anchorBox = anchorBox;\n this._preferAlignAtTop = preferAlignAtTop;\n this._placeAtAnchor(this._anchorBox, (_a = this._userSize) !== null && _a !== void 0 ? _a : this.widget.size, preferAlignAtTop);\n }\n _placeAtAnchor(anchorBox, size, preferAlignAtTop) {\n var _a;\n const bodyBox = dom.getClientArea(document.body);\n const info = this.widget.getLayoutInfo();\n const defaultMinSize = new dom.Dimension(220, 2 * info.lineHeight);\n const defaultTop = anchorBox.top;\n // EAST\n const eastPlacement = (function () {\n const width = bodyBox.width - (anchorBox.left + anchorBox.width + info.borderWidth + info.horizontalPadding);\n const left = -info.borderWidth + anchorBox.left + anchorBox.width;\n const maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n const maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n return { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n })();\n // WEST\n const westPlacement = (function () {\n const width = anchorBox.left - info.borderWidth - info.horizontalPadding;\n const left = Math.max(info.horizontalPadding, anchorBox.left - size.width - info.borderWidth);\n const maxSizeTop = new dom.Dimension(width, bodyBox.height - anchorBox.top - info.borderHeight - info.verticalPadding);\n const maxSizeBottom = maxSizeTop.with(undefined, anchorBox.top + anchorBox.height - info.borderHeight - info.verticalPadding);\n return { top: defaultTop, left, fit: width - size.width, maxSizeTop, maxSizeBottom, minSize: defaultMinSize.with(Math.min(width, defaultMinSize.width)) };\n })();\n // SOUTH\n const southPacement = (function () {\n const left = anchorBox.left;\n const top = -info.borderWidth + anchorBox.top + anchorBox.height;\n const maxSizeBottom = new dom.Dimension(anchorBox.width - info.borderHeight, bodyBox.height - anchorBox.top - anchorBox.height - info.verticalPadding);\n return { top, left, fit: maxSizeBottom.height - size.height, maxSizeBottom, maxSizeTop: maxSizeBottom, minSize: defaultMinSize.with(maxSizeBottom.width) };\n })();\n // take first placement that fits or the first with \"least bad\" fit\n const placements = [eastPlacement, westPlacement, southPacement];\n const placement = (_a = placements.find(p => p.fit >= 0)) !== null && _a !== void 0 ? _a : placements.sort((a, b) => b.fit - a.fit)[0];\n // top/bottom placement\n const bottom = anchorBox.top + anchorBox.height - info.borderHeight;\n let alignAtTop;\n let height = size.height;\n const maxHeight = Math.max(placement.maxSizeTop.height, placement.maxSizeBottom.height);\n if (height > maxHeight) {\n height = maxHeight;\n }\n let maxSize;\n if (preferAlignAtTop) {\n if (height <= placement.maxSizeTop.height) {\n alignAtTop = true;\n maxSize = placement.maxSizeTop;\n }\n else {\n alignAtTop = false;\n maxSize = placement.maxSizeBottom;\n }\n }\n else {\n if (height <= placement.maxSizeBottom.height) {\n alignAtTop = false;\n maxSize = placement.maxSizeBottom;\n }\n else {\n alignAtTop = true;\n maxSize = placement.maxSizeTop;\n }\n }\n this._applyTopLeft({ left: placement.left, top: alignAtTop ? placement.top : bottom - height });\n this.getDomNode().style.position = 'fixed';\n this._resizable.enableSashes(!alignAtTop, placement === eastPlacement, alignAtTop, placement !== eastPlacement);\n this._resizable.minSize = placement.minSize;\n this._resizable.maxSize = maxSize;\n this._resizable.layout(height, Math.min(maxSize.width, size.width));\n this.widget.layout(this._resizable.size.width, this._resizable.size.height);\n }\n _applyTopLeft(topLeft) {\n this._topLeft = topLeft;\n this.getDomNode().style.left = `${this._topLeft.left}px`;\n this.getDomNode().style.top = `${this._topLeft.top}px`;\n }\n}\n","//#endregion\n//#region Utilities\nexport var FileKind;\n(function (FileKind) {\n FileKind[FileKind[\"FILE\"] = 0] = \"FILE\";\n FileKind[FileKind[\"FOLDER\"] = 1] = \"FOLDER\";\n FileKind[FileKind[\"ROOT_FOLDER\"] = 2] = \"ROOT_FOLDER\";\n})(FileKind || (FileKind = {}));\n//#endregion\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Schemas } from '../../../base/common/network.js';\nimport { DataUri } from '../../../base/common/resources.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nimport { FileKind } from '../../../platform/files/common/files.js';\nconst fileIconDirectoryRegex = /(?:\\/|^)(?:([^\\/]+)\\/)?([^\\/]+)$/;\nexport function getIconClasses(modelService, languageService, resource, fileKind) {\n // we always set these base classes even if we do not have a path\n const classes = fileKind === FileKind.ROOT_FOLDER ? ['rootfolder-icon'] : fileKind === FileKind.FOLDER ? ['folder-icon'] : ['file-icon'];\n if (resource) {\n // Get the path and name of the resource. For data-URIs, we need to parse specially\n let name;\n if (resource.scheme === Schemas.data) {\n const metadata = DataUri.parseMetaData(resource);\n name = metadata.get(DataUri.META_DATA_LABEL);\n }\n else {\n const match = resource.path.match(fileIconDirectoryRegex);\n if (match) {\n name = cssEscape(match[2].toLowerCase());\n if (match[1]) {\n classes.push(`${cssEscape(match[1].toLowerCase())}-name-dir-icon`); // parent directory\n }\n }\n else {\n name = cssEscape(resource.authority.toLowerCase());\n }\n }\n // Folders\n if (fileKind === FileKind.FOLDER) {\n classes.push(`${name}-name-folder-icon`);\n }\n // Files\n else {\n // Name & Extension(s)\n if (name) {\n classes.push(`${name}-name-file-icon`);\n classes.push(`name-file-icon`); // extra segment to increase file-name score\n // Avoid doing an explosive combination of extensions for very long filenames\n // (most file systems do not allow files > 255 length) with lots of `.` characters\n // https://github.com/microsoft/vscode/issues/116199\n if (name.length <= 255) {\n const dotSegments = name.split('.');\n for (let i = 1; i < dotSegments.length; i++) {\n classes.push(`${dotSegments.slice(i).join('.')}-ext-file-icon`); // add each combination of all found extensions if more than one\n }\n }\n classes.push(`ext-file-icon`); // extra segment to increase file-ext score\n }\n // Detected Mode\n const detectedLanguageId = detectLanguageId(modelService, languageService, resource);\n if (detectedLanguageId) {\n classes.push(`${cssEscape(detectedLanguageId)}-lang-file-icon`);\n }\n }\n }\n return classes;\n}\nfunction detectLanguageId(modelService, languageService, resource) {\n if (!resource) {\n return null; // we need a resource at least\n }\n let languageId = null;\n // Data URI: check for encoded metadata\n if (resource.scheme === Schemas.data) {\n const metadata = DataUri.parseMetaData(resource);\n const mime = metadata.get(DataUri.META_DATA_MIME);\n if (mime) {\n languageId = languageService.getLanguageIdByMimeType(mime);\n }\n }\n // Any other URI: check for model if existing\n else {\n const model = modelService.getModel(resource);\n if (model) {\n languageId = model.getLanguageId();\n }\n }\n // only take if the language id is specific (aka no just plain text)\n if (languageId && languageId !== PLAINTEXT_LANGUAGE_ID) {\n return languageId;\n }\n // otherwise fallback to path based detection\n return languageService.guessLanguageIdByFilepathOrFirstLine(resource);\n}\nexport function cssEscape(str) {\n return str.replace(/[\\11\\12\\14\\15\\40]/g, '/'); // HTML class names can not contain certain whitespace characters, use / instead, which doesn't exist in file names.\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nimport { $, append, hide, show } from '../../../../base/browser/dom.js';\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\nimport { Codicon, CSSIcon } from '../../../../base/common/codicons.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { createMatches } from '../../../../base/common/filters.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { CompletionItemKinds } from '../../../common/languages.js';\nimport { getIconClasses } from '../../../common/services/getIconClasses.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport * as nls from '../../../../nls.js';\nimport { FileKind } from '../../../../platform/files/common/files.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { IThemeService, ThemeIcon } from '../../../../platform/theme/common/themeService.js';\nimport { canExpandCompletionItem } from './suggestWidgetDetails.js';\nexport function getAriaId(index) {\n return `suggest-aria-id:${index}`;\n}\nexport const suggestMoreInfoIcon = registerIcon('suggest-more-info', Codicon.chevronRight, nls.localize('suggestMoreInfoIcon', 'Icon for more information in the suggest widget.'));\nconst _completionItemColor = new (_a = class ColorExtractor {\n extract(item, out) {\n if (item.textLabel.match(ColorExtractor._regexStrict)) {\n out[0] = item.textLabel;\n return true;\n }\n if (item.completion.detail && item.completion.detail.match(ColorExtractor._regexStrict)) {\n out[0] = item.completion.detail;\n return true;\n }\n if (typeof item.completion.documentation === 'string') {\n const match = ColorExtractor._regexRelaxed.exec(item.completion.documentation);\n if (match && (match.index === 0 || match.index + match[0].length === item.completion.documentation.length)) {\n out[0] = match[0];\n return true;\n }\n }\n return false;\n }\n },\n _a._regexRelaxed = /(#([\\da-fA-F]{3}){1,2}|(rgb|hsl)a\\(\\s*(\\d{1,3}%?\\s*,\\s*){3}(1|0?\\.\\d+)\\)|(rgb|hsl)\\(\\s*\\d{1,3}%?(\\s*,\\s*\\d{1,3}%?){2}\\s*\\))/,\n _a._regexStrict = new RegExp(`^${_a._regexRelaxed.source}$`, 'i'),\n _a);\nlet ItemRenderer = class ItemRenderer {\n constructor(_editor, _modelService, _languageService, _themeService) {\n this._editor = _editor;\n this._modelService = _modelService;\n this._languageService = _languageService;\n this._themeService = _themeService;\n this._onDidToggleDetails = new Emitter();\n this.onDidToggleDetails = this._onDidToggleDetails.event;\n this.templateId = 'suggestion';\n }\n dispose() {\n this._onDidToggleDetails.dispose();\n }\n renderTemplate(container) {\n const data = Object.create(null);\n data.disposables = new DisposableStore();\n data.root = container;\n data.root.classList.add('show-file-icons');\n data.icon = append(container, $('.icon'));\n data.colorspan = append(data.icon, $('span.colorspan'));\n const text = append(container, $('.contents'));\n const main = append(text, $('.main'));\n data.iconContainer = append(main, $('.icon-label.codicon'));\n data.left = append(main, $('span.left'));\n data.right = append(main, $('span.right'));\n data.iconLabel = new IconLabel(data.left, { supportHighlights: true, supportIcons: true });\n data.disposables.add(data.iconLabel);\n data.parametersLabel = append(data.left, $('span.signature-label'));\n data.qualifierLabel = append(data.left, $('span.qualifier-label'));\n data.detailsLabel = append(data.right, $('span.details-label'));\n data.readMore = append(data.right, $('span.readMore' + ThemeIcon.asCSSSelector(suggestMoreInfoIcon)));\n data.readMore.title = nls.localize('readMore', \"Read More\");\n const configureFont = () => {\n const options = this._editor.getOptions();\n const fontInfo = options.get(46 /* EditorOption.fontInfo */);\n const fontFamily = fontInfo.getMassagedFontFamily();\n const fontFeatureSettings = fontInfo.fontFeatureSettings;\n const fontSize = options.get(109 /* EditorOption.suggestFontSize */) || fontInfo.fontSize;\n const lineHeight = options.get(110 /* EditorOption.suggestLineHeight */) || fontInfo.lineHeight;\n const fontWeight = fontInfo.fontWeight;\n const letterSpacing = fontInfo.letterSpacing;\n const fontSizePx = `${fontSize}px`;\n const lineHeightPx = `${lineHeight}px`;\n const letterSpacingPx = `${letterSpacing}px`;\n data.root.style.fontSize = fontSizePx;\n data.root.style.fontWeight = fontWeight;\n data.root.style.letterSpacing = letterSpacingPx;\n main.style.fontFamily = fontFamily;\n main.style.fontFeatureSettings = fontFeatureSettings;\n main.style.lineHeight = lineHeightPx;\n data.icon.style.height = lineHeightPx;\n data.icon.style.width = lineHeightPx;\n data.readMore.style.height = lineHeightPx;\n data.readMore.style.width = lineHeightPx;\n };\n configureFont();\n data.disposables.add(this._editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(46 /* EditorOption.fontInfo */) || e.hasChanged(109 /* EditorOption.suggestFontSize */) || e.hasChanged(110 /* EditorOption.suggestLineHeight */)) {\n configureFont();\n }\n }));\n return data;\n }\n renderElement(element, index, data) {\n const { completion } = element;\n data.root.id = getAriaId(index);\n data.colorspan.style.backgroundColor = '';\n const labelOptions = {\n labelEscapeNewLines: true,\n matches: createMatches(element.score)\n };\n const color = [];\n if (completion.kind === 19 /* CompletionItemKind.Color */ && _completionItemColor.extract(element, color)) {\n // special logic for 'color' completion items\n data.icon.className = 'icon customcolor';\n data.iconContainer.className = 'icon hide';\n data.colorspan.style.backgroundColor = color[0];\n }\n else if (completion.kind === 20 /* CompletionItemKind.File */ && this._themeService.getFileIconTheme().hasFileIcons) {\n // special logic for 'file' completion items\n data.icon.className = 'icon hide';\n data.iconContainer.className = 'icon hide';\n const labelClasses = getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: element.textLabel }), FileKind.FILE);\n const detailClasses = getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: completion.detail }), FileKind.FILE);\n labelOptions.extraClasses = labelClasses.length > detailClasses.length ? labelClasses : detailClasses;\n }\n else if (completion.kind === 23 /* CompletionItemKind.Folder */ && this._themeService.getFileIconTheme().hasFolderIcons) {\n // special logic for 'folder' completion items\n data.icon.className = 'icon hide';\n data.iconContainer.className = 'icon hide';\n labelOptions.extraClasses = [\n getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: element.textLabel }), FileKind.FOLDER),\n getIconClasses(this._modelService, this._languageService, URI.from({ scheme: 'fake', path: completion.detail }), FileKind.FOLDER)\n ].flat();\n }\n else {\n // normal icon\n data.icon.className = 'icon hide';\n data.iconContainer.className = '';\n data.iconContainer.classList.add('suggest-icon', ...CSSIcon.asClassNameArray(CompletionItemKinds.toIcon(completion.kind)));\n }\n if (completion.tags && completion.tags.indexOf(1 /* CompletionItemTag.Deprecated */) >= 0) {\n labelOptions.extraClasses = (labelOptions.extraClasses || []).concat(['deprecated']);\n labelOptions.matches = [];\n }\n data.iconLabel.setLabel(element.textLabel, undefined, labelOptions);\n if (typeof completion.label === 'string') {\n data.parametersLabel.textContent = '';\n data.detailsLabel.textContent = stripNewLines(completion.detail || '');\n data.root.classList.add('string-label');\n }\n else {\n data.parametersLabel.textContent = stripNewLines(completion.label.detail || '');\n data.detailsLabel.textContent = stripNewLines(completion.label.description || '');\n data.root.classList.remove('string-label');\n }\n if (this._editor.getOption(108 /* EditorOption.suggest */).showInlineDetails) {\n show(data.detailsLabel);\n }\n else {\n hide(data.detailsLabel);\n }\n if (canExpandCompletionItem(element)) {\n data.right.classList.add('can-expand-details');\n show(data.readMore);\n data.readMore.onmousedown = e => {\n e.stopPropagation();\n e.preventDefault();\n };\n data.readMore.onclick = e => {\n e.stopPropagation();\n e.preventDefault();\n this._onDidToggleDetails.fire();\n };\n }\n else {\n data.right.classList.remove('can-expand-details');\n hide(data.readMore);\n data.readMore.onmousedown = null;\n data.readMore.onclick = null;\n }\n }\n disposeTemplate(templateData) {\n templateData.disposables.dispose();\n }\n};\nItemRenderer = __decorate([\n __param(1, IModelService),\n __param(2, ILanguageService),\n __param(3, IThemeService)\n], ItemRenderer);\nexport { ItemRenderer };\nfunction stripNewLines(str) {\n return str.replace(/\\r\\n|\\r|\\n/g, '');\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../../base/browser/dom.js';\nimport '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\nimport { List } from '../../../../base/browser/ui/list/listWidget.js';\nimport { createCancelablePromise, disposableTimeout, TimeoutTimer } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { clamp } from '../../../../base/common/numbers.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport './media/suggest.css';\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/embeddedCodeEditorWidget.js';\nimport { SuggestWidgetStatus } from './suggestWidgetStatus.js';\nimport '../../symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\nimport { activeContrastBorder, editorForeground, editorWidgetBackground, editorWidgetBorder, listFocusHighlightForeground, listHighlightForeground, quickInputListFocusBackground, quickInputListFocusForeground, quickInputListFocusIconForeground, registerColor, transparent } from '../../../../platform/theme/common/colorRegistry.js';\nimport { attachListStyler } from '../../../../platform/theme/common/styler.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { ResizableHTMLElement } from '../../../../base/browser/ui/resizable/resizable.js';\nimport { Context as SuggestContext } from './suggest.js';\nimport { canExpandCompletionItem, SuggestDetailsOverlay, SuggestDetailsWidget } from './suggestWidgetDetails.js';\nimport { getAriaId, ItemRenderer } from './suggestWidgetRenderer.js';\n/**\n * Suggest widget colors\n */\nexport const editorSuggestWidgetBackground = registerColor('editorSuggestWidget.background', { dark: editorWidgetBackground, light: editorWidgetBackground, hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, nls.localize('editorSuggestWidgetBackground', 'Background color of the suggest widget.'));\nexport const editorSuggestWidgetBorder = registerColor('editorSuggestWidget.border', { dark: editorWidgetBorder, light: editorWidgetBorder, hcDark: editorWidgetBorder, hcLight: editorWidgetBorder }, nls.localize('editorSuggestWidgetBorder', 'Border color of the suggest widget.'));\nexport const editorSuggestWidgetForeground = registerColor('editorSuggestWidget.foreground', { dark: editorForeground, light: editorForeground, hcDark: editorForeground, hcLight: editorForeground }, nls.localize('editorSuggestWidgetForeground', 'Foreground color of the suggest widget.'));\nexport const editorSuggestWidgetSelectedForeground = registerColor('editorSuggestWidget.selectedForeground', { dark: quickInputListFocusForeground, light: quickInputListFocusForeground, hcDark: quickInputListFocusForeground, hcLight: quickInputListFocusForeground }, nls.localize('editorSuggestWidgetSelectedForeground', 'Foreground color of the selected entry in the suggest widget.'));\nexport const editorSuggestWidgetSelectedIconForeground = registerColor('editorSuggestWidget.selectedIconForeground', { dark: quickInputListFocusIconForeground, light: quickInputListFocusIconForeground, hcDark: quickInputListFocusIconForeground, hcLight: quickInputListFocusIconForeground }, nls.localize('editorSuggestWidgetSelectedIconForeground', 'Icon foreground color of the selected entry in the suggest widget.'));\nexport const editorSuggestWidgetSelectedBackground = registerColor('editorSuggestWidget.selectedBackground', { dark: quickInputListFocusBackground, light: quickInputListFocusBackground, hcDark: quickInputListFocusBackground, hcLight: quickInputListFocusBackground }, nls.localize('editorSuggestWidgetSelectedBackground', 'Background color of the selected entry in the suggest widget.'));\nexport const editorSuggestWidgetHighlightForeground = registerColor('editorSuggestWidget.highlightForeground', { dark: listHighlightForeground, light: listHighlightForeground, hcDark: listHighlightForeground, hcLight: listHighlightForeground }, nls.localize('editorSuggestWidgetHighlightForeground', 'Color of the match highlights in the suggest widget.'));\nexport const editorSuggestWidgetHighlightFocusForeground = registerColor('editorSuggestWidget.focusHighlightForeground', { dark: listFocusHighlightForeground, light: listFocusHighlightForeground, hcDark: listFocusHighlightForeground, hcLight: listFocusHighlightForeground }, nls.localize('editorSuggestWidgetFocusHighlightForeground', 'Color of the match highlights in the suggest widget when an item is focused.'));\nexport const editorSuggestWidgetStatusForeground = registerColor('editorSuggestWidgetStatus.foreground', { dark: transparent(editorSuggestWidgetForeground, .5), light: transparent(editorSuggestWidgetForeground, .5), hcDark: transparent(editorSuggestWidgetForeground, .5), hcLight: transparent(editorSuggestWidgetForeground, .5) }, nls.localize('editorSuggestWidgetStatusForeground', 'Foreground color of the suggest widget status.'));\nclass PersistedWidgetSize {\n constructor(_service, editor) {\n this._service = _service;\n this._key = `suggestWidget.size/${editor.getEditorType()}/${editor instanceof EmbeddedCodeEditorWidget}`;\n }\n restore() {\n var _a;\n const raw = (_a = this._service.get(this._key, 0 /* StorageScope.PROFILE */)) !== null && _a !== void 0 ? _a : '';\n try {\n const obj = JSON.parse(raw);\n if (dom.Dimension.is(obj)) {\n return dom.Dimension.lift(obj);\n }\n }\n catch (_b) {\n // ignore\n }\n return undefined;\n }\n store(size) {\n this._service.store(this._key, JSON.stringify(size), 0 /* StorageScope.PROFILE */, 1 /* StorageTarget.MACHINE */);\n }\n reset() {\n this._service.remove(this._key, 0 /* StorageScope.PROFILE */);\n }\n}\nlet SuggestWidget = class SuggestWidget {\n constructor(editor, _storageService, _contextKeyService, _themeService, instantiationService) {\n this.editor = editor;\n this._storageService = _storageService;\n this._state = 0 /* State.Hidden */;\n this._isAuto = false;\n this._ignoreFocusEvents = false;\n this._forceRenderingAbove = false;\n this._explainMode = false;\n this._showTimeout = new TimeoutTimer();\n this._disposables = new DisposableStore();\n this._onDidSelect = new Emitter();\n this._onDidFocus = new Emitter();\n this._onDidHide = new Emitter();\n this._onDidShow = new Emitter();\n this.onDidSelect = this._onDidSelect.event;\n this.onDidFocus = this._onDidFocus.event;\n this.onDidHide = this._onDidHide.event;\n this.onDidShow = this._onDidShow.event;\n this._onDetailsKeydown = new Emitter();\n this.onDetailsKeyDown = this._onDetailsKeydown.event;\n this.element = new ResizableHTMLElement();\n this.element.domNode.classList.add('editor-widget', 'suggest-widget');\n this._contentWidget = new SuggestContentWidget(this, editor);\n this._persistedSize = new PersistedWidgetSize(_storageService, editor);\n class ResizeState {\n constructor(persistedSize, currentSize, persistHeight = false, persistWidth = false) {\n this.persistedSize = persistedSize;\n this.currentSize = currentSize;\n this.persistHeight = persistHeight;\n this.persistWidth = persistWidth;\n }\n }\n let state;\n this._disposables.add(this.element.onDidWillResize(() => {\n this._contentWidget.lockPreference();\n state = new ResizeState(this._persistedSize.restore(), this.element.size);\n }));\n this._disposables.add(this.element.onDidResize(e => {\n var _a, _b, _c, _d;\n this._resize(e.dimension.width, e.dimension.height);\n if (state) {\n state.persistHeight = state.persistHeight || !!e.north || !!e.south;\n state.persistWidth = state.persistWidth || !!e.east || !!e.west;\n }\n if (!e.done) {\n return;\n }\n if (state) {\n // only store width or height value that have changed and also\n // only store changes that are above a certain threshold\n const { itemHeight, defaultSize } = this.getLayoutInfo();\n const threshold = Math.round(itemHeight / 2);\n let { width, height } = this.element.size;\n if (!state.persistHeight || Math.abs(state.currentSize.height - height) <= threshold) {\n height = (_b = (_a = state.persistedSize) === null || _a === void 0 ? void 0 : _a.height) !== null && _b !== void 0 ? _b : defaultSize.height;\n }\n if (!state.persistWidth || Math.abs(state.currentSize.width - width) <= threshold) {\n width = (_d = (_c = state.persistedSize) === null || _c === void 0 ? void 0 : _c.width) !== null && _d !== void 0 ? _d : defaultSize.width;\n }\n this._persistedSize.store(new dom.Dimension(width, height));\n }\n // reset working state\n this._contentWidget.unlockPreference();\n state = undefined;\n }));\n this._messageElement = dom.append(this.element.domNode, dom.$('.message'));\n this._listElement = dom.append(this.element.domNode, dom.$('.tree'));\n const details = instantiationService.createInstance(SuggestDetailsWidget, this.editor);\n details.onDidClose(this.toggleDetails, this, this._disposables);\n this._details = new SuggestDetailsOverlay(details, this.editor);\n const applyIconStyle = () => this.element.domNode.classList.toggle('no-icons', !this.editor.getOption(108 /* EditorOption.suggest */).showIcons);\n applyIconStyle();\n const renderer = instantiationService.createInstance(ItemRenderer, this.editor);\n this._disposables.add(renderer);\n this._disposables.add(renderer.onDidToggleDetails(() => this.toggleDetails()));\n this._list = new List('SuggestWidget', this._listElement, {\n getHeight: (_element) => this.getLayoutInfo().itemHeight,\n getTemplateId: (_element) => 'suggestion'\n }, [renderer], {\n alwaysConsumeMouseWheel: true,\n useShadows: false,\n mouseSupport: false,\n multipleSelectionSupport: false,\n accessibilityProvider: {\n getRole: () => 'option',\n getWidgetAriaLabel: () => nls.localize('suggest', \"Suggest\"),\n getWidgetRole: () => 'listbox',\n getAriaLabel: (item) => {\n let label = item.textLabel;\n if (typeof item.completion.label !== 'string') {\n const { detail, description } = item.completion.label;\n if (detail && description) {\n label = nls.localize('label.full', '{0}{1}, {2}', label, detail, description);\n }\n else if (detail) {\n label = nls.localize('label.detail', '{0}{1}', label, detail);\n }\n else if (description) {\n label = nls.localize('label.desc', '{0}, {1}', label, description);\n }\n }\n if (!item.isResolved || !this._isDetailsVisible()) {\n return label;\n }\n const { documentation, detail } = item.completion;\n const docs = strings.format('{0}{1}', detail || '', documentation ? (typeof documentation === 'string' ? documentation : documentation.value) : '');\n return nls.localize('ariaCurrenttSuggestionReadDetails', \"{0}, docs: {1}\", label, docs);\n },\n }\n });\n this._status = instantiationService.createInstance(SuggestWidgetStatus, this.element.domNode);\n const applyStatusBarStyle = () => this.element.domNode.classList.toggle('with-status-bar', this.editor.getOption(108 /* EditorOption.suggest */).showStatusBar);\n applyStatusBarStyle();\n this._disposables.add(attachListStyler(this._list, _themeService, {\n listInactiveFocusBackground: editorSuggestWidgetSelectedBackground,\n listInactiveFocusOutline: activeContrastBorder\n }));\n this._disposables.add(_themeService.onDidColorThemeChange(t => this._onThemeChange(t)));\n this._onThemeChange(_themeService.getColorTheme());\n this._disposables.add(this._list.onMouseDown(e => this._onListMouseDownOrTap(e)));\n this._disposables.add(this._list.onTap(e => this._onListMouseDownOrTap(e)));\n this._disposables.add(this._list.onDidChangeSelection(e => this._onListSelection(e)));\n this._disposables.add(this._list.onDidChangeFocus(e => this._onListFocus(e)));\n this._disposables.add(this.editor.onDidChangeCursorSelection(() => this._onCursorSelectionChanged()));\n this._disposables.add(this.editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(108 /* EditorOption.suggest */)) {\n applyStatusBarStyle();\n applyIconStyle();\n }\n }));\n this._ctxSuggestWidgetVisible = SuggestContext.Visible.bindTo(_contextKeyService);\n this._ctxSuggestWidgetDetailsVisible = SuggestContext.DetailsVisible.bindTo(_contextKeyService);\n this._ctxSuggestWidgetMultipleSuggestions = SuggestContext.MultipleSuggestions.bindTo(_contextKeyService);\n this._ctxSuggestWidgetHasFocusedSuggestion = SuggestContext.HasFocusedSuggestion.bindTo(_contextKeyService);\n this._disposables.add(dom.addStandardDisposableListener(this._details.widget.domNode, 'keydown', e => {\n this._onDetailsKeydown.fire(e);\n }));\n this._disposables.add(this.editor.onMouseDown((e) => this._onEditorMouseDown(e)));\n }\n dispose() {\n var _a;\n this._details.widget.dispose();\n this._details.dispose();\n this._list.dispose();\n this._status.dispose();\n this._disposables.dispose();\n (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\n this._showTimeout.dispose();\n this._contentWidget.dispose();\n this.element.dispose();\n }\n _onEditorMouseDown(mouseEvent) {\n if (this._details.widget.domNode.contains(mouseEvent.target.element)) {\n // Clicking inside details\n this._details.widget.domNode.focus();\n }\n else {\n // Clicking outside details and inside suggest\n if (this.element.domNode.contains(mouseEvent.target.element)) {\n this.editor.focus();\n }\n }\n }\n _onCursorSelectionChanged() {\n if (this._state !== 0 /* State.Hidden */) {\n this._contentWidget.layout();\n }\n }\n _onListMouseDownOrTap(e) {\n if (typeof e.element === 'undefined' || typeof e.index === 'undefined') {\n return;\n }\n // prevent stealing browser focus from the editor\n e.browserEvent.preventDefault();\n e.browserEvent.stopPropagation();\n this._select(e.element, e.index);\n }\n _onListSelection(e) {\n if (e.elements.length) {\n this._select(e.elements[0], e.indexes[0]);\n }\n }\n _select(item, index) {\n const completionModel = this._completionModel;\n if (completionModel) {\n this._onDidSelect.fire({ item, index, model: completionModel });\n this.editor.focus();\n }\n }\n _onThemeChange(theme) {\n this._details.widget.borderWidth = isHighContrast(theme.type) ? 2 : 1;\n }\n _onListFocus(e) {\n var _a;\n if (this._ignoreFocusEvents) {\n return;\n }\n if (!e.elements.length) {\n if (this._currentSuggestionDetails) {\n this._currentSuggestionDetails.cancel();\n this._currentSuggestionDetails = undefined;\n this._focusedItem = undefined;\n }\n this.editor.setAriaOptions({ activeDescendant: undefined });\n this._ctxSuggestWidgetHasFocusedSuggestion.set(false);\n return;\n }\n if (!this._completionModel) {\n return;\n }\n this._ctxSuggestWidgetHasFocusedSuggestion.set(true);\n const item = e.elements[0];\n const index = e.indexes[0];\n if (item !== this._focusedItem) {\n (_a = this._currentSuggestionDetails) === null || _a === void 0 ? void 0 : _a.cancel();\n this._currentSuggestionDetails = undefined;\n this._focusedItem = item;\n this._list.reveal(index);\n this._currentSuggestionDetails = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\n const loading = disposableTimeout(() => {\n if (this._isDetailsVisible()) {\n this.showDetails(true);\n }\n }, 250);\n const sub = token.onCancellationRequested(() => loading.dispose());\n const result = yield item.resolve(token);\n loading.dispose();\n sub.dispose();\n return result;\n }));\n this._currentSuggestionDetails.then(() => {\n if (index >= this._list.length || item !== this._list.element(index)) {\n return;\n }\n // item can have extra information, so re-render\n this._ignoreFocusEvents = true;\n this._list.splice(index, 1, [item]);\n this._list.setFocus([index]);\n this._ignoreFocusEvents = false;\n if (this._isDetailsVisible()) {\n this.showDetails(false);\n }\n else {\n this.element.domNode.classList.remove('docs-side');\n }\n this.editor.setAriaOptions({ activeDescendant: getAriaId(index) });\n }).catch(onUnexpectedError);\n }\n // emit an event\n this._onDidFocus.fire({ item, index, model: this._completionModel });\n }\n _setState(state) {\n if (this._state === state) {\n return;\n }\n this._state = state;\n this.element.domNode.classList.toggle('frozen', state === 4 /* State.Frozen */);\n this.element.domNode.classList.remove('message');\n switch (state) {\n case 0 /* State.Hidden */:\n dom.hide(this._messageElement, this._listElement, this._status.element);\n this._details.hide(true);\n this._status.hide();\n this._contentWidget.hide();\n this._ctxSuggestWidgetVisible.reset();\n this._ctxSuggestWidgetMultipleSuggestions.reset();\n this._ctxSuggestWidgetHasFocusedSuggestion.reset();\n this._showTimeout.cancel();\n this.element.domNode.classList.remove('visible');\n this._list.splice(0, this._list.length);\n this._focusedItem = undefined;\n this._cappedHeight = undefined;\n this._explainMode = false;\n break;\n case 1 /* State.Loading */:\n this.element.domNode.classList.add('message');\n this._messageElement.textContent = SuggestWidget.LOADING_MESSAGE;\n dom.hide(this._listElement, this._status.element);\n dom.show(this._messageElement);\n this._details.hide();\n this._show();\n this._focusedItem = undefined;\n break;\n case 2 /* State.Empty */:\n this.element.domNode.classList.add('message');\n this._messageElement.textContent = SuggestWidget.NO_SUGGESTIONS_MESSAGE;\n dom.hide(this._listElement, this._status.element);\n dom.show(this._messageElement);\n this._details.hide();\n this._show();\n this._focusedItem = undefined;\n break;\n case 3 /* State.Open */:\n dom.hide(this._messageElement);\n dom.show(this._listElement, this._status.element);\n this._show();\n break;\n case 4 /* State.Frozen */:\n dom.hide(this._messageElement);\n dom.show(this._listElement, this._status.element);\n this._show();\n break;\n case 5 /* State.Details */:\n dom.hide(this._messageElement);\n dom.show(this._listElement, this._status.element);\n this._details.show();\n this._show();\n break;\n }\n }\n _show() {\n this._status.show();\n this._contentWidget.show();\n this._layout(this._persistedSize.restore());\n this._ctxSuggestWidgetVisible.set(true);\n this._showTimeout.cancelAndSet(() => {\n this.element.domNode.classList.add('visible');\n this._onDidShow.fire(this);\n }, 100);\n }\n showTriggered(auto, delay) {\n if (this._state !== 0 /* State.Hidden */) {\n return;\n }\n this._contentWidget.setPosition(this.editor.getPosition());\n this._isAuto = !!auto;\n if (!this._isAuto) {\n this._loadingTimeout = disposableTimeout(() => this._setState(1 /* State.Loading */), delay);\n }\n }\n showSuggestions(completionModel, selectionIndex, isFrozen, isAuto) {\n var _a, _b;\n this._contentWidget.setPosition(this.editor.getPosition());\n (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\n (_b = this._currentSuggestionDetails) === null || _b === void 0 ? void 0 : _b.cancel();\n this._currentSuggestionDetails = undefined;\n if (this._completionModel !== completionModel) {\n this._completionModel = completionModel;\n }\n if (isFrozen && this._state !== 2 /* State.Empty */ && this._state !== 0 /* State.Hidden */) {\n this._setState(4 /* State.Frozen */);\n return;\n }\n const visibleCount = this._completionModel.items.length;\n const isEmpty = visibleCount === 0;\n this._ctxSuggestWidgetMultipleSuggestions.set(visibleCount > 1);\n if (isEmpty) {\n this._setState(isAuto ? 0 /* State.Hidden */ : 2 /* State.Empty */);\n this._completionModel = undefined;\n return;\n }\n this._focusedItem = undefined;\n this._list.splice(0, this._list.length, this._completionModel.items);\n this._setState(isFrozen ? 4 /* State.Frozen */ : 3 /* State.Open */);\n if (selectionIndex >= 0) {\n this._list.reveal(selectionIndex, 0);\n this._list.setFocus([selectionIndex]);\n }\n this._layout(this.element.size);\n // Reset focus border\n this._details.widget.domNode.classList.remove('focused');\n }\n selectNextPage() {\n switch (this._state) {\n case 0 /* State.Hidden */:\n return false;\n case 5 /* State.Details */:\n this._details.widget.pageDown();\n return true;\n case 1 /* State.Loading */:\n return !this._isAuto;\n default:\n this._list.focusNextPage();\n return true;\n }\n }\n selectNext() {\n switch (this._state) {\n case 0 /* State.Hidden */:\n return false;\n case 1 /* State.Loading */:\n return !this._isAuto;\n default:\n this._list.focusNext(1, true);\n return true;\n }\n }\n selectLast() {\n switch (this._state) {\n case 0 /* State.Hidden */:\n return false;\n case 5 /* State.Details */:\n this._details.widget.scrollBottom();\n return true;\n case 1 /* State.Loading */:\n return !this._isAuto;\n default:\n this._list.focusLast();\n return true;\n }\n }\n selectPreviousPage() {\n switch (this._state) {\n case 0 /* State.Hidden */:\n return false;\n case 5 /* State.Details */:\n this._details.widget.pageUp();\n return true;\n case 1 /* State.Loading */:\n return !this._isAuto;\n default:\n this._list.focusPreviousPage();\n return true;\n }\n }\n selectPrevious() {\n switch (this._state) {\n case 0 /* State.Hidden */:\n return false;\n case 1 /* State.Loading */:\n return !this._isAuto;\n default:\n this._list.focusPrevious(1, true);\n return false;\n }\n }\n selectFirst() {\n switch (this._state) {\n case 0 /* State.Hidden */:\n return false;\n case 5 /* State.Details */:\n this._details.widget.scrollTop();\n return true;\n case 1 /* State.Loading */:\n return !this._isAuto;\n default:\n this._list.focusFirst();\n return true;\n }\n }\n getFocusedItem() {\n if (this._state !== 0 /* State.Hidden */\n && this._state !== 2 /* State.Empty */\n && this._state !== 1 /* State.Loading */\n && this._completionModel) {\n return {\n item: this._list.getFocusedElements()[0],\n index: this._list.getFocus()[0],\n model: this._completionModel\n };\n }\n return undefined;\n }\n toggleDetailsFocus() {\n if (this._state === 5 /* State.Details */) {\n this._setState(3 /* State.Open */);\n this._details.widget.domNode.classList.remove('focused');\n }\n else if (this._state === 3 /* State.Open */ && this._isDetailsVisible()) {\n this._setState(5 /* State.Details */);\n this._details.widget.domNode.classList.add('focused');\n }\n }\n toggleDetails() {\n if (this._isDetailsVisible()) {\n // hide details widget\n this._ctxSuggestWidgetDetailsVisible.set(false);\n this._setDetailsVisible(false);\n this._details.hide();\n this.element.domNode.classList.remove('shows-details');\n }\n else if ((canExpandCompletionItem(this._list.getFocusedElements()[0]) || this._explainMode) && (this._state === 3 /* State.Open */ || this._state === 5 /* State.Details */ || this._state === 4 /* State.Frozen */)) {\n // show details widget (iff possible)\n this._ctxSuggestWidgetDetailsVisible.set(true);\n this._setDetailsVisible(true);\n this.showDetails(false);\n }\n }\n showDetails(loading) {\n this._details.show();\n if (loading) {\n this._details.widget.renderLoading();\n }\n else {\n this._details.widget.renderItem(this._list.getFocusedElements()[0], this._explainMode);\n }\n this._positionDetails();\n this.editor.focus();\n this.element.domNode.classList.add('shows-details');\n }\n toggleExplainMode() {\n if (this._list.getFocusedElements()[0]) {\n this._explainMode = !this._explainMode;\n if (!this._isDetailsVisible()) {\n this.toggleDetails();\n }\n else {\n this.showDetails(false);\n }\n }\n }\n resetPersistedSize() {\n this._persistedSize.reset();\n }\n hideWidget() {\n var _a;\n (_a = this._loadingTimeout) === null || _a === void 0 ? void 0 : _a.dispose();\n this._setState(0 /* State.Hidden */);\n this._onDidHide.fire(this);\n this.element.clearSashHoverState();\n // ensure that a reasonable widget height is persisted so that\n // accidential \"resize-to-single-items\" cases aren't happening\n const dim = this._persistedSize.restore();\n const minPersistedHeight = Math.ceil(this.getLayoutInfo().itemHeight * 4.3);\n if (dim && dim.height < minPersistedHeight) {\n this._persistedSize.store(dim.with(undefined, minPersistedHeight));\n }\n }\n isFrozen() {\n return this._state === 4 /* State.Frozen */;\n }\n _afterRender(position) {\n if (position === null) {\n if (this._isDetailsVisible()) {\n this._details.hide(); //todo@jrieken soft-hide\n }\n return;\n }\n if (this._state === 2 /* State.Empty */ || this._state === 1 /* State.Loading */) {\n // no special positioning when widget isn't showing list\n return;\n }\n if (this._isDetailsVisible()) {\n this._details.show();\n }\n this._positionDetails();\n }\n _layout(size) {\n var _a, _b, _c;\n if (!this.editor.hasModel()) {\n return;\n }\n if (!this.editor.getDomNode()) {\n // happens when running tests\n return;\n }\n const bodyBox = dom.getClientArea(document.body);\n const info = this.getLayoutInfo();\n if (!size) {\n size = info.defaultSize;\n }\n let height = size.height;\n let width = size.width;\n // status bar\n this._status.element.style.lineHeight = `${info.itemHeight}px`;\n if (this._state === 2 /* State.Empty */ || this._state === 1 /* State.Loading */) {\n // showing a message only\n height = info.itemHeight + info.borderHeight;\n width = info.defaultSize.width / 2;\n this.element.enableSashes(false, false, false, false);\n this.element.minSize = this.element.maxSize = new dom.Dimension(width, height);\n this._contentWidget.setPreference(2 /* ContentWidgetPositionPreference.BELOW */);\n }\n else {\n // showing items\n // width math\n const maxWidth = bodyBox.width - info.borderHeight - 2 * info.horizontalPadding;\n if (width > maxWidth) {\n width = maxWidth;\n }\n const preferredWidth = this._completionModel ? this._completionModel.stats.pLabelLen * info.typicalHalfwidthCharacterWidth : width;\n // height math\n const fullHeight = info.statusBarHeight + this._list.contentHeight + info.borderHeight;\n const minHeight = info.itemHeight + info.statusBarHeight;\n const editorBox = dom.getDomNodePagePosition(this.editor.getDomNode());\n const cursorBox = this.editor.getScrolledVisiblePosition(this.editor.getPosition());\n const cursorBottom = editorBox.top + cursorBox.top + cursorBox.height;\n const maxHeightBelow = Math.min(bodyBox.height - cursorBottom - info.verticalPadding, fullHeight);\n const availableSpaceAbove = editorBox.top + cursorBox.top - info.verticalPadding;\n const maxHeightAbove = Math.min(availableSpaceAbove, fullHeight);\n let maxHeight = Math.min(Math.max(maxHeightAbove, maxHeightBelow) + info.borderHeight, fullHeight);\n if (height === ((_a = this._cappedHeight) === null || _a === void 0 ? void 0 : _a.capped)) {\n // Restore the old (wanted) height when the current\n // height is capped to fit\n height = this._cappedHeight.wanted;\n }\n if (height < minHeight) {\n height = minHeight;\n }\n if (height > maxHeight) {\n height = maxHeight;\n }\n const forceRenderingAboveRequiredSpace = 150;\n if (height > maxHeightBelow || (this._forceRenderingAbove && availableSpaceAbove > forceRenderingAboveRequiredSpace)) {\n this._contentWidget.setPreference(1 /* ContentWidgetPositionPreference.ABOVE */);\n this.element.enableSashes(true, true, false, false);\n maxHeight = maxHeightAbove;\n }\n else {\n this._contentWidget.setPreference(2 /* ContentWidgetPositionPreference.BELOW */);\n this.element.enableSashes(false, true, true, false);\n maxHeight = maxHeightBelow;\n }\n this.element.preferredSize = new dom.Dimension(preferredWidth, info.defaultSize.height);\n this.element.maxSize = new dom.Dimension(maxWidth, maxHeight);\n this.element.minSize = new dom.Dimension(220, minHeight);\n // Know when the height was capped to fit and remember\n // the wanted height for later. This is required when going\n // left to widen suggestions.\n this._cappedHeight = height === fullHeight\n ? { wanted: (_c = (_b = this._cappedHeight) === null || _b === void 0 ? void 0 : _b.wanted) !== null && _c !== void 0 ? _c : size.height, capped: height }\n : undefined;\n }\n this._resize(width, height);\n }\n _resize(width, height) {\n const { width: maxWidth, height: maxHeight } = this.element.maxSize;\n width = Math.min(maxWidth, width);\n height = Math.min(maxHeight, height);\n const { statusBarHeight } = this.getLayoutInfo();\n this._list.layout(height - statusBarHeight, width);\n this._listElement.style.height = `${height - statusBarHeight}px`;\n this.element.layout(height, width);\n this._contentWidget.layout();\n this._positionDetails();\n }\n _positionDetails() {\n var _a;\n if (this._isDetailsVisible()) {\n this._details.placeAtAnchor(this.element.domNode, ((_a = this._contentWidget.getPosition()) === null || _a === void 0 ? void 0 : _a.preference[0]) === 2 /* ContentWidgetPositionPreference.BELOW */);\n }\n }\n getLayoutInfo() {\n const fontInfo = this.editor.getOption(46 /* EditorOption.fontInfo */);\n const itemHeight = clamp(this.editor.getOption(110 /* EditorOption.suggestLineHeight */) || fontInfo.lineHeight, 8, 1000);\n const statusBarHeight = !this.editor.getOption(108 /* EditorOption.suggest */).showStatusBar || this._state === 2 /* State.Empty */ || this._state === 1 /* State.Loading */ ? 0 : itemHeight;\n const borderWidth = this._details.widget.borderWidth;\n const borderHeight = 2 * borderWidth;\n return {\n itemHeight,\n statusBarHeight,\n borderWidth,\n borderHeight,\n typicalHalfwidthCharacterWidth: fontInfo.typicalHalfwidthCharacterWidth,\n verticalPadding: 22,\n horizontalPadding: 14,\n defaultSize: new dom.Dimension(430, statusBarHeight + 12 * itemHeight + borderHeight)\n };\n }\n _isDetailsVisible() {\n return this._storageService.getBoolean('expandSuggestionDocs', 0 /* StorageScope.PROFILE */, false);\n }\n _setDetailsVisible(value) {\n this._storageService.store('expandSuggestionDocs', value, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n }\n forceRenderingAbove() {\n if (!this._forceRenderingAbove) {\n this._forceRenderingAbove = true;\n this._layout(this._persistedSize.restore());\n }\n }\n stopForceRenderingAbove() {\n this._forceRenderingAbove = false;\n }\n};\nSuggestWidget.LOADING_MESSAGE = nls.localize('suggestWidget.loading', \"Loading...\");\nSuggestWidget.NO_SUGGESTIONS_MESSAGE = nls.localize('suggestWidget.noSuggestions', \"No suggestions.\");\nSuggestWidget = __decorate([\n __param(1, IStorageService),\n __param(2, IContextKeyService),\n __param(3, IThemeService),\n __param(4, IInstantiationService)\n], SuggestWidget);\nexport { SuggestWidget };\nexport class SuggestContentWidget {\n constructor(_widget, _editor) {\n this._widget = _widget;\n this._editor = _editor;\n this.allowEditorOverflow = true;\n this.suppressMouseDown = false;\n this._preferenceLocked = false;\n this._added = false;\n this._hidden = false;\n }\n dispose() {\n if (this._added) {\n this._added = false;\n this._editor.removeContentWidget(this);\n }\n }\n getId() {\n return 'editor.widget.suggestWidget';\n }\n getDomNode() {\n return this._widget.element.domNode;\n }\n show() {\n this._hidden = false;\n if (!this._added) {\n this._added = true;\n this._editor.addContentWidget(this);\n }\n }\n hide() {\n if (!this._hidden) {\n this._hidden = true;\n this.layout();\n }\n }\n layout() {\n this._editor.layoutContentWidget(this);\n }\n getPosition() {\n if (this._hidden || !this._position || !this._preference) {\n return null;\n }\n return {\n position: this._position,\n preference: [this._preference]\n };\n }\n beforeRender() {\n const { height, width } = this._widget.element.size;\n const { borderWidth, horizontalPadding } = this._widget.getLayoutInfo();\n return new dom.Dimension(width + 2 * borderWidth + horizontalPadding, height + 2 * borderWidth);\n }\n afterRender(position) {\n this._widget._afterRender(position);\n }\n setPreference(preference) {\n if (!this._preferenceLocked) {\n this._preference = preference;\n }\n }\n lockPreference() {\n this._preferenceLocked = true;\n }\n unlockPreference() {\n this._preferenceLocked = false;\n }\n setPosition(position) {\n this._position = position;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { IdleValue } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { SimpleKeybinding } from '../../../../base/common/keybindings.js';\nimport { DisposableStore, dispose, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isObject } from '../../../../base/common/types.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { ISuggestMemoryService } from './suggestMemory.js';\nimport { WordContextKey } from './wordContextKey.js';\nimport * as nls from '../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\nimport { SuggestAlternatives } from './suggestAlternatives.js';\nimport { CommitCharacterController } from './suggestCommitCharacters.js';\nimport { SuggestModel } from './suggestModel.js';\nimport { OvertypingCapturer } from './suggestOvertypingCapturer.js';\nimport { SuggestWidget } from './suggestWidget.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { basename, extname } from '../../../../base/common/resources.js';\nimport { hash } from '../../../../base/common/hash.js';\n// sticky suggest widget which doesn't disappear on focus out and such\nconst _sticky = false;\n// _sticky = Boolean(\"true\"); // done \"weirdly\" so that a lint warning prevents you from pushing this\nclass LineSuffix {\n constructor(_model, _position) {\n this._model = _model;\n this._position = _position;\n // spy on what's happening right of the cursor. two cases:\n // 1. end of line -> check that it's still end of line\n // 2. mid of line -> add a marker and compute the delta\n const maxColumn = _model.getLineMaxColumn(_position.lineNumber);\n if (maxColumn !== _position.column) {\n const offset = _model.getOffsetAt(_position);\n const end = _model.getPositionAt(offset + 1);\n this._marker = _model.deltaDecorations([], [{\n range: Range.fromPositions(_position, end),\n options: { description: 'suggest-line-suffix', stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */ }\n }]);\n }\n }\n dispose() {\n if (this._marker && !this._model.isDisposed()) {\n this._model.deltaDecorations(this._marker, []);\n }\n }\n delta(position) {\n if (this._model.isDisposed() || this._position.lineNumber !== position.lineNumber) {\n // bail out early if things seems fishy\n return 0;\n }\n // read the marker (in case suggest was triggered at line end) or compare\n // the cursor to the line end.\n if (this._marker) {\n const range = this._model.getDecorationRange(this._marker[0]);\n const end = this._model.getOffsetAt(range.getStartPosition());\n return end - this._model.getOffsetAt(position);\n }\n else {\n return this._model.getLineMaxColumn(position.lineNumber) - position.column;\n }\n }\n}\nlet SuggestController = class SuggestController {\n constructor(editor, _memoryService, _commandService, _contextKeyService, _instantiationService, _logService, _telemetryService) {\n this._memoryService = _memoryService;\n this._commandService = _commandService;\n this._contextKeyService = _contextKeyService;\n this._instantiationService = _instantiationService;\n this._logService = _logService;\n this._telemetryService = _telemetryService;\n this._lineSuffix = new MutableDisposable();\n this._toDispose = new DisposableStore();\n this._selectors = new PriorityRegistry(s => s.priority);\n this._telemetryGate = 0;\n this.editor = editor;\n this.model = _instantiationService.createInstance(SuggestModel, this.editor);\n // context key: update insert/replace mode\n const ctxInsertMode = SuggestContext.InsertMode.bindTo(_contextKeyService);\n ctxInsertMode.set(editor.getOption(108 /* EditorOption.suggest */).insertMode);\n this.model.onDidTrigger(() => ctxInsertMode.set(editor.getOption(108 /* EditorOption.suggest */).insertMode));\n this.widget = this._toDispose.add(new IdleValue(() => {\n const widget = this._instantiationService.createInstance(SuggestWidget, this.editor);\n this._toDispose.add(widget);\n this._toDispose.add(widget.onDidSelect(item => this._insertSuggestion(item, 0), this));\n // Wire up logic to accept a suggestion on certain characters\n const commitCharacterController = new CommitCharacterController(this.editor, widget, item => this._insertSuggestion(item, 2 /* InsertFlags.NoAfterUndoStop */));\n this._toDispose.add(commitCharacterController);\n this._toDispose.add(this.model.onDidSuggest(e => {\n if (e.completionModel.items.length === 0) {\n commitCharacterController.reset();\n }\n }));\n // Wire up makes text edit context key\n const ctxMakesTextEdit = SuggestContext.MakesTextEdit.bindTo(this._contextKeyService);\n const ctxHasInsertAndReplace = SuggestContext.HasInsertAndReplaceRange.bindTo(this._contextKeyService);\n const ctxCanResolve = SuggestContext.CanResolve.bindTo(this._contextKeyService);\n this._toDispose.add(toDisposable(() => {\n ctxMakesTextEdit.reset();\n ctxHasInsertAndReplace.reset();\n ctxCanResolve.reset();\n }));\n this._toDispose.add(widget.onDidFocus(({ item }) => {\n // (ctx: makesTextEdit)\n const position = this.editor.getPosition();\n const startColumn = item.editStart.column;\n const endColumn = position.column;\n let value = true;\n if (this.editor.getOption(1 /* EditorOption.acceptSuggestionOnEnter */) === 'smart'\n && this.model.state === 2 /* State.Auto */\n && !item.completion.additionalTextEdits\n && !(item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */)\n && endColumn - startColumn === item.completion.insertText.length) {\n const oldText = this.editor.getModel().getValueInRange({\n startLineNumber: position.lineNumber,\n startColumn,\n endLineNumber: position.lineNumber,\n endColumn\n });\n value = oldText !== item.completion.insertText;\n }\n ctxMakesTextEdit.set(value);\n // (ctx: hasInsertAndReplaceRange)\n ctxHasInsertAndReplace.set(!Position.equals(item.editInsertEnd, item.editReplaceEnd));\n // (ctx: canResolve)\n ctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);\n }));\n this._toDispose.add(widget.onDetailsKeyDown(e => {\n // cmd + c on macOS, ctrl + c on Win / Linux\n if (e.toKeybinding().equals(new SimpleKeybinding(true, false, false, false, 33 /* KeyCode.KeyC */)) ||\n (platform.isMacintosh && e.toKeybinding().equals(new SimpleKeybinding(false, false, false, true, 33 /* KeyCode.KeyC */)))) {\n e.stopPropagation();\n return;\n }\n if (!e.toKeybinding().isModifierKey()) {\n this.editor.focus();\n }\n }));\n return widget;\n }));\n // Wire up text overtyping capture\n this._overtypingCapturer = this._toDispose.add(new IdleValue(() => {\n return this._toDispose.add(new OvertypingCapturer(this.editor, this.model));\n }));\n this._alternatives = this._toDispose.add(new IdleValue(() => {\n return this._toDispose.add(new SuggestAlternatives(this.editor, this._contextKeyService));\n }));\n this._toDispose.add(_instantiationService.createInstance(WordContextKey, editor));\n this._toDispose.add(this.model.onDidTrigger(e => {\n this.widget.value.showTriggered(e.auto, e.shy ? 250 : 50);\n this._lineSuffix.value = new LineSuffix(this.editor.getModel(), e.position);\n }));\n this._toDispose.add(this.model.onDidSuggest(e => {\n if (e.shy) {\n return;\n }\n let index = -1;\n if (!e.noSelect) {\n for (const selector of this._selectors.itemsOrderedByPriorityDesc) {\n index = selector.select(this.editor.getModel(), this.editor.getPosition(), e.completionModel.items);\n if (index !== -1) {\n break;\n }\n }\n if (index === -1) {\n index = this._memoryService.select(this.editor.getModel(), this.editor.getPosition(), e.completionModel.items);\n }\n }\n this.widget.value.showSuggestions(e.completionModel, index, e.isFrozen, e.auto);\n }));\n this._toDispose.add(this.model.onDidCancel(e => {\n if (!e.retrigger) {\n this.widget.value.hideWidget();\n }\n }));\n this._toDispose.add(this.editor.onDidBlurEditorWidget(() => {\n if (!_sticky) {\n this.model.cancel();\n this.model.clear();\n }\n }));\n // Manage the acceptSuggestionsOnEnter context key\n const acceptSuggestionsOnEnter = SuggestContext.AcceptSuggestionsOnEnter.bindTo(_contextKeyService);\n const updateFromConfig = () => {\n const acceptSuggestionOnEnter = this.editor.getOption(1 /* EditorOption.acceptSuggestionOnEnter */);\n acceptSuggestionsOnEnter.set(acceptSuggestionOnEnter === 'on' || acceptSuggestionOnEnter === 'smart');\n };\n this._toDispose.add(this.editor.onDidChangeConfiguration(() => updateFromConfig()));\n updateFromConfig();\n }\n static get(editor) {\n return editor.getContribution(SuggestController.ID);\n }\n dispose() {\n this._alternatives.dispose();\n this._toDispose.dispose();\n this.widget.dispose();\n this.model.dispose();\n this._lineSuffix.dispose();\n }\n _insertSuggestion(event, flags) {\n if (!event || !event.item) {\n this._alternatives.value.reset();\n this.model.cancel();\n this.model.clear();\n return;\n }\n if (!this.editor.hasModel()) {\n return;\n }\n const snippetController = SnippetController2.get(this.editor);\n if (!snippetController) {\n return;\n }\n const model = this.editor.getModel();\n const modelVersionNow = model.getAlternativeVersionId();\n const { item } = event;\n //\n const tasks = [];\n const cts = new CancellationTokenSource();\n // pushing undo stops *before* additional text edits and\n // *after* the main edit\n if (!(flags & 1 /* InsertFlags.NoBeforeUndoStop */)) {\n this.editor.pushUndoStop();\n }\n // compute overwrite[Before|After] deltas BEFORE applying extra edits\n const info = this.getOverwriteInfo(item, Boolean(flags & 8 /* InsertFlags.AlternativeOverwriteConfig */));\n // keep item in memory\n this._memoryService.memorize(model, this.editor.getPosition(), item);\n if (Array.isArray(item.completion.additionalTextEdits)) {\n // sync additional edits\n const scrollState = StableEditorScrollState.capture(this.editor);\n this.editor.executeEdits('suggestController.additionalTextEdits.sync', item.completion.additionalTextEdits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text)));\n scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n }\n else if (!item.isResolved) {\n // async additional edits\n const sw = new StopWatch(true);\n let position;\n const docListener = model.onDidChangeContent(e => {\n if (e.isFlush) {\n cts.cancel();\n docListener.dispose();\n return;\n }\n for (const change of e.changes) {\n const thisPosition = Range.getEndPosition(change.range);\n if (!position || Position.isBefore(thisPosition, position)) {\n position = thisPosition;\n }\n }\n });\n const oldFlags = flags;\n flags |= 2 /* InsertFlags.NoAfterUndoStop */;\n let didType = false;\n const typeListener = this.editor.onWillType(() => {\n typeListener.dispose();\n didType = true;\n if (!(oldFlags & 2 /* InsertFlags.NoAfterUndoStop */)) {\n this.editor.pushUndoStop();\n }\n });\n tasks.push(item.resolve(cts.token).then(() => {\n if (!item.completion.additionalTextEdits || cts.token.isCancellationRequested) {\n return false;\n }\n if (position && item.completion.additionalTextEdits.some(edit => Position.isBefore(position, Range.getStartPosition(edit.range)))) {\n return false;\n }\n if (didType) {\n this.editor.pushUndoStop();\n }\n const scrollState = StableEditorScrollState.capture(this.editor);\n this.editor.executeEdits('suggestController.additionalTextEdits.async', item.completion.additionalTextEdits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text)));\n scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n if (didType || !(oldFlags & 2 /* InsertFlags.NoAfterUndoStop */)) {\n this.editor.pushUndoStop();\n }\n return true;\n }).then(applied => {\n this._logService.trace('[suggest] async resolving of edits DONE (ms, applied?)', sw.elapsed(), applied);\n docListener.dispose();\n typeListener.dispose();\n }));\n }\n let { insertText } = item.completion;\n if (!(item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */)) {\n insertText = SnippetParser.escape(insertText);\n }\n snippetController.insert(insertText, {\n overwriteBefore: info.overwriteBefore,\n overwriteAfter: info.overwriteAfter,\n undoStopBefore: false,\n undoStopAfter: false,\n adjustWhitespace: !(item.completion.insertTextRules & 1 /* CompletionItemInsertTextRule.KeepWhitespace */),\n clipboardText: event.model.clipboardText,\n overtypingCapturer: this._overtypingCapturer.value\n });\n if (!(flags & 2 /* InsertFlags.NoAfterUndoStop */)) {\n this.editor.pushUndoStop();\n }\n if (!item.completion.command) {\n // done\n this.model.cancel();\n }\n else if (item.completion.command.id === TriggerSuggestAction.id) {\n // retigger\n this.model.trigger({ auto: true, shy: false, noSelect: false }, true);\n }\n else {\n // exec command, done\n tasks.push(this._commandService.executeCommand(item.completion.command.id, ...(item.completion.command.arguments ? [...item.completion.command.arguments] : [])).catch(onUnexpectedError));\n this.model.cancel();\n }\n if (flags & 4 /* InsertFlags.KeepAlternativeSuggestions */) {\n this._alternatives.value.set(event, next => {\n // cancel resolving of additional edits\n cts.cancel();\n // this is not so pretty. when inserting the 'next'\n // suggestion we undo until we are at the state at\n // which we were before inserting the previous suggestion...\n while (model.canUndo()) {\n if (modelVersionNow !== model.getAlternativeVersionId()) {\n model.undo();\n }\n this._insertSuggestion(next, 1 /* InsertFlags.NoBeforeUndoStop */ | 2 /* InsertFlags.NoAfterUndoStop */ | (flags & 8 /* InsertFlags.AlternativeOverwriteConfig */ ? 8 /* InsertFlags.AlternativeOverwriteConfig */ : 0));\n break;\n }\n });\n }\n this._alertCompletionItem(item);\n // clear only now - after all tasks are done\n Promise.all(tasks).finally(() => {\n this._reportSuggestionAcceptedTelemetry(item, model, event);\n this.model.clear();\n cts.dispose();\n });\n }\n _reportSuggestionAcceptedTelemetry(item, model, acceptedSuggestion) {\n var _a;\n if (this._telemetryGate++ % 100 !== 0) {\n return;\n }\n // _debugDisplayName looks like `vscode.css-language-features(/-:)`, where the last bit is the trigger chars\n // normalize it to just the extension ID and lowercase\n const providerId = item.extensionId ? item.extensionId.value : ((_a = acceptedSuggestion.item.provider._debugDisplayName) !== null && _a !== void 0 ? _a : 'unknown').split('(', 1)[0].toLowerCase();\n this._telemetryService.publicLog2('suggest.acceptedSuggestion', {\n providerId,\n kind: item.completion.kind,\n basenameHash: hash(basename(model.uri)).toString(16),\n languageId: model.getLanguageId(),\n fileExtension: extname(model.uri),\n });\n }\n getOverwriteInfo(item, toggleMode) {\n assertType(this.editor.hasModel());\n let replace = this.editor.getOption(108 /* EditorOption.suggest */).insertMode === 'replace';\n if (toggleMode) {\n replace = !replace;\n }\n const overwriteBefore = item.position.column - item.editStart.column;\n const overwriteAfter = (replace ? item.editReplaceEnd.column : item.editInsertEnd.column) - item.position.column;\n const columnDelta = this.editor.getPosition().column - item.position.column;\n const suffixDelta = this._lineSuffix.value ? this._lineSuffix.value.delta(this.editor.getPosition()) : 0;\n return {\n overwriteBefore: overwriteBefore + columnDelta,\n overwriteAfter: overwriteAfter + suffixDelta\n };\n }\n _alertCompletionItem(item) {\n if (isNonEmptyArray(item.completion.additionalTextEdits)) {\n const msg = nls.localize('aria.alert.snippet', \"Accepting '{0}' made {1} additional edits\", item.textLabel, item.completion.additionalTextEdits.length);\n alert(msg);\n }\n }\n triggerSuggest(onlyFrom, auto, noFilter, noSelect) {\n if (this.editor.hasModel()) {\n this.model.trigger({ auto: auto !== null && auto !== void 0 ? auto : false, shy: false, noSelect: noSelect !== null && noSelect !== void 0 ? noSelect : false }, false, onlyFrom, undefined, noFilter);\n this.editor.revealPosition(this.editor.getPosition(), 0 /* ScrollType.Smooth */);\n this.editor.focus();\n }\n }\n triggerSuggestAndAcceptBest(arg) {\n if (!this.editor.hasModel()) {\n return;\n }\n const positionNow = this.editor.getPosition();\n const fallback = () => {\n if (positionNow.equals(this.editor.getPosition())) {\n this._commandService.executeCommand(arg.fallback);\n }\n };\n const makesTextEdit = (item) => {\n if (item.completion.insertTextRules & 4 /* CompletionItemInsertTextRule.InsertAsSnippet */ || item.completion.additionalTextEdits) {\n // snippet, other editor -> makes edit\n return true;\n }\n const position = this.editor.getPosition();\n const startColumn = item.editStart.column;\n const endColumn = position.column;\n if (endColumn - startColumn !== item.completion.insertText.length) {\n // unequal lengths -> makes edit\n return true;\n }\n const textNow = this.editor.getModel().getValueInRange({\n startLineNumber: position.lineNumber,\n startColumn,\n endLineNumber: position.lineNumber,\n endColumn\n });\n // unequal text -> makes edit\n return textNow !== item.completion.insertText;\n };\n Event.once(this.model.onDidTrigger)(_ => {\n // wait for trigger because only then the cancel-event is trustworthy\n const listener = [];\n Event.any(this.model.onDidTrigger, this.model.onDidCancel)(() => {\n // retrigger or cancel -> try to type default text\n dispose(listener);\n fallback();\n }, undefined, listener);\n this.model.onDidSuggest(({ completionModel }) => {\n dispose(listener);\n if (completionModel.items.length === 0) {\n fallback();\n return;\n }\n const index = this._memoryService.select(this.editor.getModel(), this.editor.getPosition(), completionModel.items);\n const item = completionModel.items[index];\n if (!makesTextEdit(item)) {\n fallback();\n return;\n }\n this.editor.pushUndoStop();\n this._insertSuggestion({ index, item, model: completionModel }, 4 /* InsertFlags.KeepAlternativeSuggestions */ | 1 /* InsertFlags.NoBeforeUndoStop */ | 2 /* InsertFlags.NoAfterUndoStop */);\n }, undefined, listener);\n });\n this.model.trigger({ auto: false, shy: true, noSelect: false });\n this.editor.revealPosition(positionNow, 0 /* ScrollType.Smooth */);\n this.editor.focus();\n }\n acceptSelectedSuggestion(keepAlternativeSuggestions, alternativeOverwriteConfig) {\n const item = this.widget.value.getFocusedItem();\n let flags = 0;\n if (keepAlternativeSuggestions) {\n flags |= 4 /* InsertFlags.KeepAlternativeSuggestions */;\n }\n if (alternativeOverwriteConfig) {\n flags |= 8 /* InsertFlags.AlternativeOverwriteConfig */;\n }\n this._insertSuggestion(item, flags);\n }\n acceptNextSuggestion() {\n this._alternatives.value.next();\n }\n acceptPrevSuggestion() {\n this._alternatives.value.prev();\n }\n cancelSuggestWidget() {\n this.model.cancel();\n this.model.clear();\n this.widget.value.hideWidget();\n }\n selectNextSuggestion() {\n this.widget.value.selectNext();\n }\n selectNextPageSuggestion() {\n this.widget.value.selectNextPage();\n }\n selectLastSuggestion() {\n this.widget.value.selectLast();\n }\n selectPrevSuggestion() {\n this.widget.value.selectPrevious();\n }\n selectPrevPageSuggestion() {\n this.widget.value.selectPreviousPage();\n }\n selectFirstSuggestion() {\n this.widget.value.selectFirst();\n }\n toggleSuggestionDetails() {\n this.widget.value.toggleDetails();\n }\n toggleExplainMode() {\n this.widget.value.toggleExplainMode();\n }\n toggleSuggestionFocus() {\n this.widget.value.toggleDetailsFocus();\n }\n resetWidgetSize() {\n this.widget.value.resetPersistedSize();\n }\n forceRenderingAbove() {\n this.widget.value.forceRenderingAbove();\n }\n stopForceRenderingAbove() {\n if (!this.widget.isInitialized) {\n // This method has no effect if the widget is not initialized yet.\n return;\n }\n this.widget.value.stopForceRenderingAbove();\n }\n registerSelector(selector) {\n return this._selectors.register(selector);\n }\n};\nSuggestController.ID = 'editor.contrib.suggestController';\nSuggestController = __decorate([\n __param(1, ISuggestMemoryService),\n __param(2, ICommandService),\n __param(3, IContextKeyService),\n __param(4, IInstantiationService),\n __param(5, ILogService),\n __param(6, ITelemetryService)\n], SuggestController);\nexport { SuggestController };\nclass PriorityRegistry {\n constructor(prioritySelector) {\n this.prioritySelector = prioritySelector;\n this._items = new Array();\n }\n register(value) {\n if (this._items.indexOf(value) !== -1) {\n throw new Error('Value is already registered');\n }\n this._items.push(value);\n this._items.sort((s1, s2) => this.prioritySelector(s2) - this.prioritySelector(s1));\n return {\n dispose: () => {\n const idx = this._items.indexOf(value);\n if (idx >= 0) {\n this._items.splice(idx, 1);\n }\n }\n };\n }\n get itemsOrderedByPriorityDesc() {\n return this._items;\n }\n}\nexport class TriggerSuggestAction extends EditorAction {\n constructor() {\n super({\n id: TriggerSuggestAction.id,\n label: nls.localize('suggest.trigger.label', \"Trigger Suggest\"),\n alias: 'Trigger Suggest',\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider),\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 10 /* KeyCode.Space */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */],\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 10 /* KeyCode.Space */, secondary: [512 /* KeyMod.Alt */ | 9 /* KeyCode.Escape */, 2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */] },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(_accessor, editor, args) {\n const controller = SuggestController.get(editor);\n if (!controller) {\n return;\n }\n let auto;\n let noSelect;\n if (args && typeof args === 'object') {\n if (args.auto === true) {\n auto = true;\n }\n if (args.noSelection === true) {\n noSelect = true;\n }\n }\n controller.triggerSuggest(undefined, auto, undefined, noSelect);\n }\n}\nTriggerSuggestAction.id = 'editor.action.triggerSuggest';\nregisterEditorContribution(SuggestController.ID, SuggestController);\nregisterEditorAction(TriggerSuggestAction);\nconst weight = 100 /* KeybindingWeight.EditorContrib */ + 90;\nconst SuggestCommand = EditorCommand.bindToContribution(SuggestController.get);\nregisterEditorCommand(new SuggestCommand({\n id: 'acceptSelectedSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion),\n handler(x) {\n x.acceptSelectedSuggestion(true, false);\n },\n kbOpts: [{\n // normal tab\n primary: 2 /* KeyCode.Tab */,\n kbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\n weight,\n }, {\n // accept on enter has special rules\n primary: 3 /* KeyCode.Enter */,\n kbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.AcceptSuggestionsOnEnter, SuggestContext.MakesTextEdit),\n weight,\n }],\n menuOpts: [{\n menuId: suggestWidgetStatusbarMenu,\n title: nls.localize('accept.insert', \"Insert\"),\n group: 'left',\n order: 1,\n when: SuggestContext.HasInsertAndReplaceRange.toNegated()\n }, {\n menuId: suggestWidgetStatusbarMenu,\n title: nls.localize('accept.insert', \"Insert\"),\n group: 'left',\n order: 1,\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))\n }, {\n menuId: suggestWidgetStatusbarMenu,\n title: nls.localize('accept.replace', \"Replace\"),\n group: 'left',\n order: 1,\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))\n }]\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'acceptAlternativeSelectedSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.HasFocusedSuggestion),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 1024 /* KeyMod.Shift */ | 3 /* KeyCode.Enter */,\n secondary: [1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */],\n },\n handler(x) {\n x.acceptSelectedSuggestion(false, true);\n },\n menuOpts: [{\n menuId: suggestWidgetStatusbarMenu,\n group: 'left',\n order: 2,\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),\n title: nls.localize('accept.replace', \"Replace\")\n }, {\n menuId: suggestWidgetStatusbarMenu,\n group: 'left',\n order: 2,\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),\n title: nls.localize('accept.insert', \"Insert\")\n }]\n}));\n// continue to support the old command\nCommandsRegistry.registerCommandAlias('acceptSelectedSuggestionOnEnter', 'acceptSelectedSuggestion');\nregisterEditorCommand(new SuggestCommand({\n id: 'hideSuggestWidget',\n precondition: SuggestContext.Visible,\n handler: x => x.cancelSuggestWidget(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'selectNextSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\n handler: c => c.selectNextSuggestion(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 18 /* KeyCode.DownArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */],\n mac: { primary: 18 /* KeyCode.DownArrow */, secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */, 256 /* KeyMod.WinCtrl */ | 44 /* KeyCode.KeyN */] }\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'selectNextPageSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\n handler: c => c.selectNextPageSuggestion(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 12 /* KeyCode.PageDown */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 12 /* KeyCode.PageDown */]\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'selectLastSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\n handler: c => c.selectLastSuggestion()\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'selectPrevSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\n handler: c => c.selectPrevSuggestion(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 16 /* KeyCode.UpArrow */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */],\n mac: { primary: 16 /* KeyCode.UpArrow */, secondary: [2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */, 256 /* KeyMod.WinCtrl */ | 46 /* KeyCode.KeyP */] }\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'selectPrevPageSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\n handler: c => c.selectPrevPageSuggestion(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 11 /* KeyCode.PageUp */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 11 /* KeyCode.PageUp */]\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'selectFirstSuggestion',\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\n handler: c => c.selectFirstSuggestion()\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'toggleSuggestionDetails',\n precondition: SuggestContext.Visible,\n handler: x => x.toggleSuggestionDetails(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 10 /* KeyCode.Space */,\n secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */],\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 10 /* KeyCode.Space */, secondary: [2048 /* KeyMod.CtrlCmd */ | 39 /* KeyCode.KeyI */] }\n },\n menuOpts: [{\n menuId: suggestWidgetStatusbarMenu,\n group: 'right',\n order: 1,\n when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),\n title: nls.localize('detail.more', \"show less\")\n }, {\n menuId: suggestWidgetStatusbarMenu,\n group: 'right',\n order: 1,\n when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),\n title: nls.localize('detail.less', \"show more\")\n }]\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'toggleExplainMode',\n precondition: SuggestContext.Visible,\n handler: x => x.toggleExplainMode(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */,\n primary: 2048 /* KeyMod.CtrlCmd */ | 85 /* KeyCode.Slash */,\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'toggleSuggestionFocus',\n precondition: SuggestContext.Visible,\n handler: x => x.toggleSuggestionFocus(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 512 /* KeyMod.Alt */ | 10 /* KeyCode.Space */,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 10 /* KeyCode.Space */ }\n }\n}));\n//#region tab completions\nregisterEditorCommand(new SuggestCommand({\n id: 'insertBestCompletion',\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), WordContextKey.AtEnd, SuggestContext.Visible.toNegated(), SuggestAlternatives.OtherSuggestions.toNegated(), SnippetController2.InSnippetMode.toNegated()),\n handler: (x, arg) => {\n x.triggerSuggestAndAcceptBest(isObject(arg) ? Object.assign({ fallback: 'tab' }, arg) : { fallback: 'tab' });\n },\n kbOpts: {\n weight,\n primary: 2 /* KeyCode.Tab */\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'insertNextSuggestion',\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\n handler: x => x.acceptNextSuggestion(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2 /* KeyCode.Tab */\n }\n}));\nregisterEditorCommand(new SuggestCommand({\n id: 'insertPrevSuggestion',\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\n handler: x => x.acceptPrevSuggestion(),\n kbOpts: {\n weight: weight,\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */\n }\n}));\nregisterEditorAction(class extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.resetSuggestSize',\n label: nls.localize('suggest.reset.label', \"Reset Suggest Widget Size\"),\n alias: 'Reset Suggest Widget Size',\n precondition: undefined\n });\n }\n run(_accessor, editor) {\n var _a;\n (_a = SuggestController.get(editor)) === null || _a === void 0 ? void 0 : _a.resetWidgetSize();\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { FuzzyScore } from '../../../../base/common/filters.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { RefCountedDisposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { Range } from '../../../common/core/range.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { CompletionItemInsertTextRule } from '../../../common/standalone/standaloneEnums.js';\nimport { CompletionModel, LineContext } from './completionModel.js';\nimport { CompletionOptions, provideSuggestionItems, QuickSuggestionsOptions } from './suggest.js';\nimport { ISuggestMemoryService } from './suggestMemory.js';\nimport { WordDistance } from './wordDistance.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nclass SuggestInlineCompletion {\n constructor(range, insertText, filterText, additionalTextEdits, command, completion) {\n this.range = range;\n this.insertText = insertText;\n this.filterText = filterText;\n this.additionalTextEdits = additionalTextEdits;\n this.command = command;\n this.completion = completion;\n }\n}\nlet InlineCompletionResults = class InlineCompletionResults extends RefCountedDisposable {\n constructor(model, line, word, completionModel, completions, _suggestMemoryService) {\n super(completions.disposable);\n this.model = model;\n this.line = line;\n this.word = word;\n this.completionModel = completionModel;\n this._suggestMemoryService = _suggestMemoryService;\n }\n canBeReused(model, line, word) {\n return this.model === model // same model\n && this.line === line\n && this.word.word.length > 0\n && this.word.startColumn === word.startColumn && this.word.endColumn < word.endColumn // same word\n && this.completionModel.incomplete.size === 0; // no incomplete results\n }\n get items() {\n var _a;\n const result = [];\n // Split items by preselected index. This ensures the memory-selected item shows first and that better/worst\n // ranked items are before/after\n const { items } = this.completionModel;\n const selectedIndex = this._suggestMemoryService.select(this.model, { lineNumber: this.line, column: this.word.endColumn + this.completionModel.lineContext.characterCountDelta }, items);\n const first = Iterable.slice(items, selectedIndex);\n const second = Iterable.slice(items, 0, selectedIndex);\n let resolveCount = 5;\n for (const item of Iterable.concat(first, second)) {\n if (item.score === FuzzyScore.Default) {\n // skip items that have no overlap\n continue;\n }\n const range = new Range(item.editStart.lineNumber, item.editStart.column, item.editInsertEnd.lineNumber, item.editInsertEnd.column + this.completionModel.lineContext.characterCountDelta // end PLUS character delta\n );\n const insertText = item.completion.insertTextRules && (item.completion.insertTextRules & CompletionItemInsertTextRule.InsertAsSnippet)\n ? { snippet: item.completion.insertText }\n : item.completion.insertText;\n result.push(new SuggestInlineCompletion(range, insertText, (_a = item.filterTextLow) !== null && _a !== void 0 ? _a : item.labelLow, item.completion.additionalTextEdits, item.completion.command, item));\n // resolve the first N suggestions eagerly\n if (resolveCount-- >= 0) {\n item.resolve(CancellationToken.None);\n }\n }\n return result;\n }\n};\nInlineCompletionResults = __decorate([\n __param(5, ISuggestMemoryService)\n], InlineCompletionResults);\nlet SuggestInlineCompletions = class SuggestInlineCompletions {\n constructor(_getEditorOption, _languageFeatureService, _clipboardService, _suggestMemoryService) {\n this._getEditorOption = _getEditorOption;\n this._languageFeatureService = _languageFeatureService;\n this._clipboardService = _clipboardService;\n this._suggestMemoryService = _suggestMemoryService;\n }\n provideInlineCompletions(model, position, context, token) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (context.selectedSuggestionInfo) {\n return;\n }\n const config = this._getEditorOption(81 /* EditorOption.quickSuggestions */, model);\n if (QuickSuggestionsOptions.isAllOff(config)) {\n // quick suggest is off (for this model/language)\n return;\n }\n model.tokenization.tokenizeIfCheap(position.lineNumber);\n const lineTokens = model.tokenization.getLineTokens(position.lineNumber);\n const tokenType = lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(position.column - 1 - 1, 0)));\n if (QuickSuggestionsOptions.valueFor(config, tokenType) !== 'inline') {\n // quick suggest is off (for this token)\n return undefined;\n }\n // We consider non-empty leading words and trigger characters. The latter only\n // when no word is being typed (word characters superseed trigger characters)\n let wordInfo = model.getWordAtPosition(position);\n let triggerCharacterInfo;\n if (!(wordInfo === null || wordInfo === void 0 ? void 0 : wordInfo.word)) {\n triggerCharacterInfo = this._getTriggerCharacterInfo(model, position);\n }\n if (!(wordInfo === null || wordInfo === void 0 ? void 0 : wordInfo.word) && !triggerCharacterInfo) {\n // not at word, not a trigger character\n return;\n }\n // ensure that we have word information and that we are at the end of a word\n // otherwise we stop because we don't want to do quick suggestions inside words\n if (!wordInfo) {\n wordInfo = model.getWordUntilPosition(position);\n }\n if (wordInfo.endColumn !== position.column) {\n return;\n }\n let result;\n const leadingLineContents = model.getValueInRange(new Range(position.lineNumber, 1, position.lineNumber, position.column));\n if (!triggerCharacterInfo && ((_a = this._lastResult) === null || _a === void 0 ? void 0 : _a.canBeReused(model, position.lineNumber, wordInfo))) {\n // reuse a previous result iff possible, only a refilter is needed\n // TODO@jrieken this can be improved further and only incomplete results can be updated\n // console.log(`REUSE with ${wordInfo.word}`);\n const newLineContext = new LineContext(leadingLineContents, position.column - this._lastResult.word.endColumn);\n this._lastResult.completionModel.lineContext = newLineContext;\n this._lastResult.acquire();\n result = this._lastResult;\n }\n else {\n // refesh model is required\n const completions = yield provideSuggestionItems(this._languageFeatureService.completionProvider, model, position, new CompletionOptions(undefined, undefined, triggerCharacterInfo === null || triggerCharacterInfo === void 0 ? void 0 : triggerCharacterInfo.providers), triggerCharacterInfo && { triggerKind: 1 /* CompletionTriggerKind.TriggerCharacter */, triggerCharacter: triggerCharacterInfo.ch }, token);\n let clipboardText;\n if (completions.needsClipboard) {\n clipboardText = yield this._clipboardService.readText();\n }\n const completionModel = new CompletionModel(completions.items, position.column, new LineContext(leadingLineContents, 0), WordDistance.None, this._getEditorOption(108 /* EditorOption.suggest */, model), this._getEditorOption(103 /* EditorOption.snippetSuggestions */, model), { boostFullMatch: false, firstMatchCanBeWeak: false }, clipboardText);\n result = new InlineCompletionResults(model, position.lineNumber, wordInfo, completionModel, completions, this._suggestMemoryService);\n }\n this._lastResult = result;\n return result;\n });\n }\n handleItemDidShow(_completions, item) {\n item.completion.resolve(CancellationToken.None);\n }\n freeInlineCompletions(result) {\n result.release();\n }\n _getTriggerCharacterInfo(model, position) {\n var _a;\n const ch = model.getValueInRange(Range.fromPositions({ lineNumber: position.lineNumber, column: position.column - 1 }, position));\n const providers = new Set();\n for (const provider of this._languageFeatureService.completionProvider.all(model)) {\n if ((_a = provider.triggerCharacters) === null || _a === void 0 ? void 0 : _a.includes(ch)) {\n providers.add(provider);\n }\n }\n if (providers.size === 0) {\n return undefined;\n }\n return { providers, ch };\n }\n};\nSuggestInlineCompletions = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, IClipboardService),\n __param(3, ISuggestMemoryService)\n], SuggestInlineCompletions);\nexport { SuggestInlineCompletions };\nlet EditorContribution = class EditorContribution {\n constructor(_editor, languageFeatureService, editorService, instaService) {\n // HACK - way to contribute something only once\n if (++EditorContribution._counter === 1) {\n const provider = instaService.createInstance(SuggestInlineCompletions, (id, model) => {\n var _a;\n // HACK - reuse the editor options world outside from a \"normal\" contribution\n const editor = (_a = editorService.listCodeEditors().find(editor => editor.getModel() === model)) !== null && _a !== void 0 ? _a : _editor;\n return editor.getOption(id);\n });\n EditorContribution._disposable = languageFeatureService.inlineCompletionsProvider.register('*', provider);\n }\n }\n dispose() {\n var _a;\n if (--EditorContribution._counter === 0) {\n (_a = EditorContribution._disposable) === null || _a === void 0 ? void 0 : _a.dispose();\n EditorContribution._disposable = undefined;\n }\n }\n};\nEditorContribution._counter = 0;\nEditorContribution = __decorate([\n __param(1, ILanguageFeaturesService),\n __param(2, ICodeEditorService),\n __param(3, IInstantiationService)\n], EditorContribution);\nregisterEditorContribution('suggest.inlineCompletionsProvider', EditorContribution);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { LRUCache, TernarySearchTree } from '../../../../base/common/map.js';\nimport { CompletionItemKinds } from '../../../common/languages.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { registerSingleton } from '../../../../platform/instantiation/common/extensions.js';\nimport { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IStorageService, WillSaveStateReason } from '../../../../platform/storage/common/storage.js';\nexport class Memory {\n constructor(name) {\n this.name = name;\n }\n select(model, pos, items) {\n if (items.length === 0) {\n return 0;\n }\n const topScore = items[0].score[0];\n for (let i = 0; i < items.length; i++) {\n const { score, completion: suggestion } = items[i];\n if (score[0] !== topScore) {\n // stop when leaving the group of top matches\n break;\n }\n if (suggestion.preselect) {\n // stop when seeing an auto-select-item\n return i;\n }\n }\n return 0;\n }\n}\nexport class NoMemory extends Memory {\n constructor() {\n super('first');\n }\n memorize(model, pos, item) {\n // no-op\n }\n toJSON() {\n return undefined;\n }\n fromJSON() {\n //\n }\n}\nexport class LRUMemory extends Memory {\n constructor() {\n super('recentlyUsed');\n this._cache = new LRUCache(300, 0.66);\n this._seq = 0;\n }\n memorize(model, pos, item) {\n const key = `${model.getLanguageId()}/${item.textLabel}`;\n this._cache.set(key, {\n touch: this._seq++,\n type: item.completion.kind,\n insertText: item.completion.insertText\n });\n }\n select(model, pos, items) {\n if (items.length === 0) {\n return 0;\n }\n const lineSuffix = model.getLineContent(pos.lineNumber).substr(pos.column - 10, pos.column - 1);\n if (/\\s$/.test(lineSuffix)) {\n return super.select(model, pos, items);\n }\n const topScore = items[0].score[0];\n let indexPreselect = -1;\n let indexRecency = -1;\n let seq = -1;\n for (let i = 0; i < items.length; i++) {\n if (items[i].score[0] !== topScore) {\n // consider only top items\n break;\n }\n const key = `${model.getLanguageId()}/${items[i].textLabel}`;\n const item = this._cache.peek(key);\n if (item && item.touch > seq && item.type === items[i].completion.kind && item.insertText === items[i].completion.insertText) {\n seq = item.touch;\n indexRecency = i;\n }\n if (items[i].completion.preselect && indexPreselect === -1) {\n // stop when seeing an auto-select-item\n return indexPreselect = i;\n }\n }\n if (indexRecency !== -1) {\n return indexRecency;\n }\n else if (indexPreselect !== -1) {\n return indexPreselect;\n }\n else {\n return 0;\n }\n }\n toJSON() {\n return this._cache.toJSON();\n }\n fromJSON(data) {\n this._cache.clear();\n const seq = 0;\n for (const [key, value] of data) {\n value.touch = seq;\n value.type = typeof value.type === 'number' ? value.type : CompletionItemKinds.fromString(value.type);\n this._cache.set(key, value);\n }\n this._seq = this._cache.size;\n }\n}\nexport class PrefixMemory extends Memory {\n constructor() {\n super('recentlyUsedByPrefix');\n this._trie = TernarySearchTree.forStrings();\n this._seq = 0;\n }\n memorize(model, pos, item) {\n const { word } = model.getWordUntilPosition(pos);\n const key = `${model.getLanguageId()}/${word}`;\n this._trie.set(key, {\n type: item.completion.kind,\n insertText: item.completion.insertText,\n touch: this._seq++\n });\n }\n select(model, pos, items) {\n const { word } = model.getWordUntilPosition(pos);\n if (!word) {\n return super.select(model, pos, items);\n }\n const key = `${model.getLanguageId()}/${word}`;\n let item = this._trie.get(key);\n if (!item) {\n item = this._trie.findSubstr(key);\n }\n if (item) {\n for (let i = 0; i < items.length; i++) {\n const { kind, insertText } = items[i].completion;\n if (kind === item.type && insertText === item.insertText) {\n return i;\n }\n }\n }\n return super.select(model, pos, items);\n }\n toJSON() {\n const entries = [];\n this._trie.forEach((value, key) => entries.push([key, value]));\n // sort by last recently used (touch), then\n // take the top 200 item and normalize their\n // touch\n entries\n .sort((a, b) => -(a[1].touch - b[1].touch))\n .forEach((value, i) => value[1].touch = i);\n return entries.slice(0, 200);\n }\n fromJSON(data) {\n this._trie.clear();\n if (data.length > 0) {\n this._seq = data[0][1].touch + 1;\n for (const [key, value] of data) {\n value.type = typeof value.type === 'number' ? value.type : CompletionItemKinds.fromString(value.type);\n this._trie.set(key, value);\n }\n }\n }\n}\nlet SuggestMemoryService = class SuggestMemoryService {\n constructor(_storageService, _configService) {\n this._storageService = _storageService;\n this._configService = _configService;\n this._disposables = new DisposableStore();\n this._persistSoon = new RunOnceScheduler(() => this._saveState(), 500);\n this._disposables.add(_storageService.onWillSaveState(e => {\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\n this._saveState();\n }\n }));\n }\n dispose() {\n this._disposables.dispose();\n this._persistSoon.dispose();\n }\n memorize(model, pos, item) {\n this._withStrategy(model, pos).memorize(model, pos, item);\n this._persistSoon.schedule();\n }\n select(model, pos, items) {\n return this._withStrategy(model, pos).select(model, pos, items);\n }\n _withStrategy(model, pos) {\n var _a;\n const mode = this._configService.getValue('editor.suggestSelection', {\n overrideIdentifier: model.getLanguageIdAtPosition(pos.lineNumber, pos.column),\n resource: model.uri\n });\n if (((_a = this._strategy) === null || _a === void 0 ? void 0 : _a.name) !== mode) {\n this._saveState();\n const ctor = SuggestMemoryService._strategyCtors.get(mode) || NoMemory;\n this._strategy = new ctor();\n try {\n const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\n const scope = share ? 0 /* StorageScope.PROFILE */ : 1 /* StorageScope.WORKSPACE */;\n const raw = this._storageService.get(`${SuggestMemoryService._storagePrefix}/${mode}`, scope);\n if (raw) {\n this._strategy.fromJSON(JSON.parse(raw));\n }\n }\n catch (e) {\n // things can go wrong with JSON...\n }\n }\n return this._strategy;\n }\n _saveState() {\n if (this._strategy) {\n const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\n const scope = share ? 0 /* StorageScope.PROFILE */ : 1 /* StorageScope.WORKSPACE */;\n const raw = JSON.stringify(this._strategy);\n this._storageService.store(`${SuggestMemoryService._storagePrefix}/${this._strategy.name}`, raw, scope, 1 /* StorageTarget.MACHINE */);\n }\n }\n};\nSuggestMemoryService._strategyCtors = new Map([\n ['recentlyUsedByPrefix', PrefixMemory],\n ['recentlyUsed', LRUMemory],\n ['first', NoMemory]\n]);\nSuggestMemoryService._storagePrefix = 'suggest/memories';\nSuggestMemoryService = __decorate([\n __param(0, IStorageService),\n __param(1, IConfigurationService)\n], SuggestMemoryService);\nexport { SuggestMemoryService };\nexport const ISuggestMemoryService = createDecorator('ISuggestMemories');\nregisterSingleton(ISuggestMemoryService, SuggestMemoryService, true);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { binarySearch, isFalsyOrEmpty } from '../../../../base/common/arrays.js';\nimport { Range } from '../../../common/core/range.js';\nimport { BracketSelectionRangeProvider } from '../../smartSelect/browser/bracketSelections.js';\nexport class WordDistance {\n static create(service, editor) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!editor.getOption(108 /* EditorOption.suggest */).localityBonus) {\n return WordDistance.None;\n }\n if (!editor.hasModel()) {\n return WordDistance.None;\n }\n const model = editor.getModel();\n const position = editor.getPosition();\n if (!service.canComputeWordRanges(model.uri)) {\n return WordDistance.None;\n }\n const [ranges] = yield new BracketSelectionRangeProvider().provideSelectionRanges(model, [position]);\n if (ranges.length === 0) {\n return WordDistance.None;\n }\n const wordRanges = yield service.computeWordRanges(model.uri, ranges[0].range);\n if (!wordRanges) {\n return WordDistance.None;\n }\n // remove current word\n const wordUntilPos = model.getWordUntilPosition(position);\n delete wordRanges[wordUntilPos.word];\n return new class extends WordDistance {\n distance(anchor, item) {\n if (!position.equals(editor.getPosition())) {\n return 0;\n }\n if (item.kind === 17 /* CompletionItemKind.Keyword */) {\n return 2 << 20;\n }\n const word = typeof item.label === 'string' ? item.label : item.label.label;\n const wordLines = wordRanges[word];\n if (isFalsyOrEmpty(wordLines)) {\n return 2 << 20;\n }\n const idx = binarySearch(wordLines, Range.fromPositions(anchor), Range.compareRangesUsingStarts);\n const bestWordRange = idx >= 0 ? wordLines[idx] : wordLines[Math.max(0, ~idx - 1)];\n let blockDistance = ranges.length;\n for (const range of ranges) {\n if (!Range.containsRange(range.range, bestWordRange)) {\n break;\n }\n blockDistance -= 1;\n }\n return blockDistance;\n }\n };\n });\n }\n}\nWordDistance.None = new class extends WordDistance {\n distance() { return 0; }\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { localize } from '../../../../nls.js';\nimport { foreground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nexport const SYMBOL_ICON_ARRAY_FOREGROUND = registerColor('symbolIcon.arrayForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground,\n}, localize('symbolIcon.arrayForeground', 'The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_BOOLEAN_FOREGROUND = registerColor('symbolIcon.booleanForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground,\n}, localize('symbolIcon.booleanForeground', 'The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_CLASS_FOREGROUND = registerColor('symbolIcon.classForeground', {\n dark: '#EE9D28',\n light: '#D67E00',\n hcDark: '#EE9D28',\n hcLight: '#D67E00'\n}, localize('symbolIcon.classForeground', 'The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_COLOR_FOREGROUND = registerColor('symbolIcon.colorForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.colorForeground', 'The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_CONSTANT_FOREGROUND = registerColor('symbolIcon.constantForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.constantForeground', 'The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_CONSTRUCTOR_FOREGROUND = registerColor('symbolIcon.constructorForeground', {\n dark: '#B180D7',\n light: '#652D90',\n hcDark: '#B180D7',\n hcLight: '#652D90'\n}, localize('symbolIcon.constructorForeground', 'The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_ENUMERATOR_FOREGROUND = registerColor('symbolIcon.enumeratorForeground', {\n dark: '#EE9D28',\n light: '#D67E00',\n hcDark: '#EE9D28',\n hcLight: '#D67E00'\n}, localize('symbolIcon.enumeratorForeground', 'The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND = registerColor('symbolIcon.enumeratorMemberForeground', {\n dark: '#75BEFF',\n light: '#007ACC',\n hcDark: '#75BEFF',\n hcLight: '#007ACC'\n}, localize('symbolIcon.enumeratorMemberForeground', 'The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_EVENT_FOREGROUND = registerColor('symbolIcon.eventForeground', {\n dark: '#EE9D28',\n light: '#D67E00',\n hcDark: '#EE9D28',\n hcLight: '#D67E00'\n}, localize('symbolIcon.eventForeground', 'The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FIELD_FOREGROUND = registerColor('symbolIcon.fieldForeground', {\n dark: '#75BEFF',\n light: '#007ACC',\n hcDark: '#75BEFF',\n hcLight: '#007ACC'\n}, localize('symbolIcon.fieldForeground', 'The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FILE_FOREGROUND = registerColor('symbolIcon.fileForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.fileForeground', 'The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FOLDER_FOREGROUND = registerColor('symbolIcon.folderForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.folderForeground', 'The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_FUNCTION_FOREGROUND = registerColor('symbolIcon.functionForeground', {\n dark: '#B180D7',\n light: '#652D90',\n hcDark: '#B180D7',\n hcLight: '#652D90'\n}, localize('symbolIcon.functionForeground', 'The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_INTERFACE_FOREGROUND = registerColor('symbolIcon.interfaceForeground', {\n dark: '#75BEFF',\n light: '#007ACC',\n hcDark: '#75BEFF',\n hcLight: '#007ACC'\n}, localize('symbolIcon.interfaceForeground', 'The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_KEY_FOREGROUND = registerColor('symbolIcon.keyForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.keyForeground', 'The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_KEYWORD_FOREGROUND = registerColor('symbolIcon.keywordForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.keywordForeground', 'The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_METHOD_FOREGROUND = registerColor('symbolIcon.methodForeground', {\n dark: '#B180D7',\n light: '#652D90',\n hcDark: '#B180D7',\n hcLight: '#652D90'\n}, localize('symbolIcon.methodForeground', 'The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_MODULE_FOREGROUND = registerColor('symbolIcon.moduleForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.moduleForeground', 'The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_NAMESPACE_FOREGROUND = registerColor('symbolIcon.namespaceForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.namespaceForeground', 'The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_NULL_FOREGROUND = registerColor('symbolIcon.nullForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.nullForeground', 'The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_NUMBER_FOREGROUND = registerColor('symbolIcon.numberForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.numberForeground', 'The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_OBJECT_FOREGROUND = registerColor('symbolIcon.objectForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.objectForeground', 'The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_OPERATOR_FOREGROUND = registerColor('symbolIcon.operatorForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.operatorForeground', 'The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_PACKAGE_FOREGROUND = registerColor('symbolIcon.packageForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.packageForeground', 'The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_PROPERTY_FOREGROUND = registerColor('symbolIcon.propertyForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.propertyForeground', 'The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_REFERENCE_FOREGROUND = registerColor('symbolIcon.referenceForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.referenceForeground', 'The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_SNIPPET_FOREGROUND = registerColor('symbolIcon.snippetForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.snippetForeground', 'The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_STRING_FOREGROUND = registerColor('symbolIcon.stringForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.stringForeground', 'The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_STRUCT_FOREGROUND = registerColor('symbolIcon.structForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground,\n}, localize('symbolIcon.structForeground', 'The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_TEXT_FOREGROUND = registerColor('symbolIcon.textForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.textForeground', 'The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_TYPEPARAMETER_FOREGROUND = registerColor('symbolIcon.typeParameterForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.typeParameterForeground', 'The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_UNIT_FOREGROUND = registerColor('symbolIcon.unitForeground', {\n dark: foreground,\n light: foreground,\n hcDark: foreground,\n hcLight: foreground\n}, localize('symbolIcon.unitForeground', 'The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nexport const SYMBOL_ICON_VARIABLE_FOREGROUND = registerColor('symbolIcon.variableForeground', {\n dark: '#75BEFF',\n light: '#007ACC',\n hcDark: '#75BEFF',\n hcLight: '#007ACC',\n}, localize('symbolIcon.variableForeground', 'The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\nregisterThemingParticipant((theme, collector) => {\n const symbolIconArrayColor = theme.getColor(SYMBOL_ICON_ARRAY_FOREGROUND);\n if (symbolIconArrayColor) {\n collector.addRule(`${Codicon.symbolArray.cssSelector} { color: ${symbolIconArrayColor}; }`);\n }\n const symbolIconBooleanColor = theme.getColor(SYMBOL_ICON_BOOLEAN_FOREGROUND);\n if (symbolIconBooleanColor) {\n collector.addRule(`${Codicon.symbolBoolean.cssSelector} { color: ${symbolIconBooleanColor}; }`);\n }\n const symbolIconClassColor = theme.getColor(SYMBOL_ICON_CLASS_FOREGROUND);\n if (symbolIconClassColor) {\n collector.addRule(`${Codicon.symbolClass.cssSelector} { color: ${symbolIconClassColor}; }`);\n }\n const symbolIconMethodColor = theme.getColor(SYMBOL_ICON_METHOD_FOREGROUND);\n if (symbolIconMethodColor) {\n collector.addRule(`${Codicon.symbolMethod.cssSelector} { color: ${symbolIconMethodColor}; }`);\n }\n const symbolIconColorColor = theme.getColor(SYMBOL_ICON_COLOR_FOREGROUND);\n if (symbolIconColorColor) {\n collector.addRule(`${Codicon.symbolColor.cssSelector} { color: ${symbolIconColorColor}; }`);\n }\n const symbolIconConstantColor = theme.getColor(SYMBOL_ICON_CONSTANT_FOREGROUND);\n if (symbolIconConstantColor) {\n collector.addRule(`${Codicon.symbolConstant.cssSelector} { color: ${symbolIconConstantColor}; }`);\n }\n const symbolIconConstructorColor = theme.getColor(SYMBOL_ICON_CONSTRUCTOR_FOREGROUND);\n if (symbolIconConstructorColor) {\n collector.addRule(`${Codicon.symbolConstructor.cssSelector} { color: ${symbolIconConstructorColor}; }`);\n }\n const symbolIconEnumeratorColor = theme.getColor(SYMBOL_ICON_ENUMERATOR_FOREGROUND);\n if (symbolIconEnumeratorColor) {\n collector.addRule(`\n\t\t\t${Codicon.symbolValue.cssSelector},${Codicon.symbolEnum.cssSelector} { color: ${symbolIconEnumeratorColor}; }`);\n }\n const symbolIconEnumeratorMemberColor = theme.getColor(SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND);\n if (symbolIconEnumeratorMemberColor) {\n collector.addRule(`${Codicon.symbolEnumMember.cssSelector} { color: ${symbolIconEnumeratorMemberColor}; }`);\n }\n const symbolIconEventColor = theme.getColor(SYMBOL_ICON_EVENT_FOREGROUND);\n if (symbolIconEventColor) {\n collector.addRule(`${Codicon.symbolEvent.cssSelector} { color: ${symbolIconEventColor}; }`);\n }\n const symbolIconFieldColor = theme.getColor(SYMBOL_ICON_FIELD_FOREGROUND);\n if (symbolIconFieldColor) {\n collector.addRule(`${Codicon.symbolField.cssSelector} { color: ${symbolIconFieldColor}; }`);\n }\n const symbolIconFileColor = theme.getColor(SYMBOL_ICON_FILE_FOREGROUND);\n if (symbolIconFileColor) {\n collector.addRule(`${Codicon.symbolFile.cssSelector} { color: ${symbolIconFileColor}; }`);\n }\n const symbolIconFolderColor = theme.getColor(SYMBOL_ICON_FOLDER_FOREGROUND);\n if (symbolIconFolderColor) {\n collector.addRule(`${Codicon.symbolFolder.cssSelector} { color: ${symbolIconFolderColor}; }`);\n }\n const symbolIconFunctionColor = theme.getColor(SYMBOL_ICON_FUNCTION_FOREGROUND);\n if (symbolIconFunctionColor) {\n collector.addRule(`${Codicon.symbolFunction.cssSelector} { color: ${symbolIconFunctionColor}; }`);\n }\n const symbolIconInterfaceColor = theme.getColor(SYMBOL_ICON_INTERFACE_FOREGROUND);\n if (symbolIconInterfaceColor) {\n collector.addRule(`${Codicon.symbolInterface.cssSelector} { color: ${symbolIconInterfaceColor}; }`);\n }\n const symbolIconKeyColor = theme.getColor(SYMBOL_ICON_KEY_FOREGROUND);\n if (symbolIconKeyColor) {\n collector.addRule(`${Codicon.symbolKey.cssSelector} { color: ${symbolIconKeyColor}; }`);\n }\n const symbolIconKeywordColor = theme.getColor(SYMBOL_ICON_KEYWORD_FOREGROUND);\n if (symbolIconKeywordColor) {\n collector.addRule(`${Codicon.symbolKeyword.cssSelector} { color: ${symbolIconKeywordColor}; }`);\n }\n const symbolIconModuleColor = theme.getColor(SYMBOL_ICON_MODULE_FOREGROUND);\n if (symbolIconModuleColor) {\n collector.addRule(`${Codicon.symbolModule.cssSelector} { color: ${symbolIconModuleColor}; }`);\n }\n const outlineNamespaceColor = theme.getColor(SYMBOL_ICON_NAMESPACE_FOREGROUND);\n if (outlineNamespaceColor) {\n collector.addRule(`${Codicon.symbolNamespace.cssSelector} { color: ${outlineNamespaceColor}; }`);\n }\n const symbolIconNullColor = theme.getColor(SYMBOL_ICON_NULL_FOREGROUND);\n if (symbolIconNullColor) {\n collector.addRule(`${Codicon.symbolNull.cssSelector} { color: ${symbolIconNullColor}; }`);\n }\n const symbolIconNumberColor = theme.getColor(SYMBOL_ICON_NUMBER_FOREGROUND);\n if (symbolIconNumberColor) {\n collector.addRule(`${Codicon.symbolNumber.cssSelector} { color: ${symbolIconNumberColor}; }`);\n }\n const symbolIconObjectColor = theme.getColor(SYMBOL_ICON_OBJECT_FOREGROUND);\n if (symbolIconObjectColor) {\n collector.addRule(`${Codicon.symbolObject.cssSelector} { color: ${symbolIconObjectColor}; }`);\n }\n const symbolIconOperatorColor = theme.getColor(SYMBOL_ICON_OPERATOR_FOREGROUND);\n if (symbolIconOperatorColor) {\n collector.addRule(`${Codicon.symbolOperator.cssSelector} { color: ${symbolIconOperatorColor}; }`);\n }\n const symbolIconPackageColor = theme.getColor(SYMBOL_ICON_PACKAGE_FOREGROUND);\n if (symbolIconPackageColor) {\n collector.addRule(`${Codicon.symbolPackage.cssSelector} { color: ${symbolIconPackageColor}; }`);\n }\n const symbolIconPropertyColor = theme.getColor(SYMBOL_ICON_PROPERTY_FOREGROUND);\n if (symbolIconPropertyColor) {\n collector.addRule(`${Codicon.symbolProperty.cssSelector} { color: ${symbolIconPropertyColor}; }`);\n }\n const symbolIconReferenceColor = theme.getColor(SYMBOL_ICON_REFERENCE_FOREGROUND);\n if (symbolIconReferenceColor) {\n collector.addRule(`${Codicon.symbolReference.cssSelector} { color: ${symbolIconReferenceColor}; }`);\n }\n const symbolIconSnippetColor = theme.getColor(SYMBOL_ICON_SNIPPET_FOREGROUND);\n if (symbolIconSnippetColor) {\n collector.addRule(`${Codicon.symbolSnippet.cssSelector} { color: ${symbolIconSnippetColor}; }`);\n }\n const symbolIconStringColor = theme.getColor(SYMBOL_ICON_STRING_FOREGROUND);\n if (symbolIconStringColor) {\n collector.addRule(`${Codicon.symbolString.cssSelector} { color: ${symbolIconStringColor}; }`);\n }\n const symbolIconStructColor = theme.getColor(SYMBOL_ICON_STRUCT_FOREGROUND);\n if (symbolIconStructColor) {\n collector.addRule(`${Codicon.symbolStruct.cssSelector} { color: ${symbolIconStructColor}; }`);\n }\n const symbolIconTextColor = theme.getColor(SYMBOL_ICON_TEXT_FOREGROUND);\n if (symbolIconTextColor) {\n collector.addRule(`${Codicon.symbolText.cssSelector} { color: ${symbolIconTextColor}; }`);\n }\n const symbolIconTypeParameterColor = theme.getColor(SYMBOL_ICON_TYPEPARAMETER_FOREGROUND);\n if (symbolIconTypeParameterColor) {\n collector.addRule(`${Codicon.symbolTypeParameter.cssSelector} { color: ${symbolIconTypeParameterColor}; }`);\n }\n const symbolIconUnitColor = theme.getColor(SYMBOL_ICON_UNIT_FOREGROUND);\n if (symbolIconUnitColor) {\n collector.addRule(`${Codicon.symbolUnit.cssSelector} { color: ${symbolIconUnitColor}; }`);\n }\n const symbolIconVariableColor = theme.getColor(SYMBOL_ICON_VARIABLE_FOREGROUND);\n if (symbolIconVariableColor) {\n collector.addRule(`${Codicon.symbolVariable.cssSelector} { color: ${symbolIconVariableColor}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { TabFocus } from '../../../browser/config/tabFocus.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport * as nls from '../../../../nls.js';\nexport class ToggleTabFocusModeAction extends EditorAction {\n constructor() {\n super({\n id: ToggleTabFocusModeAction.ID,\n label: nls.localize({ key: 'toggle.tabMovesFocus', comment: ['Turn on/off use of tab key for moving focus around VS Code'] }, \"Toggle Tab Key Moves Focus\"),\n alias: 'Toggle Tab Key Moves Focus',\n precondition: undefined,\n kbOpts: {\n kbExpr: null,\n primary: 2048 /* KeyMod.CtrlCmd */ | 43 /* KeyCode.KeyM */,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 1024 /* KeyMod.Shift */ | 43 /* KeyCode.KeyM */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n const oldValue = TabFocus.getTabFocusMode();\n const newValue = !oldValue;\n TabFocus.setTabFocusMode(newValue);\n if (newValue) {\n alert(nls.localize('toggle.tabMovesFocus.on', \"Pressing Tab will now move focus to the next focusable element\"));\n }\n else {\n alert(nls.localize('toggle.tabMovesFocus.off', \"Pressing Tab will now insert the tab character\"));\n }\n }\n}\nToggleTabFocusModeAction.ID = 'editor.action.toggleTabFocusMode';\nregisterEditorAction(ToggleTabFocusModeAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport * as nls from '../../../../nls.js';\nclass ForceRetokenizeAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.forceRetokenize',\n label: nls.localize('forceRetokenize', \"Developer: Force Retokenize\"),\n alias: 'Developer: Force Retokenize',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n if (!editor.hasModel()) {\n return;\n }\n const model = editor.getModel();\n model.tokenization.resetTokenization();\n const sw = new StopWatch(true);\n model.tokenization.forceTokenization(model.getLineCount());\n sw.stop();\n console.log(`tokenization took ${sw.elapsed()}`);\n }\n}\nregisterEditorAction(ForceRetokenizeAction);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { $, append, EventHelper } from '../../../base/browser/dom.js';\nimport { DomEmitter } from '../../../base/browser/event.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { EventType as TouchEventType, Gesture } from '../../../base/browser/touch.js';\nimport { Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { IOpenerService } from '../common/opener.js';\nimport { textLinkActiveForeground, textLinkForeground } from '../../theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../theme/common/themeService.js';\nlet Link = class Link extends Disposable {\n constructor(container, _link, options = {}, openerService) {\n var _a;\n super();\n this._link = _link;\n this._enabled = true;\n this.el = append(container, $('a.monaco-link', {\n tabIndex: (_a = _link.tabIndex) !== null && _a !== void 0 ? _a : 0,\n href: _link.href,\n title: _link.title\n }, _link.label));\n this.el.setAttribute('role', 'button');\n const onClickEmitter = this._register(new DomEmitter(this.el, 'click'));\n const onKeyPress = this._register(new DomEmitter(this.el, 'keypress'));\n const onEnterPress = Event.chain(onKeyPress.event)\n .map(e => new StandardKeyboardEvent(e))\n .filter(e => e.keyCode === 3 /* KeyCode.Enter */)\n .event;\n const onTap = this._register(new DomEmitter(this.el, TouchEventType.Tap)).event;\n this._register(Gesture.addTarget(this.el));\n const onOpen = Event.any(onClickEmitter.event, onEnterPress, onTap);\n this._register(onOpen(e => {\n if (!this.enabled) {\n return;\n }\n EventHelper.stop(e, true);\n if (options === null || options === void 0 ? void 0 : options.opener) {\n options.opener(this._link.href);\n }\n else {\n openerService.open(this._link.href, { allowCommands: true });\n }\n }));\n this.enabled = true;\n }\n get enabled() {\n return this._enabled;\n }\n set enabled(enabled) {\n if (enabled) {\n this.el.setAttribute('aria-disabled', 'false');\n this.el.tabIndex = 0;\n this.el.style.pointerEvents = 'auto';\n this.el.style.opacity = '1';\n this.el.style.cursor = 'pointer';\n this._enabled = false;\n }\n else {\n this.el.setAttribute('aria-disabled', 'true');\n this.el.tabIndex = -1;\n this.el.style.pointerEvents = 'none';\n this.el.style.opacity = '0.4';\n this.el.style.cursor = 'default';\n this._enabled = true;\n }\n this._enabled = enabled;\n }\n};\nLink = __decorate([\n __param(3, IOpenerService)\n], Link);\nexport { Link };\nregisterThemingParticipant((theme, collector) => {\n const textLinkForegroundColor = theme.getColor(textLinkForeground);\n if (textLinkForegroundColor) {\n collector.addRule(`.monaco-link { color: ${textLinkForegroundColor}; }`);\n }\n const textLinkActiveForegroundColor = theme.getColor(textLinkActiveForeground);\n if (textLinkActiveForegroundColor) {\n collector.addRule(`.monaco-link:hover { color: ${textLinkActiveForegroundColor}; }`);\n }\n});\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport './bannerController.css';\nimport { $, append, clearNode } from '../../../../base/browser/dom.js';\nimport { ActionBar } from '../../../../base/browser/ui/actionbar/actionbar.js';\nimport { Action } from '../../../../base/common/actions.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../markdownRenderer/browser/markdownRenderer.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { Link } from '../../../../platform/opener/browser/link.js';\nimport { widgetClose } from '../../../../platform/theme/common/iconRegistry.js';\nimport { ThemeIcon } from '../../../../platform/theme/common/themeService.js';\nconst BANNER_ELEMENT_HEIGHT = 26;\nlet BannerController = class BannerController extends Disposable {\n constructor(_editor, instantiationService) {\n super();\n this._editor = _editor;\n this.instantiationService = instantiationService;\n this.banner = this._register(this.instantiationService.createInstance(Banner));\n }\n hide() {\n this._editor.setBanner(null, 0);\n this.banner.clear();\n }\n show(item) {\n this.banner.show(Object.assign(Object.assign({}, item), { onClose: () => {\n var _a;\n this.hide();\n (_a = item.onClose) === null || _a === void 0 ? void 0 : _a.call(item);\n } }));\n this._editor.setBanner(this.banner.element, BANNER_ELEMENT_HEIGHT);\n }\n};\nBannerController = __decorate([\n __param(1, IInstantiationService)\n], BannerController);\nexport { BannerController };\n// TODO@hediet: Investigate if this can be reused by the workspace banner (bannerPart.ts).\nlet Banner = class Banner extends Disposable {\n constructor(instantiationService) {\n super();\n this.instantiationService = instantiationService;\n this.markdownRenderer = this.instantiationService.createInstance(MarkdownRenderer, {});\n this.element = $('div.editor-banner');\n this.element.tabIndex = 0;\n }\n getAriaLabel(item) {\n if (item.ariaLabel) {\n return item.ariaLabel;\n }\n if (typeof item.message === 'string') {\n return item.message;\n }\n return undefined;\n }\n getBannerMessage(message) {\n if (typeof message === 'string') {\n const element = $('span');\n element.innerText = message;\n return element;\n }\n return this.markdownRenderer.render(message).element;\n }\n clear() {\n clearNode(this.element);\n }\n show(item) {\n // Clear previous item\n clearNode(this.element);\n // Banner aria label\n const ariaLabel = this.getAriaLabel(item);\n if (ariaLabel) {\n this.element.setAttribute('aria-label', ariaLabel);\n }\n // Icon\n const iconContainer = append(this.element, $('div.icon-container'));\n iconContainer.setAttribute('aria-hidden', 'true');\n if (item.icon) {\n iconContainer.appendChild($(`div${ThemeIcon.asCSSSelector(item.icon)}`));\n }\n // Message\n const messageContainer = append(this.element, $('div.message-container'));\n messageContainer.setAttribute('aria-hidden', 'true');\n messageContainer.appendChild(this.getBannerMessage(item.message));\n // Message Actions\n this.messageActionsContainer = append(this.element, $('div.message-actions-container'));\n if (item.actions) {\n for (const action of item.actions) {\n this._register(this.instantiationService.createInstance(Link, this.messageActionsContainer, Object.assign(Object.assign({}, action), { tabIndex: -1 }), {}));\n }\n }\n // Action\n const actionBarContainer = append(this.element, $('div.action-container'));\n this.actionBar = this._register(new ActionBar(actionBarContainer));\n this.actionBar.push(this._register(new Action('banner.close', 'Close Banner', ThemeIcon.asClassName(widgetClose), true, () => {\n if (typeof item.onClose === 'function') {\n item.onClose();\n }\n })), { icon: true, label: false });\n this.actionBar.setFocusable(false);\n }\n};\nBanner = __decorate([\n __param(0, IInstantiationService)\n], Banner);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { InvisibleCharacters } from '../../../../base/common/strings.js';\nimport './unicodeHighlighter.css';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { inUntrustedWorkspace, unicodeHighlightConfigKeys } from '../../../common/config/editorOptions.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { UnicodeTextModelHighlighter } from '../../../common/services/unicodeTextModelHighlighter.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { isModelDecorationInComment, isModelDecorationInString, isModelDecorationVisible } from '../../../common/viewModel/viewModelDecorations.js';\nimport { HoverParticipantRegistry } from '../../hover/browser/hoverTypes.js';\nimport { MarkdownHover, renderMarkdownHovers } from '../../hover/browser/markdownHoverParticipant.js';\nimport { BannerController } from './bannerController.js';\nimport * as nls from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { IWorkspaceTrustManagementService } from '../../../../platform/workspace/common/workspaceTrust.js';\nexport const warningIcon = registerIcon('extensions-warning-message', Codicon.warning, nls.localize('warningIcon', 'Icon shown with a warning message in the extensions editor.'));\nlet UnicodeHighlighter = class UnicodeHighlighter extends Disposable {\n constructor(_editor, _editorWorkerService, _workspaceTrustService, instantiationService) {\n super();\n this._editor = _editor;\n this._editorWorkerService = _editorWorkerService;\n this._workspaceTrustService = _workspaceTrustService;\n this._highlighter = null;\n this._bannerClosed = false;\n this._updateState = (state) => {\n if (state && state.hasMore) {\n if (this._bannerClosed) {\n return;\n }\n // This document contains many non-basic ASCII characters.\n const max = Math.max(state.ambiguousCharacterCount, state.nonBasicAsciiCharacterCount, state.invisibleCharacterCount);\n let data;\n if (state.nonBasicAsciiCharacterCount >= max) {\n data = {\n message: nls.localize('unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters', 'This document contains many non-basic ASCII unicode characters'),\n command: new DisableHighlightingOfNonBasicAsciiCharactersAction(),\n };\n }\n else if (state.ambiguousCharacterCount >= max) {\n data = {\n message: nls.localize('unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters', 'This document contains many ambiguous unicode characters'),\n command: new DisableHighlightingOfAmbiguousCharactersAction(),\n };\n }\n else if (state.invisibleCharacterCount >= max) {\n data = {\n message: nls.localize('unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters', 'This document contains many invisible unicode characters'),\n command: new DisableHighlightingOfInvisibleCharactersAction(),\n };\n }\n else {\n throw new Error('Unreachable');\n }\n this._bannerController.show({\n id: 'unicodeHighlightBanner',\n message: data.message,\n icon: warningIcon,\n actions: [\n {\n label: data.command.shortLabel,\n href: `command:${data.command.id}`\n }\n ],\n onClose: () => {\n this._bannerClosed = true;\n },\n });\n }\n else {\n this._bannerController.hide();\n }\n };\n this._bannerController = this._register(instantiationService.createInstance(BannerController, _editor));\n this._register(this._editor.onDidChangeModel(() => {\n this._bannerClosed = false;\n this._updateHighlighter();\n }));\n this._options = _editor.getOption(115 /* EditorOption.unicodeHighlighting */);\n this._register(_workspaceTrustService.onDidChangeTrust(e => {\n this._updateHighlighter();\n }));\n this._register(_editor.onDidChangeConfiguration(e => {\n if (e.hasChanged(115 /* EditorOption.unicodeHighlighting */)) {\n this._options = _editor.getOption(115 /* EditorOption.unicodeHighlighting */);\n this._updateHighlighter();\n }\n }));\n this._updateHighlighter();\n }\n dispose() {\n if (this._highlighter) {\n this._highlighter.dispose();\n this._highlighter = null;\n }\n super.dispose();\n }\n _updateHighlighter() {\n this._updateState(null);\n if (this._highlighter) {\n this._highlighter.dispose();\n this._highlighter = null;\n }\n if (!this._editor.hasModel()) {\n return;\n }\n const options = resolveOptions(this._workspaceTrustService.isWorkspaceTrusted(), this._options);\n if ([\n options.nonBasicASCII,\n options.ambiguousCharacters,\n options.invisibleCharacters,\n ].every((option) => option === false)) {\n // Don't do anything if the feature is fully disabled\n return;\n }\n const highlightOptions = {\n nonBasicASCII: options.nonBasicASCII,\n ambiguousCharacters: options.ambiguousCharacters,\n invisibleCharacters: options.invisibleCharacters,\n includeComments: options.includeComments,\n includeStrings: options.includeStrings,\n allowedCodePoints: Object.keys(options.allowedCharacters).map(c => c.codePointAt(0)),\n allowedLocales: Object.keys(options.allowedLocales).map(locale => {\n if (locale === '_os') {\n const osLocale = new Intl.NumberFormat().resolvedOptions().locale;\n return osLocale;\n }\n else if (locale === '_vscode') {\n return platform.language;\n }\n return locale;\n }),\n };\n if (this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)) {\n this._highlighter = new DocumentUnicodeHighlighter(this._editor, highlightOptions, this._updateState, this._editorWorkerService);\n }\n else {\n this._highlighter = new ViewportUnicodeHighlighter(this._editor, highlightOptions, this._updateState);\n }\n }\n getDecorationInfo(decoration) {\n if (this._highlighter) {\n return this._highlighter.getDecorationInfo(decoration);\n }\n return null;\n }\n};\nUnicodeHighlighter.ID = 'editor.contrib.unicodeHighlighter';\nUnicodeHighlighter = __decorate([\n __param(1, IEditorWorkerService),\n __param(2, IWorkspaceTrustManagementService),\n __param(3, IInstantiationService)\n], UnicodeHighlighter);\nexport { UnicodeHighlighter };\nfunction resolveOptions(trusted, options) {\n return {\n nonBasicASCII: options.nonBasicASCII === inUntrustedWorkspace ? !trusted : options.nonBasicASCII,\n ambiguousCharacters: options.ambiguousCharacters,\n invisibleCharacters: options.invisibleCharacters,\n includeComments: options.includeComments === inUntrustedWorkspace ? !trusted : options.includeComments,\n includeStrings: options.includeStrings === inUntrustedWorkspace ? !trusted : options.includeStrings,\n allowedCharacters: options.allowedCharacters,\n allowedLocales: options.allowedLocales,\n };\n}\nlet DocumentUnicodeHighlighter = class DocumentUnicodeHighlighter extends Disposable {\n constructor(_editor, _options, _updateState, _editorWorkerService) {\n super();\n this._editor = _editor;\n this._options = _options;\n this._updateState = _updateState;\n this._editorWorkerService = _editorWorkerService;\n this._model = this._editor.getModel();\n this._decorations = this._editor.createDecorationsCollection();\n this._updateSoon = this._register(new RunOnceScheduler(() => this._update(), 250));\n this._register(this._editor.onDidChangeModelContent(() => {\n this._updateSoon.schedule();\n }));\n this._updateSoon.schedule();\n }\n dispose() {\n this._decorations.clear();\n super.dispose();\n }\n _update() {\n if (this._model.isDisposed()) {\n return;\n }\n if (!this._model.mightContainNonBasicASCII()) {\n this._decorations.clear();\n return;\n }\n const modelVersionId = this._model.getVersionId();\n this._editorWorkerService\n .computedUnicodeHighlights(this._model.uri, this._options)\n .then((info) => {\n if (this._model.isDisposed()) {\n return;\n }\n if (this._model.getVersionId() !== modelVersionId) {\n // model changed in the meantime\n return;\n }\n this._updateState(info);\n const decorations = [];\n if (!info.hasMore) {\n // Don't show decoration if there are too many.\n // In this case, a banner is shown.\n for (const range of info.ranges) {\n decorations.push({\n range: range,\n options: Decorations.instance.getDecorationFromOptions(this._options),\n });\n }\n }\n this._decorations.set(decorations);\n });\n }\n getDecorationInfo(decoration) {\n if (!this._decorations.has(decoration)) {\n return null;\n }\n const model = this._editor.getModel();\n if (!isModelDecorationVisible(model, decoration)) {\n return null;\n }\n const text = model.getValueInRange(decoration.range);\n return {\n reason: computeReason(text, this._options),\n inComment: isModelDecorationInComment(model, decoration),\n inString: isModelDecorationInString(model, decoration),\n };\n }\n};\nDocumentUnicodeHighlighter = __decorate([\n __param(3, IEditorWorkerService)\n], DocumentUnicodeHighlighter);\nclass ViewportUnicodeHighlighter extends Disposable {\n constructor(_editor, _options, _updateState) {\n super();\n this._editor = _editor;\n this._options = _options;\n this._updateState = _updateState;\n this._model = this._editor.getModel();\n this._decorations = this._editor.createDecorationsCollection();\n this._updateSoon = this._register(new RunOnceScheduler(() => this._update(), 250));\n this._register(this._editor.onDidLayoutChange(() => {\n this._updateSoon.schedule();\n }));\n this._register(this._editor.onDidScrollChange(() => {\n this._updateSoon.schedule();\n }));\n this._register(this._editor.onDidChangeHiddenAreas(() => {\n this._updateSoon.schedule();\n }));\n this._register(this._editor.onDidChangeModelContent(() => {\n this._updateSoon.schedule();\n }));\n this._updateSoon.schedule();\n }\n dispose() {\n this._decorations.clear();\n super.dispose();\n }\n _update() {\n if (this._model.isDisposed()) {\n return;\n }\n if (!this._model.mightContainNonBasicASCII()) {\n this._decorations.clear();\n return;\n }\n const ranges = this._editor.getVisibleRanges();\n const decorations = [];\n const totalResult = {\n ranges: [],\n ambiguousCharacterCount: 0,\n invisibleCharacterCount: 0,\n nonBasicAsciiCharacterCount: 0,\n hasMore: false,\n };\n for (const range of ranges) {\n const result = UnicodeTextModelHighlighter.computeUnicodeHighlights(this._model, this._options, range);\n for (const r of result.ranges) {\n totalResult.ranges.push(r);\n }\n totalResult.ambiguousCharacterCount += totalResult.ambiguousCharacterCount;\n totalResult.invisibleCharacterCount += totalResult.invisibleCharacterCount;\n totalResult.nonBasicAsciiCharacterCount += totalResult.nonBasicAsciiCharacterCount;\n totalResult.hasMore = totalResult.hasMore || result.hasMore;\n }\n if (!totalResult.hasMore) {\n // Don't show decorations if there are too many.\n // A banner will be shown instead.\n for (const range of totalResult.ranges) {\n decorations.push({ range, options: Decorations.instance.getDecorationFromOptions(this._options) });\n }\n }\n this._updateState(totalResult);\n this._decorations.set(decorations);\n }\n getDecorationInfo(decoration) {\n if (!this._decorations.has(decoration)) {\n return null;\n }\n const model = this._editor.getModel();\n const text = model.getValueInRange(decoration.range);\n if (!isModelDecorationVisible(model, decoration)) {\n return null;\n }\n return {\n reason: computeReason(text, this._options),\n inComment: isModelDecorationInComment(model, decoration),\n inString: isModelDecorationInString(model, decoration),\n };\n }\n}\nlet UnicodeHighlighterHoverParticipant = class UnicodeHighlighterHoverParticipant {\n constructor(_editor, _languageService, _openerService) {\n this._editor = _editor;\n this._languageService = _languageService;\n this._openerService = _openerService;\n this.hoverOrdinal = 4;\n }\n computeSync(anchor, lineDecorations) {\n if (!this._editor.hasModel() || anchor.type !== 1 /* HoverAnchorType.Range */) {\n return [];\n }\n const model = this._editor.getModel();\n const unicodeHighlighter = this._editor.getContribution(UnicodeHighlighter.ID);\n if (!unicodeHighlighter) {\n return [];\n }\n const result = [];\n let index = 300;\n for (const d of lineDecorations) {\n const highlightInfo = unicodeHighlighter.getDecorationInfo(d);\n if (!highlightInfo) {\n continue;\n }\n const char = model.getValueInRange(d.range);\n // text refers to a single character.\n const codePoint = char.codePointAt(0);\n const codePointStr = formatCodePointMarkdown(codePoint);\n let reason;\n switch (highlightInfo.reason.kind) {\n case 0 /* UnicodeHighlighterReasonKind.Ambiguous */:\n reason = nls.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)));\n break;\n case 1 /* UnicodeHighlighterReasonKind.Invisible */:\n reason = nls.localize('unicodeHighlight.characterIsInvisible', 'The character {0} is invisible.', codePointStr);\n break;\n case 2 /* UnicodeHighlighterReasonKind.NonBasicAscii */:\n reason = nls.localize('unicodeHighlight.characterIsNonBasicAscii', 'The character {0} is not a basic ASCII character.', codePointStr);\n break;\n }\n const adjustSettingsArgs = {\n codePoint: codePoint,\n reason: highlightInfo.reason,\n inComment: highlightInfo.inComment,\n inString: highlightInfo.inString,\n };\n const adjustSettings = nls.localize('unicodeHighlight.adjustSettings', 'Adjust settings');\n const uri = `command:${ShowExcludeOptions.ID}?${encodeURIComponent(JSON.stringify(adjustSettingsArgs))}`;\n const markdown = new MarkdownString('', true)\n .appendMarkdown(reason)\n .appendText(' ')\n .appendLink(uri, adjustSettings);\n result.push(new MarkdownHover(this, d.range, [markdown], index++));\n }\n return result;\n }\n renderHoverParts(context, hoverParts) {\n return renderMarkdownHovers(context, hoverParts, this._editor, this._languageService, this._openerService);\n }\n};\nUnicodeHighlighterHoverParticipant = __decorate([\n __param(1, ILanguageService),\n __param(2, IOpenerService)\n], UnicodeHighlighterHoverParticipant);\nexport { UnicodeHighlighterHoverParticipant };\nfunction codePointToHex(codePoint) {\n return `U+${codePoint.toString(16).padStart(4, '0')}`;\n}\nfunction formatCodePointMarkdown(codePoint) {\n let value = `\\`${codePointToHex(codePoint)}\\``;\n if (!InvisibleCharacters.isInvisibleCharacter(codePoint)) {\n // Don't render any control characters or any invisible characters, as they cannot be seen anyways.\n value += ` \"${`${renderCodePointAsInlineCode(codePoint)}`}\"`;\n }\n return value;\n}\nfunction renderCodePointAsInlineCode(codePoint) {\n if (codePoint === 96 /* CharCode.BackTick */) {\n return '`` ` ``';\n }\n return '`' + String.fromCodePoint(codePoint) + '`';\n}\nfunction computeReason(char, options) {\n return UnicodeTextModelHighlighter.computeUnicodeHighlightReason(char, options);\n}\nclass Decorations {\n constructor() {\n this.map = new Map();\n }\n getDecorationFromOptions(options) {\n return this.getDecoration(!options.includeComments, !options.includeStrings);\n }\n getDecoration(hideInComments, hideInStrings) {\n const key = `${hideInComments}${hideInStrings}`;\n let options = this.map.get(key);\n if (!options) {\n options = ModelDecorationOptions.createDynamic({\n description: 'unicode-highlight',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'unicode-highlight',\n showIfCollapsed: true,\n overviewRuler: null,\n minimap: null,\n hideInCommentTokens: hideInComments,\n hideInStringTokens: hideInStrings,\n });\n this.map.set(key, options);\n }\n return options;\n }\n}\nDecorations.instance = new Decorations();\nexport class DisableHighlightingInCommentsAction extends EditorAction {\n constructor() {\n super({\n id: DisableHighlightingOfAmbiguousCharactersAction.ID,\n label: nls.localize('action.unicodeHighlight.disableHighlightingInComments', 'Disable highlighting of characters in comments'),\n alias: 'Disable highlighting of characters in comments',\n precondition: undefined\n });\n this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingInComments.shortLabel', 'Disable Highlight In Comments');\n }\n run(accessor, editor, args) {\n return __awaiter(this, void 0, void 0, function* () {\n const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n if (configurationService) {\n this.runAction(configurationService);\n }\n });\n }\n runAction(configurationService) {\n return __awaiter(this, void 0, void 0, function* () {\n yield configurationService.updateValue(unicodeHighlightConfigKeys.includeComments, false, 2 /* ConfigurationTarget.USER */);\n });\n }\n}\nexport class DisableHighlightingInStringsAction extends EditorAction {\n constructor() {\n super({\n id: DisableHighlightingOfAmbiguousCharactersAction.ID,\n label: nls.localize('action.unicodeHighlight.disableHighlightingInStrings', 'Disable highlighting of characters in strings'),\n alias: 'Disable highlighting of characters in strings',\n precondition: undefined\n });\n this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingInStrings.shortLabel', 'Disable Highlight In Strings');\n }\n run(accessor, editor, args) {\n return __awaiter(this, void 0, void 0, function* () {\n const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n if (configurationService) {\n this.runAction(configurationService);\n }\n });\n }\n runAction(configurationService) {\n return __awaiter(this, void 0, void 0, function* () {\n yield configurationService.updateValue(unicodeHighlightConfigKeys.includeStrings, false, 2 /* ConfigurationTarget.USER */);\n });\n }\n}\nexport class DisableHighlightingOfAmbiguousCharactersAction extends EditorAction {\n constructor() {\n super({\n id: DisableHighlightingOfAmbiguousCharactersAction.ID,\n label: nls.localize('action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters', 'Disable highlighting of ambiguous characters'),\n alias: 'Disable highlighting of ambiguous characters',\n precondition: undefined\n });\n this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel', 'Disable Ambiguous Highlight');\n }\n run(accessor, editor, args) {\n return __awaiter(this, void 0, void 0, function* () {\n const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n if (configurationService) {\n this.runAction(configurationService);\n }\n });\n }\n runAction(configurationService) {\n return __awaiter(this, void 0, void 0, function* () {\n yield configurationService.updateValue(unicodeHighlightConfigKeys.ambiguousCharacters, false, 2 /* ConfigurationTarget.USER */);\n });\n }\n}\nDisableHighlightingOfAmbiguousCharactersAction.ID = 'editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters';\nexport class DisableHighlightingOfInvisibleCharactersAction extends EditorAction {\n constructor() {\n super({\n id: DisableHighlightingOfInvisibleCharactersAction.ID,\n label: nls.localize('action.unicodeHighlight.disableHighlightingOfInvisibleCharacters', 'Disable highlighting of invisible characters'),\n alias: 'Disable highlighting of invisible characters',\n precondition: undefined\n });\n this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel', 'Disable Invisible Highlight');\n }\n run(accessor, editor, args) {\n return __awaiter(this, void 0, void 0, function* () {\n const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n if (configurationService) {\n this.runAction(configurationService);\n }\n });\n }\n runAction(configurationService) {\n return __awaiter(this, void 0, void 0, function* () {\n yield configurationService.updateValue(unicodeHighlightConfigKeys.invisibleCharacters, false, 2 /* ConfigurationTarget.USER */);\n });\n }\n}\nDisableHighlightingOfInvisibleCharactersAction.ID = 'editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters';\nexport class DisableHighlightingOfNonBasicAsciiCharactersAction extends EditorAction {\n constructor() {\n super({\n id: DisableHighlightingOfNonBasicAsciiCharactersAction.ID,\n label: nls.localize('action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters', 'Disable highlighting of non basic ASCII characters'),\n alias: 'Disable highlighting of non basic ASCII characters',\n precondition: undefined\n });\n this.shortLabel = nls.localize('unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel', 'Disable Non ASCII Highlight');\n }\n run(accessor, editor, args) {\n return __awaiter(this, void 0, void 0, function* () {\n const configurationService = accessor === null || accessor === void 0 ? void 0 : accessor.get(IConfigurationService);\n if (configurationService) {\n this.runAction(configurationService);\n }\n });\n }\n runAction(configurationService) {\n return __awaiter(this, void 0, void 0, function* () {\n yield configurationService.updateValue(unicodeHighlightConfigKeys.nonBasicASCII, false, 2 /* ConfigurationTarget.USER */);\n });\n }\n}\nDisableHighlightingOfNonBasicAsciiCharactersAction.ID = 'editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters';\nexport class ShowExcludeOptions extends EditorAction {\n constructor() {\n super({\n id: ShowExcludeOptions.ID,\n label: nls.localize('action.unicodeHighlight.showExcludeOptions', \"Show Exclude Options\"),\n alias: 'Show Exclude Options',\n precondition: undefined\n });\n }\n run(accessor, editor, args) {\n return __awaiter(this, void 0, void 0, function* () {\n const { codePoint, reason, inString, inComment } = args;\n const char = String.fromCodePoint(codePoint);\n const quickPickService = accessor.get(IQuickInputService);\n const configurationService = accessor.get(IConfigurationService);\n function getExcludeCharFromBeingHighlightedLabel(codePoint) {\n if (InvisibleCharacters.isInvisibleCharacter(codePoint)) {\n return nls.localize('unicodeHighlight.excludeInvisibleCharFromBeingHighlighted', 'Exclude {0} (invisible character) from being highlighted', codePointToHex(codePoint));\n }\n return nls.localize('unicodeHighlight.excludeCharFromBeingHighlighted', 'Exclude {0} from being highlighted', `${codePointToHex(codePoint)} \"${char}\"`);\n }\n const options = [];\n if (reason.kind === 0 /* UnicodeHighlighterReasonKind.Ambiguous */) {\n for (const locale of reason.notAmbiguousInLocales) {\n options.push({\n label: nls.localize(\"unicodeHighlight.allowCommonCharactersInLanguage\", \"Allow unicode characters that are more common in the language \\\"{0}\\\".\", locale),\n run: () => __awaiter(this, void 0, void 0, function* () {\n excludeLocaleFromBeingHighlighted(configurationService, [locale]);\n }),\n });\n }\n }\n options.push({\n label: getExcludeCharFromBeingHighlightedLabel(codePoint),\n run: () => excludeCharFromBeingHighlighted(configurationService, [codePoint])\n });\n if (inComment) {\n const action = new DisableHighlightingInCommentsAction();\n options.push({ label: action.label, run: () => __awaiter(this, void 0, void 0, function* () { return action.runAction(configurationService); }) });\n }\n else if (inString) {\n const action = new DisableHighlightingInStringsAction();\n options.push({ label: action.label, run: () => __awaiter(this, void 0, void 0, function* () { return action.runAction(configurationService); }) });\n }\n if (reason.kind === 0 /* UnicodeHighlighterReasonKind.Ambiguous */) {\n const action = new DisableHighlightingOfAmbiguousCharactersAction();\n options.push({ label: action.label, run: () => __awaiter(this, void 0, void 0, function* () { return action.runAction(configurationService); }) });\n }\n else if (reason.kind === 1 /* UnicodeHighlighterReasonKind.Invisible */) {\n const action = new DisableHighlightingOfInvisibleCharactersAction();\n options.push({ label: action.label, run: () => __awaiter(this, void 0, void 0, function* () { return action.runAction(configurationService); }) });\n }\n else if (reason.kind === 2 /* UnicodeHighlighterReasonKind.NonBasicAscii */) {\n const action = new DisableHighlightingOfNonBasicAsciiCharactersAction();\n options.push({ label: action.label, run: () => __awaiter(this, void 0, void 0, function* () { return action.runAction(configurationService); }) });\n }\n else {\n expectNever(reason);\n }\n const result = yield quickPickService.pick(options, { title: nls.localize('unicodeHighlight.configureUnicodeHighlightOptions', 'Configure Unicode Highlight Options') });\n if (result) {\n yield result.run();\n }\n });\n }\n}\nShowExcludeOptions.ID = 'editor.action.unicodeHighlight.showExcludeOptions';\nfunction excludeCharFromBeingHighlighted(configurationService, charCodes) {\n return __awaiter(this, void 0, void 0, function* () {\n const existingValue = configurationService.getValue(unicodeHighlightConfigKeys.allowedCharacters);\n let value;\n if ((typeof existingValue === 'object') && existingValue) {\n value = existingValue;\n }\n else {\n value = {};\n }\n for (const charCode of charCodes) {\n value[String.fromCodePoint(charCode)] = true;\n }\n yield configurationService.updateValue(unicodeHighlightConfigKeys.allowedCharacters, value, 2 /* ConfigurationTarget.USER */);\n });\n}\nfunction excludeLocaleFromBeingHighlighted(configurationService, locales) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const existingValue = (_a = configurationService.inspect(unicodeHighlightConfigKeys.allowedLocales).user) === null || _a === void 0 ? void 0 : _a.value;\n let value;\n if ((typeof existingValue === 'object') && existingValue) {\n // Copy value, as the existing value is read only\n value = Object.assign({}, existingValue);\n }\n else {\n value = {};\n }\n for (const locale of locales) {\n value[locale] = true;\n }\n yield configurationService.updateValue(unicodeHighlightConfigKeys.allowedLocales, value, 2 /* ConfigurationTarget.USER */);\n });\n}\nfunction expectNever(value) {\n throw new Error(`Unexpected value: ${value}`);\n}\nregisterEditorAction(DisableHighlightingOfAmbiguousCharactersAction);\nregisterEditorAction(DisableHighlightingOfInvisibleCharactersAction);\nregisterEditorAction(DisableHighlightingOfNonBasicAsciiCharactersAction);\nregisterEditorAction(ShowExcludeOptions);\nregisterEditorContribution(UnicodeHighlighter.ID, UnicodeHighlighter);\nHoverParticipantRegistry.register(UnicodeHighlighterHoverParticipant);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport * as nls from '../../../../nls.js';\nimport { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';\nconst ignoreUnusualLineTerminators = 'ignoreUnusualLineTerminators';\nfunction writeIgnoreState(codeEditorService, model, state) {\n codeEditorService.setModelProperty(model.uri, ignoreUnusualLineTerminators, state);\n}\nfunction readIgnoreState(codeEditorService, model) {\n return codeEditorService.getModelProperty(model.uri, ignoreUnusualLineTerminators);\n}\nlet UnusualLineTerminatorsDetector = class UnusualLineTerminatorsDetector extends Disposable {\n constructor(_editor, _dialogService, _codeEditorService) {\n super();\n this._editor = _editor;\n this._dialogService = _dialogService;\n this._codeEditorService = _codeEditorService;\n this._config = this._editor.getOption(116 /* EditorOption.unusualLineTerminators */);\n this._register(this._editor.onDidChangeConfiguration((e) => {\n if (e.hasChanged(116 /* EditorOption.unusualLineTerminators */)) {\n this._config = this._editor.getOption(116 /* EditorOption.unusualLineTerminators */);\n this._checkForUnusualLineTerminators();\n }\n }));\n this._register(this._editor.onDidChangeModel(() => {\n this._checkForUnusualLineTerminators();\n }));\n this._register(this._editor.onDidChangeModelContent((e) => {\n if (e.isUndoing) {\n // skip checking in case of undoing\n return;\n }\n this._checkForUnusualLineTerminators();\n }));\n }\n _checkForUnusualLineTerminators() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._config === 'off') {\n return;\n }\n if (!this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n if (!model.mightContainUnusualLineTerminators()) {\n return;\n }\n const ignoreState = readIgnoreState(this._codeEditorService, model);\n if (ignoreState === true) {\n // this model should be ignored\n return;\n }\n if (this._editor.getOption(83 /* EditorOption.readOnly */)) {\n // read only editor => sorry!\n return;\n }\n if (this._config === 'auto') {\n // just do it!\n model.removeUnusualLineTerminators(this._editor.getSelections());\n return;\n }\n const result = yield this._dialogService.confirm({\n title: nls.localize('unusualLineTerminators.title', \"Unusual Line Terminators\"),\n message: nls.localize('unusualLineTerminators.message', \"Detected unusual line terminators\"),\n detail: nls.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)),\n primaryButton: nls.localize('unusualLineTerminators.fix', \"Remove Unusual Line Terminators\"),\n secondaryButton: nls.localize('unusualLineTerminators.ignore', \"Ignore\")\n });\n if (!result.confirmed) {\n // this model should be ignored\n writeIgnoreState(this._codeEditorService, model, true);\n return;\n }\n model.removeUnusualLineTerminators(this._editor.getSelections());\n });\n }\n};\nUnusualLineTerminatorsDetector.ID = 'editor.contrib.unusualLineTerminatorsDetector';\nUnusualLineTerminatorsDetector = __decorate([\n __param(1, IDialogService),\n __param(2, ICodeEditorService)\n], UnusualLineTerminatorsDetector);\nexport { UnusualLineTerminatorsDetector };\nregisterEditorContribution(UnusualLineTerminatorsDetector.ID, UnusualLineTerminatorsDetector);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createCancelablePromise, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { getDocumentRangeSemanticTokens, hasDocumentRangeSemanticTokensProvider } from '../../../common/services/getSemanticTokens.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { isSemanticColoringEnabled, SEMANTIC_HIGHLIGHTING_SETTING_ID } from '../../../common/services/modelService.js';\nimport { toMultilineTokens2 } from '../../../common/services/semanticTokensProviderStyling.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nlet ViewportSemanticTokensContribution = class ViewportSemanticTokensContribution extends Disposable {\n constructor(editor, _modelService, _themeService, _configurationService, languageFeatureDebounceService, languageFeaturesService) {\n super();\n this._modelService = _modelService;\n this._themeService = _themeService;\n this._configurationService = _configurationService;\n this._editor = editor;\n this._provider = languageFeaturesService.documentRangeSemanticTokensProvider;\n this._debounceInformation = languageFeatureDebounceService.for(this._provider, 'DocumentRangeSemanticTokens', { min: 100, max: 500 });\n this._tokenizeViewport = this._register(new RunOnceScheduler(() => this._tokenizeViewportNow(), 100));\n this._outstandingRequests = [];\n const scheduleTokenizeViewport = () => {\n if (this._editor.hasModel()) {\n this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()));\n }\n };\n this._register(this._editor.onDidScrollChange(() => {\n scheduleTokenizeViewport();\n }));\n this._register(this._editor.onDidChangeModel(() => {\n this._cancelAll();\n scheduleTokenizeViewport();\n }));\n this._register(this._editor.onDidChangeModelContent((e) => {\n this._cancelAll();\n scheduleTokenizeViewport();\n }));\n this._register(this._provider.onDidChange(() => {\n this._cancelAll();\n scheduleTokenizeViewport();\n }));\n this._register(this._configurationService.onDidChangeConfiguration(e => {\n if (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\n this._cancelAll();\n scheduleTokenizeViewport();\n }\n }));\n this._register(this._themeService.onDidColorThemeChange(() => {\n this._cancelAll();\n scheduleTokenizeViewport();\n }));\n }\n _cancelAll() {\n for (const request of this._outstandingRequests) {\n request.cancel();\n }\n this._outstandingRequests = [];\n }\n _removeOutstandingRequest(req) {\n for (let i = 0, len = this._outstandingRequests.length; i < len; i++) {\n if (this._outstandingRequests[i] === req) {\n this._outstandingRequests.splice(i, 1);\n return;\n }\n }\n }\n _tokenizeViewportNow() {\n if (!this._editor.hasModel()) {\n return;\n }\n const model = this._editor.getModel();\n if (model.tokenization.hasCompleteSemanticTokens()) {\n return;\n }\n if (!isSemanticColoringEnabled(model, this._themeService, this._configurationService)) {\n if (model.tokenization.hasSomeSemanticTokens()) {\n model.tokenization.setSemanticTokens(null, false);\n }\n return;\n }\n if (!hasDocumentRangeSemanticTokensProvider(this._provider, model)) {\n if (model.tokenization.hasSomeSemanticTokens()) {\n model.tokenization.setSemanticTokens(null, false);\n }\n return;\n }\n const visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\n this._outstandingRequests = this._outstandingRequests.concat(visibleRanges.map(range => this._requestRange(model, range)));\n }\n _requestRange(model, range) {\n const requestVersionId = model.getVersionId();\n const request = createCancelablePromise(token => Promise.resolve(getDocumentRangeSemanticTokens(this._provider, model, range, token)));\n const sw = new StopWatch(false);\n request.then((r) => {\n this._debounceInformation.update(model, sw.elapsed());\n if (!r || !r.tokens || model.isDisposed() || model.getVersionId() !== requestVersionId) {\n return;\n }\n const { provider, tokens: result } = r;\n const styling = this._modelService.getSemanticTokensProviderStyling(provider);\n model.tokenization.setPartialSemanticTokens(range, toMultilineTokens2(result, styling, model.getLanguageId()));\n }).then(() => this._removeOutstandingRequest(request), () => this._removeOutstandingRequest(request));\n return request;\n }\n};\nViewportSemanticTokensContribution.ID = 'editor.contrib.viewportSemanticTokens';\nViewportSemanticTokensContribution = __decorate([\n __param(1, IModelService),\n __param(2, IThemeService),\n __param(3, IConfigurationService),\n __param(4, ILanguageFeatureDebounceService),\n __param(5, ILanguageFeaturesService)\n], ViewportSemanticTokensContribution);\nregisterEditorContribution(ViewportSemanticTokensContribution.ID, ViewportSemanticTokensContribution);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport * as arrays from '../../../../base/common/arrays.js';\nimport { createCancelablePromise, first, timeout } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerModelAndPositionCommand } from '../../../browser/editorExtensions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { MinimapPosition, OverviewRulerLane } from '../../../common/model.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { DocumentHighlightKind } from '../../../common/languages.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { activeContrastBorder, editorSelectionHighlight, editorSelectionHighlightBorder, minimapSelectionOccurrenceHighlight, overviewRulerSelectionHighlightForeground, registerColor } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant, themeColorFromId } from '../../../../platform/theme/common/themeService.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nconst editorWordHighlight = registerColor('editor.wordHighlightBackground', { dark: '#575757B8', light: '#57575740', hcDark: null, hcLight: null }, nls.localize('wordHighlight', 'Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst editorWordHighlightStrong = registerColor('editor.wordHighlightStrongBackground', { dark: '#004972B8', light: '#0e639c40', hcDark: null, hcLight: null }, nls.localize('wordHighlightStrong', 'Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst editorWordHighlightBorder = registerColor('editor.wordHighlightBorder', { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('wordHighlightBorder', 'Border color of a symbol during read-access, like reading a variable.'));\nconst editorWordHighlightStrongBorder = registerColor('editor.wordHighlightStrongBorder', { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('wordHighlightStrongBorder', 'Border color of a symbol during write-access, like writing to a variable.'));\nconst overviewRulerWordHighlightForeground = registerColor('editorOverviewRuler.wordHighlightForeground', { dark: '#A0A0A0CC', light: '#A0A0A0CC', hcDark: '#A0A0A0CC', hcLight: '#A0A0A0CC' }, nls.localize('overviewRulerWordHighlightForeground', 'Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst overviewRulerWordHighlightStrongForeground = registerColor('editorOverviewRuler.wordHighlightStrongForeground', { dark: '#C0A0C0CC', light: '#C0A0C0CC', hcDark: '#C0A0C0CC', hcLight: '#C0A0C0CC' }, nls.localize('overviewRulerWordHighlightStrongForeground', 'Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\nconst ctxHasWordHighlights = new RawContextKey('hasWordHighlights', false);\nexport function getOccurrencesAtPosition(registry, model, position, token) {\n const orderedByScore = registry.ordered(model);\n // in order of score ask the occurrences provider\n // until someone response with a good result\n // (good = none empty array)\n return first(orderedByScore.map(provider => () => {\n return Promise.resolve(provider.provideDocumentHighlights(model, position, token))\n .then(undefined, onUnexpectedExternalError);\n }), arrays.isNonEmptyArray);\n}\nclass OccurenceAtPositionRequest {\n constructor(_model, _selection, _wordSeparators) {\n this._model = _model;\n this._selection = _selection;\n this._wordSeparators = _wordSeparators;\n this._wordRange = this._getCurrentWordRange(_model, _selection);\n this._result = null;\n }\n get result() {\n if (!this._result) {\n this._result = createCancelablePromise(token => this._compute(this._model, this._selection, this._wordSeparators, token));\n }\n return this._result;\n }\n _getCurrentWordRange(model, selection) {\n const word = model.getWordAtPosition(selection.getPosition());\n if (word) {\n return new Range(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\n }\n return null;\n }\n isValid(model, selection, decorations) {\n const lineNumber = selection.startLineNumber;\n const startColumn = selection.startColumn;\n const endColumn = selection.endColumn;\n const currentWordRange = this._getCurrentWordRange(model, selection);\n let requestIsValid = Boolean(this._wordRange && this._wordRange.equalsRange(currentWordRange));\n // Even if we are on a different word, if that word is in the decorations ranges, the request is still valid\n // (Same symbol)\n for (let i = 0, len = decorations.length; !requestIsValid && i < len; i++) {\n const range = decorations.getRange(i);\n if (range && range.startLineNumber === lineNumber) {\n if (range.startColumn <= startColumn && range.endColumn >= endColumn) {\n requestIsValid = true;\n }\n }\n }\n return requestIsValid;\n }\n cancel() {\n this.result.cancel();\n }\n}\nclass SemanticOccurenceAtPositionRequest extends OccurenceAtPositionRequest {\n constructor(model, selection, wordSeparators, providers) {\n super(model, selection, wordSeparators);\n this._providers = providers;\n }\n _compute(model, selection, wordSeparators, token) {\n return getOccurrencesAtPosition(this._providers, model, selection.getPosition(), token).then(value => value || []);\n }\n}\nclass TextualOccurenceAtPositionRequest extends OccurenceAtPositionRequest {\n constructor(model, selection, wordSeparators) {\n super(model, selection, wordSeparators);\n this._selectionIsEmpty = selection.isEmpty();\n }\n _compute(model, selection, wordSeparators, token) {\n return timeout(250, token).then(() => {\n if (!selection.isEmpty()) {\n return [];\n }\n const word = model.getWordAtPosition(selection.getPosition());\n if (!word || word.word.length > 1000) {\n return [];\n }\n const matches = model.findMatches(word.word, true, false, true, wordSeparators, false);\n return matches.map(m => {\n return {\n range: m.range,\n kind: DocumentHighlightKind.Text\n };\n });\n });\n }\n isValid(model, selection, decorations) {\n const currentSelectionIsEmpty = selection.isEmpty();\n if (this._selectionIsEmpty !== currentSelectionIsEmpty) {\n return false;\n }\n return super.isValid(model, selection, decorations);\n }\n}\nfunction computeOccurencesAtPosition(registry, model, selection, wordSeparators) {\n if (registry.has(model)) {\n return new SemanticOccurenceAtPositionRequest(model, selection, wordSeparators, registry);\n }\n return new TextualOccurenceAtPositionRequest(model, selection, wordSeparators);\n}\nregisterModelAndPositionCommand('_executeDocumentHighlights', (accessor, model, position) => {\n const languageFeaturesService = accessor.get(ILanguageFeaturesService);\n return getOccurrencesAtPosition(languageFeaturesService.documentHighlightProvider, model, position, CancellationToken.None);\n});\nclass WordHighlighter {\n constructor(editor, providers, contextKeyService) {\n this.toUnhook = new DisposableStore();\n this.workerRequestTokenId = 0;\n this.workerRequestCompleted = false;\n this.workerRequestValue = [];\n this.lastCursorPositionChangeTime = 0;\n this.renderDecorationsTimer = -1;\n this.editor = editor;\n this.providers = providers;\n this._hasWordHighlights = ctxHasWordHighlights.bindTo(contextKeyService);\n this._ignorePositionChangeEvent = false;\n this.occurrencesHighlight = this.editor.getOption(74 /* EditorOption.occurrencesHighlight */);\n this.model = this.editor.getModel();\n this.toUnhook.add(editor.onDidChangeCursorPosition((e) => {\n if (this._ignorePositionChangeEvent) {\n // We are changing the position => ignore this event\n return;\n }\n if (!this.occurrencesHighlight) {\n // Early exit if nothing needs to be done!\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\n return;\n }\n this._onPositionChanged(e);\n }));\n this.toUnhook.add(editor.onDidChangeModelContent((e) => {\n this._stopAll();\n }));\n this.toUnhook.add(editor.onDidChangeConfiguration((e) => {\n const newValue = this.editor.getOption(74 /* EditorOption.occurrencesHighlight */);\n if (this.occurrencesHighlight !== newValue) {\n this.occurrencesHighlight = newValue;\n this._stopAll();\n }\n }));\n this.decorations = this.editor.createDecorationsCollection();\n this.workerRequestTokenId = 0;\n this.workerRequest = null;\n this.workerRequestCompleted = false;\n this.lastCursorPositionChangeTime = 0;\n this.renderDecorationsTimer = -1;\n }\n hasDecorations() {\n return (this.decorations.length > 0);\n }\n restore() {\n if (!this.occurrencesHighlight) {\n return;\n }\n this._run();\n }\n _getSortedHighlights() {\n return (this.decorations.getRanges()\n .sort(Range.compareRangesUsingStarts));\n }\n moveNext() {\n const highlights = this._getSortedHighlights();\n const index = highlights.findIndex((range) => range.containsPosition(this.editor.getPosition()));\n const newIndex = ((index + 1) % highlights.length);\n const dest = highlights[newIndex];\n try {\n this._ignorePositionChangeEvent = true;\n this.editor.setPosition(dest.getStartPosition());\n this.editor.revealRangeInCenterIfOutsideViewport(dest);\n const word = this._getWord();\n if (word) {\n const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\n alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\n }\n }\n finally {\n this._ignorePositionChangeEvent = false;\n }\n }\n moveBack() {\n const highlights = this._getSortedHighlights();\n const index = highlights.findIndex((range) => range.containsPosition(this.editor.getPosition()));\n const newIndex = ((index - 1 + highlights.length) % highlights.length);\n const dest = highlights[newIndex];\n try {\n this._ignorePositionChangeEvent = true;\n this.editor.setPosition(dest.getStartPosition());\n this.editor.revealRangeInCenterIfOutsideViewport(dest);\n const word = this._getWord();\n if (word) {\n const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\n alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\n }\n }\n finally {\n this._ignorePositionChangeEvent = false;\n }\n }\n _removeDecorations() {\n if (this.decorations.length > 0) {\n // remove decorations\n this.decorations.clear();\n this._hasWordHighlights.set(false);\n }\n }\n _stopAll() {\n // Remove any existing decorations\n this._removeDecorations();\n // Cancel any renderDecorationsTimer\n if (this.renderDecorationsTimer !== -1) {\n clearTimeout(this.renderDecorationsTimer);\n this.renderDecorationsTimer = -1;\n }\n // Cancel any worker request\n if (this.workerRequest !== null) {\n this.workerRequest.cancel();\n this.workerRequest = null;\n }\n // Invalidate any worker request callback\n if (!this.workerRequestCompleted) {\n this.workerRequestTokenId++;\n this.workerRequestCompleted = true;\n }\n }\n _onPositionChanged(e) {\n // disabled\n if (!this.occurrencesHighlight) {\n this._stopAll();\n return;\n }\n // ignore typing & other\n if (e.reason !== 3 /* CursorChangeReason.Explicit */) {\n this._stopAll();\n return;\n }\n this._run();\n }\n _getWord() {\n const editorSelection = this.editor.getSelection();\n const lineNumber = editorSelection.startLineNumber;\n const startColumn = editorSelection.startColumn;\n return this.model.getWordAtPosition({\n lineNumber: lineNumber,\n column: startColumn\n });\n }\n _run() {\n const editorSelection = this.editor.getSelection();\n // ignore multiline selection\n if (editorSelection.startLineNumber !== editorSelection.endLineNumber) {\n this._stopAll();\n return;\n }\n const startColumn = editorSelection.startColumn;\n const endColumn = editorSelection.endColumn;\n const word = this._getWord();\n // The selection must be inside a word or surround one word at most\n if (!word || word.startColumn > startColumn || word.endColumn < endColumn) {\n this._stopAll();\n return;\n }\n // All the effort below is trying to achieve this:\n // - when cursor is moved to a word, trigger immediately a findOccurrences request\n // - 250ms later after the last cursor move event, render the occurrences\n // - no flickering!\n const workerRequestIsValid = (this.workerRequest && this.workerRequest.isValid(this.model, editorSelection, this.decorations));\n // There are 4 cases:\n // a) old workerRequest is valid & completed, renderDecorationsTimer fired\n // b) old workerRequest is valid & completed, renderDecorationsTimer not fired\n // c) old workerRequest is valid, but not completed\n // d) old workerRequest is not valid\n // For a) no action is needed\n // For c), member 'lastCursorPositionChangeTime' will be used when installing the timer so no action is needed\n this.lastCursorPositionChangeTime = (new Date()).getTime();\n if (workerRequestIsValid) {\n if (this.workerRequestCompleted && this.renderDecorationsTimer !== -1) {\n // case b)\n // Delay the firing of renderDecorationsTimer by an extra 250 ms\n clearTimeout(this.renderDecorationsTimer);\n this.renderDecorationsTimer = -1;\n this._beginRenderDecorations();\n }\n }\n else {\n // case d)\n // Stop all previous actions and start fresh\n this._stopAll();\n const myRequestId = ++this.workerRequestTokenId;\n this.workerRequestCompleted = false;\n this.workerRequest = computeOccurencesAtPosition(this.providers, this.model, this.editor.getSelection(), this.editor.getOption(119 /* EditorOption.wordSeparators */));\n this.workerRequest.result.then(data => {\n if (myRequestId === this.workerRequestTokenId) {\n this.workerRequestCompleted = true;\n this.workerRequestValue = data || [];\n this._beginRenderDecorations();\n }\n }, onUnexpectedError);\n }\n }\n _beginRenderDecorations() {\n const currentTime = (new Date()).getTime();\n const minimumRenderTime = this.lastCursorPositionChangeTime + 250;\n if (currentTime >= minimumRenderTime) {\n // Synchronous\n this.renderDecorationsTimer = -1;\n this.renderDecorations();\n }\n else {\n // Asynchronous\n this.renderDecorationsTimer = setTimeout(() => {\n this.renderDecorations();\n }, (minimumRenderTime - currentTime));\n }\n }\n renderDecorations() {\n this.renderDecorationsTimer = -1;\n const decorations = [];\n for (const info of this.workerRequestValue) {\n if (info.range) {\n decorations.push({\n range: info.range,\n options: WordHighlighter._getDecorationOptions(info.kind)\n });\n }\n }\n this.decorations.set(decorations);\n this._hasWordHighlights.set(this.hasDecorations());\n }\n static _getDecorationOptions(kind) {\n if (kind === DocumentHighlightKind.Write) {\n return this._WRITE_OPTIONS;\n }\n else if (kind === DocumentHighlightKind.Text) {\n return this._TEXT_OPTIONS;\n }\n else {\n return this._REGULAR_OPTIONS;\n }\n }\n dispose() {\n this._stopAll();\n this.toUnhook.dispose();\n }\n}\nWordHighlighter._WRITE_OPTIONS = ModelDecorationOptions.register({\n description: 'word-highlight-strong',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'wordHighlightStrong',\n overviewRuler: {\n color: themeColorFromId(overviewRulerWordHighlightStrongForeground),\n position: OverviewRulerLane.Center\n },\n minimap: {\n color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n position: MinimapPosition.Inline\n },\n});\nWordHighlighter._TEXT_OPTIONS = ModelDecorationOptions.register({\n description: 'selection-highlight',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'selectionHighlight',\n overviewRuler: {\n color: themeColorFromId(overviewRulerSelectionHighlightForeground),\n position: OverviewRulerLane.Center\n },\n minimap: {\n color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n position: MinimapPosition.Inline\n },\n});\nWordHighlighter._REGULAR_OPTIONS = ModelDecorationOptions.register({\n description: 'word-highlight',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className: 'wordHighlight',\n overviewRuler: {\n color: themeColorFromId(overviewRulerWordHighlightForeground),\n position: OverviewRulerLane.Center\n },\n minimap: {\n color: themeColorFromId(minimapSelectionOccurrenceHighlight),\n position: MinimapPosition.Inline\n },\n});\nlet WordHighlighterContribution = class WordHighlighterContribution extends Disposable {\n constructor(editor, contextKeyService, languageFeaturesService) {\n super();\n this.wordHighlighter = null;\n const createWordHighlighterIfPossible = () => {\n if (editor.hasModel()) {\n this.wordHighlighter = new WordHighlighter(editor, languageFeaturesService.documentHighlightProvider, contextKeyService);\n }\n };\n this._register(editor.onDidChangeModel((e) => {\n if (this.wordHighlighter) {\n this.wordHighlighter.dispose();\n this.wordHighlighter = null;\n }\n createWordHighlighterIfPossible();\n }));\n createWordHighlighterIfPossible();\n }\n static get(editor) {\n return editor.getContribution(WordHighlighterContribution.ID);\n }\n saveViewState() {\n if (this.wordHighlighter && this.wordHighlighter.hasDecorations()) {\n return true;\n }\n return false;\n }\n moveNext() {\n if (this.wordHighlighter) {\n this.wordHighlighter.moveNext();\n }\n }\n moveBack() {\n if (this.wordHighlighter) {\n this.wordHighlighter.moveBack();\n }\n }\n restoreViewState(state) {\n if (this.wordHighlighter && state) {\n this.wordHighlighter.restore();\n }\n }\n dispose() {\n if (this.wordHighlighter) {\n this.wordHighlighter.dispose();\n this.wordHighlighter = null;\n }\n super.dispose();\n }\n};\nWordHighlighterContribution.ID = 'editor.contrib.wordHighlighter';\nWordHighlighterContribution = __decorate([\n __param(1, IContextKeyService),\n __param(2, ILanguageFeaturesService)\n], WordHighlighterContribution);\nclass WordHighlightNavigationAction extends EditorAction {\n constructor(next, opts) {\n super(opts);\n this._isNext = next;\n }\n run(accessor, editor) {\n const controller = WordHighlighterContribution.get(editor);\n if (!controller) {\n return;\n }\n if (this._isNext) {\n controller.moveNext();\n }\n else {\n controller.moveBack();\n }\n }\n}\nclass NextWordHighlightAction extends WordHighlightNavigationAction {\n constructor() {\n super(true, {\n id: 'editor.action.wordHighlight.next',\n label: nls.localize('wordHighlight.next.label', \"Go to Next Symbol Highlight\"),\n alias: 'Go to Next Symbol Highlight',\n precondition: ctxHasWordHighlights,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 65 /* KeyCode.F7 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nclass PrevWordHighlightAction extends WordHighlightNavigationAction {\n constructor() {\n super(false, {\n id: 'editor.action.wordHighlight.prev',\n label: nls.localize('wordHighlight.previous.label', \"Go to Previous Symbol Highlight\"),\n alias: 'Go to Previous Symbol Highlight',\n precondition: ctxHasWordHighlights,\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 1024 /* KeyMod.Shift */ | 65 /* KeyCode.F7 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nclass TriggerWordHighlightAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.wordHighlight.trigger',\n label: nls.localize('wordHighlight.trigger.label', \"Trigger Symbol Highlight\"),\n alias: 'Trigger Symbol Highlight',\n precondition: ctxHasWordHighlights.toNegated(),\n kbOpts: {\n kbExpr: EditorContextKeys.editorTextFocus,\n primary: 0,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor, args) {\n const controller = WordHighlighterContribution.get(editor);\n if (!controller) {\n return;\n }\n controller.restoreViewState(true);\n }\n}\nregisterEditorContribution(WordHighlighterContribution.ID, WordHighlighterContribution);\nregisterEditorAction(NextWordHighlightAction);\nregisterEditorAction(PrevWordHighlightAction);\nregisterEditorAction(TriggerWordHighlightAction);\nregisterThemingParticipant((theme, collector) => {\n const selectionHighlight = theme.getColor(editorSelectionHighlight);\n if (selectionHighlight) {\n collector.addRule(`.monaco-editor .focused .selectionHighlight { background-color: ${selectionHighlight}; }`);\n collector.addRule(`.monaco-editor .selectionHighlight { background-color: ${selectionHighlight.transparent(0.5)}; }`);\n }\n const wordHighlight = theme.getColor(editorWordHighlight);\n if (wordHighlight) {\n collector.addRule(`.monaco-editor .wordHighlight { background-color: ${wordHighlight}; }`);\n }\n const wordHighlightStrong = theme.getColor(editorWordHighlightStrong);\n if (wordHighlightStrong) {\n collector.addRule(`.monaco-editor .wordHighlightStrong { background-color: ${wordHighlightStrong}; }`);\n }\n const selectionHighlightBorder = theme.getColor(editorSelectionHighlightBorder);\n if (selectionHighlightBorder) {\n collector.addRule(`.monaco-editor .selectionHighlight { border: 1px ${isHighContrast(theme.type) ? 'dotted' : 'solid'} ${selectionHighlightBorder}; box-sizing: border-box; }`);\n }\n const wordHighlightBorder = theme.getColor(editorWordHighlightBorder);\n if (wordHighlightBorder) {\n collector.addRule(`.monaco-editor .wordHighlight { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${wordHighlightBorder}; box-sizing: border-box; }`);\n }\n const wordHighlightStrongBorder = theme.getColor(editorWordHighlightStrongBorder);\n if (wordHighlightStrongBorder) {\n collector.addRule(`.monaco-editor .wordHighlightStrong { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${wordHighlightStrongBorder}; box-sizing: border-box; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand } from '../../../common/commands/replaceCommand.js';\nimport { EditorOptions } from '../../../common/config/editorOptions.js';\nimport { CursorState } from '../../../common/cursorCommon.js';\nimport { WordOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { getMapForWordSeparators } from '../../../common/core/wordCharacterClassifier.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport * as nls from '../../../../nls.js';\nimport { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from '../../../../platform/accessibility/common/accessibility.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IsWindowsContext } from '../../../../platform/contextkey/common/contextkeys.js';\nexport class MoveWordCommand extends EditorCommand {\n constructor(opts) {\n super(opts);\n this._inSelectionMode = opts.inSelectionMode;\n this._wordNavigationType = opts.wordNavigationType;\n }\n runEditorCommand(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n const wordSeparators = getMapForWordSeparators(editor.getOption(119 /* EditorOption.wordSeparators */));\n const model = editor.getModel();\n const selections = editor.getSelections();\n const result = selections.map((sel) => {\n const inPosition = new Position(sel.positionLineNumber, sel.positionColumn);\n const outPosition = this._move(wordSeparators, model, inPosition, this._wordNavigationType);\n return this._moveTo(sel, outPosition, this._inSelectionMode);\n });\n model.pushStackElement();\n editor._getViewModel().setCursorStates('moveWordCommand', 3 /* CursorChangeReason.Explicit */, result.map(r => CursorState.fromModelSelection(r)));\n if (result.length === 1) {\n const pos = new Position(result[0].positionLineNumber, result[0].positionColumn);\n editor.revealPosition(pos, 0 /* ScrollType.Smooth */);\n }\n }\n _moveTo(from, to, inSelectionMode) {\n if (inSelectionMode) {\n // move just position\n return new Selection(from.selectionStartLineNumber, from.selectionStartColumn, to.lineNumber, to.column);\n }\n else {\n // move everything\n return new Selection(to.lineNumber, to.column, to.lineNumber, to.column);\n }\n }\n}\nexport class WordLeftCommand extends MoveWordCommand {\n _move(wordSeparators, model, position, wordNavigationType) {\n return WordOperations.moveWordLeft(wordSeparators, model, position, wordNavigationType);\n }\n}\nexport class WordRightCommand extends MoveWordCommand {\n _move(wordSeparators, model, position, wordNavigationType) {\n return WordOperations.moveWordRight(wordSeparators, model, position, wordNavigationType);\n }\n}\nexport class CursorWordStartLeft extends WordLeftCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'cursorWordStartLeft',\n precondition: undefined\n });\n }\n}\nexport class CursorWordEndLeft extends WordLeftCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordEndLeft',\n precondition: undefined\n });\n }\n}\nexport class CursorWordLeft extends WordLeftCommand {\n constructor() {\n var _a;\n super({\n inSelectionMode: false,\n wordNavigationType: 1 /* WordNavigationType.WordStartFast */,\n id: 'cursorWordLeft',\n precondition: undefined,\n kbOpts: {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n primary: 2048 /* KeyMod.CtrlCmd */ | 15 /* KeyCode.LeftArrow */,\n mac: { primary: 512 /* KeyMod.Alt */ | 15 /* KeyCode.LeftArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nexport class CursorWordStartLeftSelect extends WordLeftCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'cursorWordStartLeftSelect',\n precondition: undefined\n });\n }\n}\nexport class CursorWordEndLeftSelect extends WordLeftCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordEndLeftSelect',\n precondition: undefined\n });\n }\n}\nexport class CursorWordLeftSelect extends WordLeftCommand {\n constructor() {\n var _a;\n super({\n inSelectionMode: true,\n wordNavigationType: 1 /* WordNavigationType.WordStartFast */,\n id: 'cursorWordLeftSelect',\n precondition: undefined,\n kbOpts: {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */,\n mac: { primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\n// Accessibility navigation commands should only be enabled on windows since they are tuned to what NVDA expects\nexport class CursorWordAccessibilityLeft extends WordLeftCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n id: 'cursorWordAccessibilityLeft',\n precondition: undefined\n });\n }\n _move(_, model, position, wordNavigationType) {\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\n }\n}\nexport class CursorWordAccessibilityLeftSelect extends WordLeftCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n id: 'cursorWordAccessibilityLeftSelect',\n precondition: undefined\n });\n }\n _move(_, model, position, wordNavigationType) {\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\n }\n}\nexport class CursorWordStartRight extends WordRightCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'cursorWordStartRight',\n precondition: undefined\n });\n }\n}\nexport class CursorWordEndRight extends WordRightCommand {\n constructor() {\n var _a;\n super({\n inSelectionMode: false,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordEndRight',\n precondition: undefined,\n kbOpts: {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n primary: 2048 /* KeyMod.CtrlCmd */ | 17 /* KeyCode.RightArrow */,\n mac: { primary: 512 /* KeyMod.Alt */ | 17 /* KeyCode.RightArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nexport class CursorWordRight extends WordRightCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordRight',\n precondition: undefined\n });\n }\n}\nexport class CursorWordStartRightSelect extends WordRightCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'cursorWordStartRightSelect',\n precondition: undefined\n });\n }\n}\nexport class CursorWordEndRightSelect extends WordRightCommand {\n constructor() {\n var _a;\n super({\n inSelectionMode: true,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordEndRightSelect',\n precondition: undefined,\n kbOpts: {\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, (_a = ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED, IsWindowsContext)) === null || _a === void 0 ? void 0 : _a.negate()),\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */,\n mac: { primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nexport class CursorWordRightSelect extends WordRightCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordRightSelect',\n precondition: undefined\n });\n }\n}\nexport class CursorWordAccessibilityRight extends WordRightCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n id: 'cursorWordAccessibilityRight',\n precondition: undefined\n });\n }\n _move(_, model, position, wordNavigationType) {\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\n }\n}\nexport class CursorWordAccessibilityRightSelect extends WordRightCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 3 /* WordNavigationType.WordAccessibility */,\n id: 'cursorWordAccessibilityRightSelect',\n precondition: undefined\n });\n }\n _move(_, model, position, wordNavigationType) {\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\n }\n}\nexport class DeleteWordCommand extends EditorCommand {\n constructor(opts) {\n super(opts);\n this._whitespaceHeuristics = opts.whitespaceHeuristics;\n this._wordNavigationType = opts.wordNavigationType;\n }\n runEditorCommand(accessor, editor, args) {\n const languageConfigurationService = accessor.get(ILanguageConfigurationService);\n if (!editor.hasModel()) {\n return;\n }\n const wordSeparators = getMapForWordSeparators(editor.getOption(119 /* EditorOption.wordSeparators */));\n const model = editor.getModel();\n const selections = editor.getSelections();\n const autoClosingBrackets = editor.getOption(5 /* EditorOption.autoClosingBrackets */);\n const autoClosingQuotes = editor.getOption(8 /* EditorOption.autoClosingQuotes */);\n const autoClosingPairs = languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getAutoClosingPairs();\n const viewModel = editor._getViewModel();\n const commands = selections.map((sel) => {\n const deleteRange = this._delete({\n wordSeparators,\n model,\n selection: sel,\n whitespaceHeuristics: this._whitespaceHeuristics,\n autoClosingDelete: editor.getOption(6 /* EditorOption.autoClosingDelete */),\n autoClosingBrackets,\n autoClosingQuotes,\n autoClosingPairs,\n autoClosedCharacters: viewModel.getCursorAutoClosedCharacters()\n }, this._wordNavigationType);\n return new ReplaceCommand(deleteRange, '');\n });\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nexport class DeleteWordLeftCommand extends DeleteWordCommand {\n _delete(ctx, wordNavigationType) {\n const r = WordOperations.deleteWordLeft(ctx, wordNavigationType);\n if (r) {\n return r;\n }\n return new Range(1, 1, 1, 1);\n }\n}\nexport class DeleteWordRightCommand extends DeleteWordCommand {\n _delete(ctx, wordNavigationType) {\n const r = WordOperations.deleteWordRight(ctx, wordNavigationType);\n if (r) {\n return r;\n }\n const lineCount = ctx.model.getLineCount();\n const maxColumn = ctx.model.getLineMaxColumn(lineCount);\n return new Range(lineCount, maxColumn, lineCount, maxColumn);\n }\n}\nexport class DeleteWordStartLeft extends DeleteWordLeftCommand {\n constructor() {\n super({\n whitespaceHeuristics: false,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'deleteWordStartLeft',\n precondition: EditorContextKeys.writable\n });\n }\n}\nexport class DeleteWordEndLeft extends DeleteWordLeftCommand {\n constructor() {\n super({\n whitespaceHeuristics: false,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'deleteWordEndLeft',\n precondition: EditorContextKeys.writable\n });\n }\n}\nexport class DeleteWordLeft extends DeleteWordLeftCommand {\n constructor() {\n super({\n whitespaceHeuristics: true,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'deleteWordLeft',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1 /* KeyCode.Backspace */,\n mac: { primary: 512 /* KeyMod.Alt */ | 1 /* KeyCode.Backspace */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nexport class DeleteWordStartRight extends DeleteWordRightCommand {\n constructor() {\n super({\n whitespaceHeuristics: false,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'deleteWordStartRight',\n precondition: EditorContextKeys.writable\n });\n }\n}\nexport class DeleteWordEndRight extends DeleteWordRightCommand {\n constructor() {\n super({\n whitespaceHeuristics: false,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'deleteWordEndRight',\n precondition: EditorContextKeys.writable\n });\n }\n}\nexport class DeleteWordRight extends DeleteWordRightCommand {\n constructor() {\n super({\n whitespaceHeuristics: true,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'deleteWordRight',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 20 /* KeyCode.Delete */,\n mac: { primary: 512 /* KeyMod.Alt */ | 20 /* KeyCode.Delete */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nexport class DeleteInsideWord extends EditorAction {\n constructor() {\n super({\n id: 'deleteInsideWord',\n precondition: EditorContextKeys.writable,\n label: nls.localize('deleteInsideWord', \"Delete Word\"),\n alias: 'Delete Word'\n });\n }\n run(accessor, editor, args) {\n if (!editor.hasModel()) {\n return;\n }\n const wordSeparators = getMapForWordSeparators(editor.getOption(119 /* EditorOption.wordSeparators */));\n const model = editor.getModel();\n const selections = editor.getSelections();\n const commands = selections.map((sel) => {\n const deleteRange = WordOperations.deleteInsideWord(wordSeparators, model, sel);\n return new ReplaceCommand(deleteRange, '');\n });\n editor.pushUndoStop();\n editor.executeCommands(this.id, commands);\n editor.pushUndoStop();\n }\n}\nregisterEditorCommand(new CursorWordStartLeft());\nregisterEditorCommand(new CursorWordEndLeft());\nregisterEditorCommand(new CursorWordLeft());\nregisterEditorCommand(new CursorWordStartLeftSelect());\nregisterEditorCommand(new CursorWordEndLeftSelect());\nregisterEditorCommand(new CursorWordLeftSelect());\nregisterEditorCommand(new CursorWordStartRight());\nregisterEditorCommand(new CursorWordEndRight());\nregisterEditorCommand(new CursorWordRight());\nregisterEditorCommand(new CursorWordStartRightSelect());\nregisterEditorCommand(new CursorWordEndRightSelect());\nregisterEditorCommand(new CursorWordRightSelect());\nregisterEditorCommand(new CursorWordAccessibilityLeft());\nregisterEditorCommand(new CursorWordAccessibilityLeftSelect());\nregisterEditorCommand(new CursorWordAccessibilityRight());\nregisterEditorCommand(new CursorWordAccessibilityRightSelect());\nregisterEditorCommand(new DeleteWordStartLeft());\nregisterEditorCommand(new DeleteWordEndLeft());\nregisterEditorCommand(new DeleteWordLeft());\nregisterEditorCommand(new DeleteWordStartRight());\nregisterEditorCommand(new DeleteWordEndRight());\nregisterEditorCommand(new DeleteWordRight());\nregisterEditorAction(DeleteInsideWord);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerEditorCommand } from '../../../browser/editorExtensions.js';\nimport { WordPartOperations } from '../../../common/cursor/cursorWordOperations.js';\nimport { Range } from '../../../common/core/range.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { DeleteWordCommand, MoveWordCommand } from '../../wordOperations/browser/wordOperations.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nexport class DeleteWordPartLeft extends DeleteWordCommand {\n constructor() {\n super({\n whitespaceHeuristics: true,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'deleteWordPartLeft',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 1 /* KeyCode.Backspace */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _delete(ctx, wordNavigationType) {\n const r = WordPartOperations.deleteWordPartLeft(ctx);\n if (r) {\n return r;\n }\n return new Range(1, 1, 1, 1);\n }\n}\nexport class DeleteWordPartRight extends DeleteWordCommand {\n constructor() {\n super({\n whitespaceHeuristics: true,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'deleteWordPartRight',\n precondition: EditorContextKeys.writable,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 20 /* KeyCode.Delete */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n _delete(ctx, wordNavigationType) {\n const r = WordPartOperations.deleteWordPartRight(ctx);\n if (r) {\n return r;\n }\n const lineCount = ctx.model.getLineCount();\n const maxColumn = ctx.model.getLineMaxColumn(lineCount);\n return new Range(lineCount, maxColumn, lineCount, maxColumn);\n }\n}\nexport class WordPartLeftCommand extends MoveWordCommand {\n _move(wordSeparators, model, position, wordNavigationType) {\n return WordPartOperations.moveWordPartLeft(wordSeparators, model, position);\n }\n}\nexport class CursorWordPartLeft extends WordPartLeftCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'cursorWordPartLeft',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 15 /* KeyCode.LeftArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\n// Register previous id for compatibility purposes\nCommandsRegistry.registerCommandAlias('cursorWordPartStartLeft', 'cursorWordPartLeft');\nexport class CursorWordPartLeftSelect extends WordPartLeftCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 0 /* WordNavigationType.WordStart */,\n id: 'cursorWordPartLeftSelect',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 15 /* KeyCode.LeftArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\n// Register previous id for compatibility purposes\nCommandsRegistry.registerCommandAlias('cursorWordPartStartLeftSelect', 'cursorWordPartLeftSelect');\nexport class WordPartRightCommand extends MoveWordCommand {\n _move(wordSeparators, model, position, wordNavigationType) {\n return WordPartOperations.moveWordPartRight(wordSeparators, model, position);\n }\n}\nexport class CursorWordPartRight extends WordPartRightCommand {\n constructor() {\n super({\n inSelectionMode: false,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordPartRight',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 17 /* KeyCode.RightArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nexport class CursorWordPartRightSelect extends WordPartRightCommand {\n constructor() {\n super({\n inSelectionMode: true,\n wordNavigationType: 2 /* WordNavigationType.WordEnd */,\n id: 'cursorWordPartRightSelect',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.textInputFocus,\n primary: 0,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 17 /* KeyCode.RightArrow */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n}\nregisterEditorCommand(new DeleteWordPartLeft());\nregisterEditorCommand(new DeleteWordPartRight());\nregisterEditorCommand(new CursorWordPartLeft());\nregisterEditorCommand(new CursorWordPartLeftSelect());\nregisterEditorCommand(new CursorWordPartRight());\nregisterEditorCommand(new CursorWordPartRightSelect());\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { KeyChord } from '../../../base/common/keyCodes.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { Position } from '../core/position.js';\nimport { Range } from '../core/range.js';\nimport { Selection } from '../core/selection.js';\nimport { Token } from '../languages.js';\nimport * as standaloneEnums from '../standalone/standaloneEnums.js';\nexport class KeyMod {\n static chord(firstPart, secondPart) {\n return KeyChord(firstPart, secondPart);\n }\n}\nKeyMod.CtrlCmd = 2048 /* ConstKeyMod.CtrlCmd */;\nKeyMod.Shift = 1024 /* ConstKeyMod.Shift */;\nKeyMod.Alt = 512 /* ConstKeyMod.Alt */;\nKeyMod.WinCtrl = 256 /* ConstKeyMod.WinCtrl */;\nexport function createMonacoBaseAPI() {\n return {\n editor: undefined,\n languages: undefined,\n CancellationTokenSource: CancellationTokenSource,\n Emitter: Emitter,\n KeyCode: standaloneEnums.KeyCode,\n KeyMod: KeyMod,\n Position: Position,\n Range: Range,\n Selection: Selection,\n SelectionDirection: standaloneEnums.SelectionDirection,\n MarkerSeverity: standaloneEnums.MarkerSeverity,\n MarkerTag: standaloneEnums.MarkerTag,\n Uri: URI,\n Token: Token\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as assert from '../../../base/common/assert.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport * as objects from '../../../base/common/objects.js';\nimport { Range } from '../../common/core/range.js';\nconst defaultOptions = {\n followsCaret: true,\n ignoreCharChanges: true,\n alwaysRevealFirst: true\n};\n/**\n * Create a new diff navigator for the provided diff editor.\n */\nexport class DiffNavigator extends Disposable {\n constructor(editor, options = {}) {\n super();\n this._onDidUpdate = this._register(new Emitter());\n this._editor = editor;\n this._options = objects.mixin(options, defaultOptions, false);\n this.disposed = false;\n this.nextIdx = -1;\n this.ranges = [];\n this.ignoreSelectionChange = false;\n this.revealFirst = Boolean(this._options.alwaysRevealFirst);\n // hook up to diff editor for diff, disposal, and caret move\n this._register(this._editor.onDidDispose(() => this.dispose()));\n this._register(this._editor.onDidUpdateDiff(() => this._onDiffUpdated()));\n if (this._options.followsCaret) {\n this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition((e) => {\n if (this.ignoreSelectionChange) {\n return;\n }\n this.nextIdx = -1;\n }));\n }\n if (this._options.alwaysRevealFirst) {\n this._register(this._editor.getModifiedEditor().onDidChangeModel((e) => {\n this.revealFirst = true;\n }));\n }\n // init things\n this._init();\n }\n _init() {\n const changes = this._editor.getLineChanges();\n if (!changes) {\n return;\n }\n }\n _onDiffUpdated() {\n this._init();\n this._compute(this._editor.getLineChanges());\n if (this.revealFirst) {\n // Only reveal first on first non-null changes\n if (this._editor.getLineChanges() !== null) {\n this.revealFirst = false;\n this.nextIdx = -1;\n this.next(1 /* ScrollType.Immediate */);\n }\n }\n }\n _compute(lineChanges) {\n // new ranges\n this.ranges = [];\n if (lineChanges) {\n // create ranges from changes\n lineChanges.forEach((lineChange) => {\n if (!this._options.ignoreCharChanges && lineChange.charChanges) {\n lineChange.charChanges.forEach((charChange) => {\n this.ranges.push({\n rhs: true,\n range: new Range(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn)\n });\n });\n }\n else {\n if (lineChange.modifiedEndLineNumber === 0) {\n // a deletion\n this.ranges.push({\n rhs: true,\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedStartLineNumber + 1, 1)\n });\n }\n else {\n // an insertion or modification\n this.ranges.push({\n rhs: true,\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber + 1, 1)\n });\n }\n }\n });\n }\n // sort\n this.ranges.sort((left, right) => Range.compareRangesUsingStarts(left.range, right.range));\n this._onDidUpdate.fire(this);\n }\n _initIdx(fwd) {\n let found = false;\n const position = this._editor.getPosition();\n if (!position) {\n this.nextIdx = 0;\n return;\n }\n for (let i = 0, len = this.ranges.length; i < len && !found; i++) {\n const range = this.ranges[i].range;\n if (position.isBeforeOrEqual(range.getStartPosition())) {\n this.nextIdx = i + (fwd ? 0 : -1);\n found = true;\n }\n }\n if (!found) {\n // after the last change\n this.nextIdx = fwd ? 0 : this.ranges.length - 1;\n }\n if (this.nextIdx < 0) {\n this.nextIdx = this.ranges.length - 1;\n }\n }\n _move(fwd, scrollType) {\n assert.ok(!this.disposed, 'Illegal State - diff navigator has been disposed');\n if (!this.canNavigate()) {\n return;\n }\n if (this.nextIdx === -1) {\n this._initIdx(fwd);\n }\n else if (fwd) {\n this.nextIdx += 1;\n if (this.nextIdx >= this.ranges.length) {\n this.nextIdx = 0;\n }\n }\n else {\n this.nextIdx -= 1;\n if (this.nextIdx < 0) {\n this.nextIdx = this.ranges.length - 1;\n }\n }\n const info = this.ranges[this.nextIdx];\n this.ignoreSelectionChange = true;\n try {\n const pos = info.range.getStartPosition();\n this._editor.setPosition(pos);\n this._editor.revealRangeInCenter(info.range, scrollType);\n }\n finally {\n this.ignoreSelectionChange = false;\n }\n }\n canNavigate() {\n return this.ranges && this.ranges.length > 0;\n }\n next(scrollType = 0 /* ScrollType.Smooth */) {\n this._move(true, scrollType);\n }\n previous(scrollType = 0 /* ScrollType.Smooth */) {\n this._move(false, scrollType);\n }\n dispose() {\n super.dispose();\n this.ranges = [];\n this.disposed = true;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { transformErrorForSerialization } from '../errors.js';\nimport { Emitter } from '../event.js';\nimport { Disposable } from '../lifecycle.js';\nimport { globals, isWeb } from '../platform.js';\nimport * as types from '../types.js';\nimport * as strings from '../strings.js';\nconst INITIALIZE = '$initialize';\nlet webWorkerWarningLogged = false;\nexport function logOnceWebWorkerWarning(err) {\n if (!isWeb) {\n // running tests\n return;\n }\n if (!webWorkerWarningLogged) {\n webWorkerWarningLogged = true;\n console.warn('Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/microsoft/monaco-editor#faq');\n }\n console.warn(err.message);\n}\nclass RequestMessage {\n constructor(vsWorker, req, method, args) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.method = method;\n this.args = args;\n this.type = 0 /* MessageType.Request */;\n }\n}\nclass ReplyMessage {\n constructor(vsWorker, seq, res, err) {\n this.vsWorker = vsWorker;\n this.seq = seq;\n this.res = res;\n this.err = err;\n this.type = 1 /* MessageType.Reply */;\n }\n}\nclass SubscribeEventMessage {\n constructor(vsWorker, req, eventName, arg) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.eventName = eventName;\n this.arg = arg;\n this.type = 2 /* MessageType.SubscribeEvent */;\n }\n}\nclass EventMessage {\n constructor(vsWorker, req, event) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.event = event;\n this.type = 3 /* MessageType.Event */;\n }\n}\nclass UnsubscribeEventMessage {\n constructor(vsWorker, req) {\n this.vsWorker = vsWorker;\n this.req = req;\n this.type = 4 /* MessageType.UnsubscribeEvent */;\n }\n}\nclass SimpleWorkerProtocol {\n constructor(handler) {\n this._workerId = -1;\n this._handler = handler;\n this._lastSentReq = 0;\n this._pendingReplies = Object.create(null);\n this._pendingEmitters = new Map();\n this._pendingEvents = new Map();\n }\n setWorkerId(workerId) {\n this._workerId = workerId;\n }\n sendMessage(method, args) {\n const req = String(++this._lastSentReq);\n return new Promise((resolve, reject) => {\n this._pendingReplies[req] = {\n resolve: resolve,\n reject: reject\n };\n this._send(new RequestMessage(this._workerId, req, method, args));\n });\n }\n listen(eventName, arg) {\n let req = null;\n const emitter = new Emitter({\n onFirstListenerAdd: () => {\n req = String(++this._lastSentReq);\n this._pendingEmitters.set(req, emitter);\n this._send(new SubscribeEventMessage(this._workerId, req, eventName, arg));\n },\n onLastListenerRemove: () => {\n this._pendingEmitters.delete(req);\n this._send(new UnsubscribeEventMessage(this._workerId, req));\n req = null;\n }\n });\n return emitter.event;\n }\n handleMessage(message) {\n if (!message || !message.vsWorker) {\n return;\n }\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\n return;\n }\n this._handleMessage(message);\n }\n _handleMessage(msg) {\n switch (msg.type) {\n case 1 /* MessageType.Reply */:\n return this._handleReplyMessage(msg);\n case 0 /* MessageType.Request */:\n return this._handleRequestMessage(msg);\n case 2 /* MessageType.SubscribeEvent */:\n return this._handleSubscribeEventMessage(msg);\n case 3 /* MessageType.Event */:\n return this._handleEventMessage(msg);\n case 4 /* MessageType.UnsubscribeEvent */:\n return this._handleUnsubscribeEventMessage(msg);\n }\n }\n _handleReplyMessage(replyMessage) {\n if (!this._pendingReplies[replyMessage.seq]) {\n console.warn('Got reply to unknown seq');\n return;\n }\n const reply = this._pendingReplies[replyMessage.seq];\n delete this._pendingReplies[replyMessage.seq];\n if (replyMessage.err) {\n let err = replyMessage.err;\n if (replyMessage.err.$isError) {\n err = new Error();\n err.name = replyMessage.err.name;\n err.message = replyMessage.err.message;\n err.stack = replyMessage.err.stack;\n }\n reply.reject(err);\n return;\n }\n reply.resolve(replyMessage.res);\n }\n _handleRequestMessage(requestMessage) {\n const req = requestMessage.req;\n const result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\n result.then((r) => {\n this._send(new ReplyMessage(this._workerId, req, r, undefined));\n }, (e) => {\n if (e.detail instanceof Error) {\n // Loading errors have a detail property that points to the actual error\n e.detail = transformErrorForSerialization(e.detail);\n }\n this._send(new ReplyMessage(this._workerId, req, undefined, transformErrorForSerialization(e)));\n });\n }\n _handleSubscribeEventMessage(msg) {\n const req = msg.req;\n const disposable = this._handler.handleEvent(msg.eventName, msg.arg)((event) => {\n this._send(new EventMessage(this._workerId, req, event));\n });\n this._pendingEvents.set(req, disposable);\n }\n _handleEventMessage(msg) {\n if (!this._pendingEmitters.has(msg.req)) {\n console.warn('Got event for unknown req');\n return;\n }\n this._pendingEmitters.get(msg.req).fire(msg.event);\n }\n _handleUnsubscribeEventMessage(msg) {\n if (!this._pendingEvents.has(msg.req)) {\n console.warn('Got unsubscribe for unknown req');\n return;\n }\n this._pendingEvents.get(msg.req).dispose();\n this._pendingEvents.delete(msg.req);\n }\n _send(msg) {\n const transfer = [];\n if (msg.type === 0 /* MessageType.Request */) {\n for (let i = 0; i < msg.args.length; i++) {\n if (msg.args[i] instanceof ArrayBuffer) {\n transfer.push(msg.args[i]);\n }\n }\n }\n else if (msg.type === 1 /* MessageType.Reply */) {\n if (msg.res instanceof ArrayBuffer) {\n transfer.push(msg.res);\n }\n }\n this._handler.sendMessage(msg, transfer);\n }\n}\n/**\n * Main thread side\n */\nexport class SimpleWorkerClient extends Disposable {\n constructor(workerFactory, moduleId, host) {\n super();\n let lazyProxyReject = null;\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\n this._protocol.handleMessage(msg);\n }, (err) => {\n // in Firefox, web workers fail lazily :(\n // we will reject the proxy\n lazyProxyReject === null || lazyProxyReject === void 0 ? void 0 : lazyProxyReject(err);\n }));\n this._protocol = new SimpleWorkerProtocol({\n sendMessage: (msg, transfer) => {\n this._worker.postMessage(msg, transfer);\n },\n handleMessage: (method, args) => {\n if (typeof host[method] !== 'function') {\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\n }\n try {\n return Promise.resolve(host[method].apply(host, args));\n }\n catch (e) {\n return Promise.reject(e);\n }\n },\n handleEvent: (eventName, arg) => {\n if (propertyIsDynamicEvent(eventName)) {\n const event = host[eventName].call(host, arg);\n if (typeof event !== 'function') {\n throw new Error(`Missing dynamic event ${eventName} on main thread host.`);\n }\n return event;\n }\n if (propertyIsEvent(eventName)) {\n const event = host[eventName];\n if (typeof event !== 'function') {\n throw new Error(`Missing event ${eventName} on main thread host.`);\n }\n return event;\n }\n throw new Error(`Malformed event name ${eventName}`);\n }\n });\n this._protocol.setWorkerId(this._worker.getId());\n // Gather loader configuration\n let loaderConfiguration = null;\n if (typeof globals.require !== 'undefined' && typeof globals.require.getConfig === 'function') {\n // Get the configuration from the Monaco AMD Loader\n loaderConfiguration = globals.require.getConfig();\n }\n else if (typeof globals.requirejs !== 'undefined') {\n // Get the configuration from requirejs\n loaderConfiguration = globals.requirejs.s.contexts._.config;\n }\n const hostMethods = types.getAllMethodNames(host);\n // Send initialize message\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\n this._worker.getId(),\n JSON.parse(JSON.stringify(loaderConfiguration)),\n moduleId,\n hostMethods,\n ]);\n // Create proxy to loaded code\n const proxyMethodRequest = (method, args) => {\n return this._request(method, args);\n };\n const proxyListen = (eventName, arg) => {\n return this._protocol.listen(eventName, arg);\n };\n this._lazyProxy = new Promise((resolve, reject) => {\n lazyProxyReject = reject;\n this._onModuleLoaded.then((availableMethods) => {\n resolve(createProxyObject(availableMethods, proxyMethodRequest, proxyListen));\n }, (e) => {\n reject(e);\n this._onError('Worker failed to load ' + moduleId, e);\n });\n });\n }\n getProxyObject() {\n return this._lazyProxy;\n }\n _request(method, args) {\n return new Promise((resolve, reject) => {\n this._onModuleLoaded.then(() => {\n this._protocol.sendMessage(method, args).then(resolve, reject);\n }, reject);\n });\n }\n _onError(message, error) {\n console.error(message);\n console.info(error);\n }\n}\nfunction propertyIsEvent(name) {\n // Assume a property is an event if it has a form of \"onSomething\"\n return name[0] === 'o' && name[1] === 'n' && strings.isUpperAsciiLetter(name.charCodeAt(2));\n}\nfunction propertyIsDynamicEvent(name) {\n // Assume a property is a dynamic event (a method that returns an event) if it has a form of \"onDynamicSomething\"\n return /^onDynamic/.test(name) && strings.isUpperAsciiLetter(name.charCodeAt(9));\n}\nfunction createProxyObject(methodNames, invoke, proxyListen) {\n const createProxyMethod = (method) => {\n return function () {\n const args = Array.prototype.slice.call(arguments, 0);\n return invoke(method, args);\n };\n };\n const createProxyDynamicEvent = (eventName) => {\n return function (arg) {\n return proxyListen(eventName, arg);\n };\n };\n const result = {};\n for (const methodName of methodNames) {\n if (propertyIsDynamicEvent(methodName)) {\n result[methodName] = createProxyDynamicEvent(methodName);\n continue;\n }\n if (propertyIsEvent(methodName)) {\n result[methodName] = proxyListen(methodName, undefined);\n continue;\n }\n result[methodName] = createProxyMethod(methodName);\n }\n return result;\n}\n/**\n * Worker side\n */\nexport class SimpleWorkerServer {\n constructor(postMessage, requestHandlerFactory) {\n this._requestHandlerFactory = requestHandlerFactory;\n this._requestHandler = null;\n this._protocol = new SimpleWorkerProtocol({\n sendMessage: (msg, transfer) => {\n postMessage(msg, transfer);\n },\n handleMessage: (method, args) => this._handleMessage(method, args),\n handleEvent: (eventName, arg) => this._handleEvent(eventName, arg)\n });\n }\n onmessage(msg) {\n this._protocol.handleMessage(msg);\n }\n _handleMessage(method, args) {\n if (method === INITIALIZE) {\n return this.initialize(args[0], args[1], args[2], args[3]);\n }\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\n }\n try {\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n _handleEvent(eventName, arg) {\n if (!this._requestHandler) {\n throw new Error(`Missing requestHandler`);\n }\n if (propertyIsDynamicEvent(eventName)) {\n const event = this._requestHandler[eventName].call(this._requestHandler, arg);\n if (typeof event !== 'function') {\n throw new Error(`Missing dynamic event ${eventName} on request handler.`);\n }\n return event;\n }\n if (propertyIsEvent(eventName)) {\n const event = this._requestHandler[eventName];\n if (typeof event !== 'function') {\n throw new Error(`Missing event ${eventName} on request handler.`);\n }\n return event;\n }\n throw new Error(`Malformed event name ${eventName}`);\n }\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\n this._protocol.setWorkerId(workerId);\n const proxyMethodRequest = (method, args) => {\n return this._protocol.sendMessage(method, args);\n };\n const proxyListen = (eventName, arg) => {\n return this._protocol.listen(eventName, arg);\n };\n const hostProxy = createProxyObject(hostMethods, proxyMethodRequest, proxyListen);\n if (this._requestHandlerFactory) {\n // static request handler\n this._requestHandler = this._requestHandlerFactory(hostProxy);\n return Promise.resolve(types.getAllMethodNames(this._requestHandler));\n }\n if (loaderConfig) {\n // Remove 'baseUrl', handling it is beyond scope for now\n if (typeof loaderConfig.baseUrl !== 'undefined') {\n delete loaderConfig['baseUrl'];\n }\n if (typeof loaderConfig.paths !== 'undefined') {\n if (typeof loaderConfig.paths.vs !== 'undefined') {\n delete loaderConfig.paths['vs'];\n }\n }\n if (typeof loaderConfig.trustedTypesPolicy !== undefined) {\n // don't use, it has been destroyed during serialize\n delete loaderConfig['trustedTypesPolicy'];\n }\n // Since this is in a web worker, enable catching errors\n loaderConfig.catchError = true;\n globals.require.config(loaderConfig);\n }\n return new Promise((resolve, reject) => {\n // Use the global require to be sure to get the global config\n // ESM-comment-begin\n // \t\t\tconst req = (globals.require || require);\n // ESM-comment-end\n // ESM-uncomment-begin\n const req = globals.require;\n // ESM-uncomment-end\n req([moduleId], (module) => {\n this._requestHandler = module.create(hostProxy);\n if (!this._requestHandler) {\n reject(new Error(`No RequestHandler!`));\n return;\n }\n resolve(types.getAllMethodNames(this._requestHandler));\n }, reject);\n });\n }\n}\n/**\n * Called on the worker side\n */\nexport function create(postMessage) {\n return new SimpleWorkerServer(postMessage, null);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nimport { globals } from '../common/platform.js';\nimport { logOnceWebWorkerWarning } from '../common/worker/simpleWorker.js';\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });\nfunction getWorker(label) {\n // Option for hosts to overwrite the worker script (used in the standalone editor)\n if (globals.MonacoEnvironment) {\n if (typeof globals.MonacoEnvironment.getWorker === 'function') {\n return globals.MonacoEnvironment.getWorker('workerMain.js', label);\n }\n if (typeof globals.MonacoEnvironment.getWorkerUrl === 'function') {\n const workerUrl = globals.MonacoEnvironment.getWorkerUrl('workerMain.js', label);\n return new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) : workerUrl, { name: label });\n }\n }\n // ESM-comment-begin\n // \tif (typeof require === 'function') {\n // \t\t// check if the JS lives on a different origin\n // \t\tconst workerMain = require.toUrl('vs/base/worker/workerMain.js'); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321\n // \t\tconst workerUrl = getWorkerBootstrapUrl(workerMain, label);\n // \t\treturn new Worker(ttPolicy ? ttPolicy.createScriptURL(workerUrl) as unknown as string : workerUrl, { name: label });\n // \t}\n // ESM-comment-end\n throw new Error(`You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker`);\n}\n// ESM-comment-begin\n// export function getWorkerBootstrapUrl(scriptPath: string, label: string): string {\n// \tif (/^((http:)|(https:)|(file:))/.test(scriptPath) && scriptPath.substring(0, self.origin.length) !== self.origin) {\n// \t\t// this is the cross-origin case\n// \t\t// i.e. the webpage is running at a different origin than where the scripts are loaded from\n// \t\tconst myPath = 'vs/base/worker/defaultWorkerFactory.js';\n// \t\tconst workerBaseUrl = require.toUrl(myPath).slice(0, -myPath.length); // explicitly using require.toUrl(), see https://github.com/microsoft/vscode/issues/107440#issuecomment-698982321\n// \t\tconst js = `/*${label}*/self.MonacoEnvironment={baseUrl: '${workerBaseUrl}'};const ttPolicy = self.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });importScripts(ttPolicy?.createScriptURL('${scriptPath}') ?? '${scriptPath}');/*${label}*/`;\n// \t\tconst blob = new Blob([js], { type: 'application/javascript' });\n// \t\treturn URL.createObjectURL(blob);\n// \t}\n// \treturn scriptPath + '#' + label;\n// }\n// ESM-comment-end\nfunction isPromiseLike(obj) {\n if (typeof obj.then === 'function') {\n return true;\n }\n return false;\n}\n/**\n * A worker that uses HTML5 web workers so that is has\n * its own global scope and its own thread.\n */\nclass WebWorker {\n constructor(moduleId, id, label, onMessageCallback, onErrorCallback) {\n this.id = id;\n const workerOrPromise = getWorker(label);\n if (isPromiseLike(workerOrPromise)) {\n this.worker = workerOrPromise;\n }\n else {\n this.worker = Promise.resolve(workerOrPromise);\n }\n this.postMessage(moduleId, []);\n this.worker.then((w) => {\n w.onmessage = function (ev) {\n onMessageCallback(ev.data);\n };\n w.onmessageerror = onErrorCallback;\n if (typeof w.addEventListener === 'function') {\n w.addEventListener('error', onErrorCallback);\n }\n });\n }\n getId() {\n return this.id;\n }\n postMessage(message, transfer) {\n var _a;\n (_a = this.worker) === null || _a === void 0 ? void 0 : _a.then(w => w.postMessage(message, transfer));\n }\n dispose() {\n var _a;\n (_a = this.worker) === null || _a === void 0 ? void 0 : _a.then(w => w.terminate());\n this.worker = null;\n }\n}\nexport class DefaultWorkerFactory {\n constructor(label) {\n this._label = label;\n this._webWorkerFailedBeforeError = false;\n }\n create(moduleId, onMessageCallback, onErrorCallback) {\n const workerId = (++DefaultWorkerFactory.LAST_WORKER_ID);\n if (this._webWorkerFailedBeforeError) {\n throw this._webWorkerFailedBeforeError;\n }\n return new WebWorker(moduleId, workerId, this._label || 'anonymous' + workerId, onMessageCallback, (err) => {\n logOnceWebWorkerWarning(err);\n this._webWorkerFailedBeforeError = err;\n onErrorCallback(err);\n });\n }\n}\nDefaultWorkerFactory.LAST_WORKER_ID = 0;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { LcsDiff } from '../../../base/common/diff/diff.js';\nimport * as strings from '../../../base/common/strings.js';\nconst MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\nfunction computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\n const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);\n return diffAlgo.ComputeDiff(pretty);\n}\nclass LineSequence {\n constructor(lines) {\n const startColumns = [];\n const endColumns = [];\n for (let i = 0, length = lines.length; i < length; i++) {\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\n }\n this.lines = lines;\n this._startColumns = startColumns;\n this._endColumns = endColumns;\n }\n getElements() {\n const elements = [];\n for (let i = 0, len = this.lines.length; i < len; i++) {\n elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\n }\n return elements;\n }\n getStrictElement(index) {\n return this.lines[index];\n }\n getStartLineNumber(i) {\n return i + 1;\n }\n getEndLineNumber(i) {\n return i + 1;\n }\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\n const charCodes = [];\n const lineNumbers = [];\n const columns = [];\n let len = 0;\n for (let index = startIndex; index <= endIndex; index++) {\n const lineContent = this.lines[index];\n const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1);\n const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1);\n for (let col = startColumn; col < endColumn; col++) {\n charCodes[len] = lineContent.charCodeAt(col - 1);\n lineNumbers[len] = index + 1;\n columns[len] = col;\n len++;\n }\n if (!shouldIgnoreTrimWhitespace && index < endIndex) {\n // Add \\n if trim whitespace is not ignored\n charCodes[len] = 10 /* CharCode.LineFeed */;\n lineNumbers[len] = index + 1;\n columns[len] = lineContent.length + 1;\n len++;\n }\n }\n return new CharSequence(charCodes, lineNumbers, columns);\n }\n}\nclass CharSequence {\n constructor(charCodes, lineNumbers, columns) {\n this._charCodes = charCodes;\n this._lineNumbers = lineNumbers;\n this._columns = columns;\n }\n toString() {\n return ('[' + this._charCodes.map((s, idx) => (s === 10 /* CharCode.LineFeed */ ? '\\\\n' : String.fromCharCode(s)) + `-(${this._lineNumbers[idx]},${this._columns[idx]})`).join(', ') + ']');\n }\n _assertIndex(index, arr) {\n if (index < 0 || index >= arr.length) {\n throw new Error(`Illegal index`);\n }\n }\n getElements() {\n return this._charCodes;\n }\n getStartLineNumber(i) {\n if (i > 0 && i === this._lineNumbers.length) {\n // the start line number of the element after the last element\n // is the end line number of the last element\n return this.getEndLineNumber(i - 1);\n }\n this._assertIndex(i, this._lineNumbers);\n return this._lineNumbers[i];\n }\n getEndLineNumber(i) {\n if (i === -1) {\n // the end line number of the element before the first element\n // is the start line number of the first element\n return this.getStartLineNumber(i + 1);\n }\n this._assertIndex(i, this._lineNumbers);\n if (this._charCodes[i] === 10 /* CharCode.LineFeed */) {\n return this._lineNumbers[i] + 1;\n }\n return this._lineNumbers[i];\n }\n getStartColumn(i) {\n if (i > 0 && i === this._columns.length) {\n // the start column of the element after the last element\n // is the end column of the last element\n return this.getEndColumn(i - 1);\n }\n this._assertIndex(i, this._columns);\n return this._columns[i];\n }\n getEndColumn(i) {\n if (i === -1) {\n // the end column of the element before the first element\n // is the start column of the first element\n return this.getStartColumn(i + 1);\n }\n this._assertIndex(i, this._columns);\n if (this._charCodes[i] === 10 /* CharCode.LineFeed */) {\n return 1;\n }\n return this._columns[i] + 1;\n }\n}\nclass CharChange {\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\n this.originalStartLineNumber = originalStartLineNumber;\n this.originalStartColumn = originalStartColumn;\n this.originalEndLineNumber = originalEndLineNumber;\n this.originalEndColumn = originalEndColumn;\n this.modifiedStartLineNumber = modifiedStartLineNumber;\n this.modifiedStartColumn = modifiedStartColumn;\n this.modifiedEndLineNumber = modifiedEndLineNumber;\n this.modifiedEndColumn = modifiedEndColumn;\n }\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\n const originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\n const originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\n const originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\n const originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\n const modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\n const modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\n const modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n const modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\n }\n}\nfunction postProcessCharChanges(rawChanges) {\n if (rawChanges.length <= 1) {\n return rawChanges;\n }\n const result = [rawChanges[0]];\n let prevChange = result[0];\n for (let i = 1, len = rawChanges.length; i < len; i++) {\n const currChange = rawChanges[i];\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\n // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true\n const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength);\n if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) {\n // Merge the current change into the previous one\n prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart;\n prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart;\n }\n else {\n // Add the current change\n result.push(currChange);\n prevChange = currChange;\n }\n }\n return result;\n}\nclass LineChange {\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\n this.originalStartLineNumber = originalStartLineNumber;\n this.originalEndLineNumber = originalEndLineNumber;\n this.modifiedStartLineNumber = modifiedStartLineNumber;\n this.modifiedEndLineNumber = modifiedEndLineNumber;\n this.charChanges = charChanges;\n }\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\n let originalStartLineNumber;\n let originalEndLineNumber;\n let modifiedStartLineNumber;\n let modifiedEndLineNumber;\n let charChanges = undefined;\n if (diffChange.originalLength === 0) {\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\n originalEndLineNumber = 0;\n }\n else {\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\n }\n if (diffChange.modifiedLength === 0) {\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\n modifiedEndLineNumber = 0;\n }\n else {\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\n }\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\n // Compute character changes for diff chunks of at most 20 lines...\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\n if (originalCharSequence.getElements().length > 0 && modifiedCharSequence.getElements().length > 0) {\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\n if (shouldPostProcessCharChanges) {\n rawChanges = postProcessCharChanges(rawChanges);\n }\n charChanges = [];\n for (let i = 0, length = rawChanges.length; i < length; i++) {\n charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\n }\n }\n }\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\n }\n}\nexport class DiffComputer {\n constructor(originalLines, modifiedLines, opts) {\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\n this.originalLines = originalLines;\n this.modifiedLines = modifiedLines;\n this.original = new LineSequence(originalLines);\n this.modified = new LineSequence(modifiedLines);\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...\n }\n computeDiff() {\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\n // empty original => fast path\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\n return {\n quitEarly: false,\n changes: []\n };\n }\n return {\n quitEarly: false,\n changes: [{\n originalStartLineNumber: 1,\n originalEndLineNumber: 1,\n modifiedStartLineNumber: 1,\n modifiedEndLineNumber: this.modified.lines.length,\n charChanges: [{\n modifiedEndColumn: 0,\n modifiedEndLineNumber: 0,\n modifiedStartColumn: 0,\n modifiedStartLineNumber: 0,\n originalEndColumn: 0,\n originalEndLineNumber: 0,\n originalStartColumn: 0,\n originalStartLineNumber: 0\n }]\n }]\n };\n }\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\n // empty modified => fast path\n return {\n quitEarly: false,\n changes: [{\n originalStartLineNumber: 1,\n originalEndLineNumber: this.original.lines.length,\n modifiedStartLineNumber: 1,\n modifiedEndLineNumber: 1,\n charChanges: [{\n modifiedEndColumn: 0,\n modifiedEndLineNumber: 0,\n modifiedStartColumn: 0,\n modifiedStartLineNumber: 0,\n originalEndColumn: 0,\n originalEndLineNumber: 0,\n originalStartColumn: 0,\n originalStartLineNumber: 0\n }]\n }]\n };\n }\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\n const rawChanges = diffResult.changes;\n const quitEarly = diffResult.quitEarly;\n // The diff is always computed with ignoring trim whitespace\n // This ensures we get the prettiest diff\n if (this.shouldIgnoreTrimWhitespace) {\n const lineChanges = [];\n for (let i = 0, length = rawChanges.length; i < length; i++) {\n lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\n }\n return {\n quitEarly: quitEarly,\n changes: lineChanges\n };\n }\n // Need to post-process and introduce changes where the trim whitespace is different\n // Note that we are looping starting at -1 to also cover the lines before the first change\n const result = [];\n let originalLineIndex = 0;\n let modifiedLineIndex = 0;\n for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) {\n const nextChange = (i + 1 < len ? rawChanges[i + 1] : null);\n const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length);\n const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length);\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\n const originalLine = this.originalLines[originalLineIndex];\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\n if (originalLine !== modifiedLine) {\n // These lines differ only in trim whitespace\n // Check the leading whitespace\n {\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\n const originalChar = originalLine.charCodeAt(originalStartColumn - 2);\n const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);\n if (originalChar !== modifiedChar) {\n break;\n }\n originalStartColumn--;\n modifiedStartColumn--;\n }\n if (originalStartColumn > 1 || modifiedStartColumn > 1) {\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\n }\n }\n // Check the trailing whitespace\n {\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\n const originalMaxColumn = originalLine.length + 1;\n const modifiedMaxColumn = modifiedLine.length + 1;\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\n const originalChar = originalLine.charCodeAt(originalEndColumn - 1);\n const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1);\n if (originalChar !== modifiedChar) {\n break;\n }\n originalEndColumn++;\n modifiedEndColumn++;\n }\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) {\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\n }\n }\n }\n originalLineIndex++;\n modifiedLineIndex++;\n }\n if (nextChange) {\n // Emit the actual change\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\n originalLineIndex += nextChange.originalLength;\n modifiedLineIndex += nextChange.modifiedLength;\n }\n }\n return {\n quitEarly: quitEarly,\n changes: result\n };\n }\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) {\n // Merged into previous\n return;\n }\n let charChanges = undefined;\n if (this.shouldComputeCharChanges) {\n charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\n }\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\n }\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\n const len = result.length;\n if (len === 0) {\n return false;\n }\n const prevChange = result[len - 1];\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) {\n // Don't merge with inserts/deletes\n return false;\n }\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\n prevChange.originalEndLineNumber = originalLineNumber;\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\n if (this.shouldComputeCharChanges && prevChange.charChanges) {\n prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\n }\n return true;\n }\n return false;\n }\n}\nfunction getFirstNonBlankColumn(txt, defaultValue) {\n const r = strings.firstNonWhitespaceIndex(txt);\n if (r === -1) {\n return defaultValue;\n }\n return r + 1;\n}\nfunction getLastNonBlankColumn(txt, defaultValue) {\n const r = strings.lastNonWhitespaceIndex(txt);\n if (r === -1) {\n return defaultValue;\n }\n return r + 2;\n}\nfunction createContinueProcessingPredicate(maximumRuntime) {\n if (maximumRuntime === 0) {\n return () => true;\n }\n const startTime = Date.now();\n return () => {\n return Date.now() - startTime < maximumRuntime;\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { splitLines } from '../../../base/common/strings.js';\nimport { Position } from '../core/position.js';\nimport { PrefixSumComputer } from './prefixSumComputer.js';\nexport class MirrorTextModel {\n constructor(uri, lines, eol, versionId) {\n this._uri = uri;\n this._lines = lines;\n this._eol = eol;\n this._versionId = versionId;\n this._lineStarts = null;\n this._cachedTextValue = null;\n }\n dispose() {\n this._lines.length = 0;\n }\n get version() {\n return this._versionId;\n }\n getText() {\n if (this._cachedTextValue === null) {\n this._cachedTextValue = this._lines.join(this._eol);\n }\n return this._cachedTextValue;\n }\n onEvents(e) {\n if (e.eol && e.eol !== this._eol) {\n this._eol = e.eol;\n this._lineStarts = null;\n }\n // Update my lines\n const changes = e.changes;\n for (const change of changes) {\n this._acceptDeleteRange(change.range);\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\n }\n this._versionId = e.versionId;\n this._cachedTextValue = null;\n }\n _ensureLineStarts() {\n if (!this._lineStarts) {\n const eolLength = this._eol.length;\n const linesLength = this._lines.length;\n const lineStartValues = new Uint32Array(linesLength);\n for (let i = 0; i < linesLength; i++) {\n lineStartValues[i] = this._lines[i].length + eolLength;\n }\n this._lineStarts = new PrefixSumComputer(lineStartValues);\n }\n }\n /**\n * All changes to a line's text go through this method\n */\n _setLineText(lineIndex, newValue) {\n this._lines[lineIndex] = newValue;\n if (this._lineStarts) {\n // update prefix sum\n this._lineStarts.setValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\n }\n }\n _acceptDeleteRange(range) {\n if (range.startLineNumber === range.endLineNumber) {\n if (range.startColumn === range.endColumn) {\n // Nothing to delete\n return;\n }\n // Delete text on the affected line\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\n + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\n return;\n }\n // Take remaining text on last line and append it to remaining text on first line\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\n + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\n // Delete middle lines\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\n if (this._lineStarts) {\n // update prefix sum\n this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\n }\n }\n _acceptInsertText(position, insertText) {\n if (insertText.length === 0) {\n // Nothing to insert\n return;\n }\n const insertLines = splitLines(insertText);\n if (insertLines.length === 1) {\n // Inserting text on one line\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\n + insertLines[0]\n + this._lines[position.lineNumber - 1].substring(position.column - 1));\n return;\n }\n // Append overflowing text from first line to the end of text to insert\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\n // Delete overflowing text from first line and insert text on first line\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\n + insertLines[0]);\n // Insert new lines & store lengths\n const newLengths = new Uint32Array(insertLines.length - 1);\n for (let i = 1; i < insertLines.length; i++) {\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\n }\n if (this._lineStarts) {\n // update prefix sum\n this._lineStarts.insertValues(position.lineNumber, newLengths);\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { CharacterClassifier } from '../core/characterClassifier.js';\nexport class Uint8Matrix {\n constructor(rows, cols, defaultValue) {\n const data = new Uint8Array(rows * cols);\n for (let i = 0, len = rows * cols; i < len; i++) {\n data[i] = defaultValue;\n }\n this._data = data;\n this.rows = rows;\n this.cols = cols;\n }\n get(row, col) {\n return this._data[row * this.cols + col];\n }\n set(row, col, value) {\n this._data[row * this.cols + col] = value;\n }\n}\nexport class StateMachine {\n constructor(edges) {\n let maxCharCode = 0;\n let maxState = 0 /* State.Invalid */;\n for (let i = 0, len = edges.length; i < len; i++) {\n const [from, chCode, to] = edges[i];\n if (chCode > maxCharCode) {\n maxCharCode = chCode;\n }\n if (from > maxState) {\n maxState = from;\n }\n if (to > maxState) {\n maxState = to;\n }\n }\n maxCharCode++;\n maxState++;\n const states = new Uint8Matrix(maxState, maxCharCode, 0 /* State.Invalid */);\n for (let i = 0, len = edges.length; i < len; i++) {\n const [from, chCode, to] = edges[i];\n states.set(from, chCode, to);\n }\n this._states = states;\n this._maxCharCode = maxCharCode;\n }\n nextState(currentState, chCode) {\n if (chCode < 0 || chCode >= this._maxCharCode) {\n return 0 /* State.Invalid */;\n }\n return this._states.get(currentState, chCode);\n }\n}\n// State machine for http:// or https:// or file://\nlet _stateMachine = null;\nfunction getStateMachine() {\n if (_stateMachine === null) {\n _stateMachine = new StateMachine([\n [1 /* State.Start */, 104 /* CharCode.h */, 2 /* State.H */],\n [1 /* State.Start */, 72 /* CharCode.H */, 2 /* State.H */],\n [1 /* State.Start */, 102 /* CharCode.f */, 6 /* State.F */],\n [1 /* State.Start */, 70 /* CharCode.F */, 6 /* State.F */],\n [2 /* State.H */, 116 /* CharCode.t */, 3 /* State.HT */],\n [2 /* State.H */, 84 /* CharCode.T */, 3 /* State.HT */],\n [3 /* State.HT */, 116 /* CharCode.t */, 4 /* State.HTT */],\n [3 /* State.HT */, 84 /* CharCode.T */, 4 /* State.HTT */],\n [4 /* State.HTT */, 112 /* CharCode.p */, 5 /* State.HTTP */],\n [4 /* State.HTT */, 80 /* CharCode.P */, 5 /* State.HTTP */],\n [5 /* State.HTTP */, 115 /* CharCode.s */, 9 /* State.BeforeColon */],\n [5 /* State.HTTP */, 83 /* CharCode.S */, 9 /* State.BeforeColon */],\n [5 /* State.HTTP */, 58 /* CharCode.Colon */, 10 /* State.AfterColon */],\n [6 /* State.F */, 105 /* CharCode.i */, 7 /* State.FI */],\n [6 /* State.F */, 73 /* CharCode.I */, 7 /* State.FI */],\n [7 /* State.FI */, 108 /* CharCode.l */, 8 /* State.FIL */],\n [7 /* State.FI */, 76 /* CharCode.L */, 8 /* State.FIL */],\n [8 /* State.FIL */, 101 /* CharCode.e */, 9 /* State.BeforeColon */],\n [8 /* State.FIL */, 69 /* CharCode.E */, 9 /* State.BeforeColon */],\n [9 /* State.BeforeColon */, 58 /* CharCode.Colon */, 10 /* State.AfterColon */],\n [10 /* State.AfterColon */, 47 /* CharCode.Slash */, 11 /* State.AlmostThere */],\n [11 /* State.AlmostThere */, 47 /* CharCode.Slash */, 12 /* State.End */],\n ]);\n }\n return _stateMachine;\n}\nlet _classifier = null;\nfunction getClassifier() {\n if (_classifier === null) {\n _classifier = new CharacterClassifier(0 /* CharacterClass.None */);\n // allow-any-unicode-next-line\n const FORCE_TERMINATION_CHARACTERS = ' \\t<>\\'\\\"、。。、,.:;‘〈「『〔([{「」}])〕』」〉’`~…';\n for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) {\n _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* CharacterClass.ForceTermination */);\n }\n const CANNOT_END_WITH_CHARACTERS = '.,;:';\n for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) {\n _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CharacterClass.CannotEndIn */);\n }\n }\n return _classifier;\n}\nexport class LinkComputer {\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\n // Do not allow to end link in certain characters...\n let lastIncludedCharIndex = linkEndIndex - 1;\n do {\n const chCode = line.charCodeAt(lastIncludedCharIndex);\n const chClass = classifier.get(chCode);\n if (chClass !== 2 /* CharacterClass.CannotEndIn */) {\n break;\n }\n lastIncludedCharIndex--;\n } while (lastIncludedCharIndex > linkBeginIndex);\n // Handle links enclosed in parens, square brackets and curlys.\n if (linkBeginIndex > 0) {\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\n if ((charCodeBeforeLink === 40 /* CharCode.OpenParen */ && lastCharCodeInLink === 41 /* CharCode.CloseParen */)\n || (charCodeBeforeLink === 91 /* CharCode.OpenSquareBracket */ && lastCharCodeInLink === 93 /* CharCode.CloseSquareBracket */)\n || (charCodeBeforeLink === 123 /* CharCode.OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CharCode.CloseCurlyBrace */)) {\n // Do not end in ) if ( is before the link start\n // Do not end in ] if [ is before the link start\n // Do not end in } if { is before the link start\n lastIncludedCharIndex--;\n }\n }\n return {\n range: {\n startLineNumber: lineNumber,\n startColumn: linkBeginIndex + 1,\n endLineNumber: lineNumber,\n endColumn: lastIncludedCharIndex + 2\n },\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\n };\n }\n static computeLinks(model, stateMachine = getStateMachine()) {\n const classifier = getClassifier();\n const result = [];\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\n const line = model.getLineContent(i);\n const len = line.length;\n let j = 0;\n let linkBeginIndex = 0;\n let linkBeginChCode = 0;\n let state = 1 /* State.Start */;\n let hasOpenParens = false;\n let hasOpenSquareBracket = false;\n let inSquareBrackets = false;\n let hasOpenCurlyBracket = false;\n while (j < len) {\n let resetStateMachine = false;\n const chCode = line.charCodeAt(j);\n if (state === 13 /* State.Accept */) {\n let chClass;\n switch (chCode) {\n case 40 /* CharCode.OpenParen */:\n hasOpenParens = true;\n chClass = 0 /* CharacterClass.None */;\n break;\n case 41 /* CharCode.CloseParen */:\n chClass = (hasOpenParens ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */);\n break;\n case 91 /* CharCode.OpenSquareBracket */:\n inSquareBrackets = true;\n hasOpenSquareBracket = true;\n chClass = 0 /* CharacterClass.None */;\n break;\n case 93 /* CharCode.CloseSquareBracket */:\n inSquareBrackets = false;\n chClass = (hasOpenSquareBracket ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */);\n break;\n case 123 /* CharCode.OpenCurlyBrace */:\n hasOpenCurlyBracket = true;\n chClass = 0 /* CharacterClass.None */;\n break;\n case 125 /* CharCode.CloseCurlyBrace */:\n chClass = (hasOpenCurlyBracket ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */);\n break;\n /* The following three rules make it that ' or \" or ` are allowed inside links if the link didn't begin with them */\n case 39 /* CharCode.SingleQuote */:\n chClass = (linkBeginChCode === 39 /* CharCode.SingleQuote */ ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */);\n break;\n case 34 /* CharCode.DoubleQuote */:\n chClass = (linkBeginChCode === 34 /* CharCode.DoubleQuote */ ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */);\n break;\n case 96 /* CharCode.BackTick */:\n chClass = (linkBeginChCode === 96 /* CharCode.BackTick */ ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */);\n break;\n case 42 /* CharCode.Asterisk */:\n // `*` terminates a link if the link began with `*`\n chClass = (linkBeginChCode === 42 /* CharCode.Asterisk */) ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */;\n break;\n case 124 /* CharCode.Pipe */:\n // `|` terminates a link if the link began with `|`\n chClass = (linkBeginChCode === 124 /* CharCode.Pipe */) ? 1 /* CharacterClass.ForceTermination */ : 0 /* CharacterClass.None */;\n break;\n case 32 /* CharCode.Space */:\n // ` ` allow space in between [ and ]\n chClass = (inSquareBrackets ? 0 /* CharacterClass.None */ : 1 /* CharacterClass.ForceTermination */);\n break;\n default:\n chClass = classifier.get(chCode);\n }\n // Check if character terminates link\n if (chClass === 1 /* CharacterClass.ForceTermination */) {\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\n resetStateMachine = true;\n }\n }\n else if (state === 12 /* State.End */) {\n let chClass;\n if (chCode === 91 /* CharCode.OpenSquareBracket */) {\n // Allow for the authority part to contain ipv6 addresses which contain [ and ]\n hasOpenSquareBracket = true;\n chClass = 0 /* CharacterClass.None */;\n }\n else {\n chClass = classifier.get(chCode);\n }\n // Check if character terminates link\n if (chClass === 1 /* CharacterClass.ForceTermination */) {\n resetStateMachine = true;\n }\n else {\n state = 13 /* State.Accept */;\n }\n }\n else {\n state = stateMachine.nextState(state, chCode);\n if (state === 0 /* State.Invalid */) {\n resetStateMachine = true;\n }\n }\n if (resetStateMachine) {\n state = 1 /* State.Start */;\n hasOpenParens = false;\n hasOpenSquareBracket = false;\n hasOpenCurlyBracket = false;\n // Record where the link started\n linkBeginIndex = j + 1;\n linkBeginChCode = chCode;\n }\n j++;\n }\n if (state === 13 /* State.Accept */) {\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\n }\n }\n return result;\n }\n}\n/**\n * Returns an array of all links contains in the provided\n * document. *Note* that this operation is computational\n * expensive and should not run in the UI thread.\n */\nexport function computeLinks(model) {\n if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') {\n // Unknown caller!\n return [];\n }\n return LinkComputer.computeLinks(model);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class BasicInplaceReplace {\n constructor() {\n this._defaultValueSet = [\n ['true', 'false'],\n ['True', 'False'],\n ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],\n ['public', 'protected', 'private'],\n ];\n }\n navigateValueSet(range1, text1, range2, text2, up) {\n if (range1 && text1) {\n const result = this.doNavigateValueSet(text1, up);\n if (result) {\n return {\n range: range1,\n value: result\n };\n }\n }\n if (range2 && text2) {\n const result = this.doNavigateValueSet(text2, up);\n if (result) {\n return {\n range: range2,\n value: result\n };\n }\n }\n return null;\n }\n doNavigateValueSet(text, up) {\n const numberResult = this.numberReplace(text, up);\n if (numberResult !== null) {\n return numberResult;\n }\n return this.textReplace(text, up);\n }\n numberReplace(value, up) {\n const precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));\n let n1 = Number(value);\n const n2 = parseFloat(value);\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {\n if (n1 === 0 && !up) {\n return null; // don't do negative\n //\t\t\t} else if(n1 === 9 && up) {\n //\t\t\t\treturn null; // don't insert 10 into a number\n }\n else {\n n1 = Math.floor(n1 * precision);\n n1 += up ? precision : -precision;\n return String(n1 / precision);\n }\n }\n return null;\n }\n textReplace(value, up) {\n return this.valueSetsReplace(this._defaultValueSet, value, up);\n }\n valueSetsReplace(valueSets, value, up) {\n let result = null;\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) {\n result = this.valueSetReplace(valueSets[i], value, up);\n }\n return result;\n }\n valueSetReplace(valueSet, value, up) {\n let idx = valueSet.indexOf(value);\n if (idx >= 0) {\n idx += up ? +1 : -1;\n if (idx < 0) {\n idx = valueSet.length - 1;\n }\n else {\n idx %= valueSet.length;\n }\n return valueSet[idx];\n }\n return null;\n }\n}\nBasicInplaceReplace.INSTANCE = new BasicInplaceReplace();\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { stringDiff } from '../../../base/common/diff/diff.js';\nimport { globals } from '../../../base/common/platform.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { Position } from '../core/position.js';\nimport { Range } from '../core/range.js';\nimport { DiffComputer } from '../diff/diffComputer.js';\nimport { MirrorTextModel as BaseMirrorModel } from '../model/mirrorTextModel.js';\nimport { ensureValidWordDefinition, getWordAtText } from '../core/wordHelper.js';\nimport { computeLinks } from '../languages/linkComputer.js';\nimport { BasicInplaceReplace } from '../languages/supports/inplaceReplaceSupport.js';\nimport { createMonacoBaseAPI } from './editorBaseApi.js';\nimport * as types from '../../../base/common/types.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { UnicodeTextModelHighlighter } from './unicodeTextModelHighlighter.js';\n/**\n * @internal\n */\nexport class MirrorModel extends BaseMirrorModel {\n get uri() {\n return this._uri;\n }\n get eol() {\n return this._eol;\n }\n getValue() {\n return this.getText();\n }\n getLinesContent() {\n return this._lines.slice(0);\n }\n getLineCount() {\n return this._lines.length;\n }\n getLineContent(lineNumber) {\n return this._lines[lineNumber - 1];\n }\n getWordAtPosition(position, wordDefinition) {\n const wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\n if (wordAtText) {\n return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\n }\n return null;\n }\n words(wordDefinition) {\n const lines = this._lines;\n const wordenize = this._wordenize.bind(this);\n let lineNumber = 0;\n let lineText = '';\n let wordRangesIdx = 0;\n let wordRanges = [];\n return {\n *[Symbol.iterator]() {\n while (true) {\n if (wordRangesIdx < wordRanges.length) {\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\n wordRangesIdx += 1;\n yield value;\n }\n else {\n if (lineNumber < lines.length) {\n lineText = lines[lineNumber];\n wordRanges = wordenize(lineText, wordDefinition);\n wordRangesIdx = 0;\n lineNumber += 1;\n }\n else {\n break;\n }\n }\n }\n }\n };\n }\n getLineWords(lineNumber, wordDefinition) {\n const content = this._lines[lineNumber - 1];\n const ranges = this._wordenize(content, wordDefinition);\n const words = [];\n for (const range of ranges) {\n words.push({\n word: content.substring(range.start, range.end),\n startColumn: range.start + 1,\n endColumn: range.end + 1\n });\n }\n return words;\n }\n _wordenize(content, wordDefinition) {\n const result = [];\n let match;\n wordDefinition.lastIndex = 0; // reset lastIndex just to be sure\n while (match = wordDefinition.exec(content)) {\n if (match[0].length === 0) {\n // it did match the empty string\n break;\n }\n result.push({ start: match.index, end: match.index + match[0].length });\n }\n return result;\n }\n getValueInRange(range) {\n range = this._validateRange(range);\n if (range.startLineNumber === range.endLineNumber) {\n return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\n }\n const lineEnding = this._eol;\n const startLineIndex = range.startLineNumber - 1;\n const endLineIndex = range.endLineNumber - 1;\n const resultLines = [];\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\n for (let i = startLineIndex + 1; i < endLineIndex; i++) {\n resultLines.push(this._lines[i]);\n }\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\n return resultLines.join(lineEnding);\n }\n offsetAt(position) {\n position = this._validatePosition(position);\n this._ensureLineStarts();\n return this._lineStarts.getPrefixSum(position.lineNumber - 2) + (position.column - 1);\n }\n positionAt(offset) {\n offset = Math.floor(offset);\n offset = Math.max(0, offset);\n this._ensureLineStarts();\n const out = this._lineStarts.getIndexOf(offset);\n const lineLength = this._lines[out.index].length;\n // Ensure we return a valid position\n return {\n lineNumber: 1 + out.index,\n column: 1 + Math.min(out.remainder, lineLength)\n };\n }\n _validateRange(range) {\n const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn });\n const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn });\n if (start.lineNumber !== range.startLineNumber\n || start.column !== range.startColumn\n || end.lineNumber !== range.endLineNumber\n || end.column !== range.endColumn) {\n return {\n startLineNumber: start.lineNumber,\n startColumn: start.column,\n endLineNumber: end.lineNumber,\n endColumn: end.column\n };\n }\n return range;\n }\n _validatePosition(position) {\n if (!Position.isIPosition(position)) {\n throw new Error('bad position');\n }\n let { lineNumber, column } = position;\n let hasChanged = false;\n if (lineNumber < 1) {\n lineNumber = 1;\n column = 1;\n hasChanged = true;\n }\n else if (lineNumber > this._lines.length) {\n lineNumber = this._lines.length;\n column = this._lines[lineNumber - 1].length + 1;\n hasChanged = true;\n }\n else {\n const maxCharacter = this._lines[lineNumber - 1].length + 1;\n if (column < 1) {\n column = 1;\n hasChanged = true;\n }\n else if (column > maxCharacter) {\n column = maxCharacter;\n hasChanged = true;\n }\n }\n if (!hasChanged) {\n return position;\n }\n else {\n return { lineNumber, column };\n }\n }\n}\n/**\n * @internal\n */\nexport class EditorSimpleWorker {\n constructor(host, foreignModuleFactory) {\n this._host = host;\n this._models = Object.create(null);\n this._foreignModuleFactory = foreignModuleFactory;\n this._foreignModule = null;\n }\n dispose() {\n this._models = Object.create(null);\n }\n _getModel(uri) {\n return this._models[uri];\n }\n _getModels() {\n const all = [];\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\n return all;\n }\n acceptNewModel(data) {\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\n }\n acceptModelChanged(strURL, e) {\n if (!this._models[strURL]) {\n return;\n }\n const model = this._models[strURL];\n model.onEvents(e);\n }\n acceptRemovedModel(strURL) {\n if (!this._models[strURL]) {\n return;\n }\n delete this._models[strURL];\n }\n computeUnicodeHighlights(url, options, range) {\n return __awaiter(this, void 0, void 0, function* () {\n const model = this._getModel(url);\n if (!model) {\n return { ranges: [], hasMore: false, ambiguousCharacterCount: 0, invisibleCharacterCount: 0, nonBasicAsciiCharacterCount: 0 };\n }\n return UnicodeTextModelHighlighter.computeUnicodeHighlights(model, options, range);\n });\n }\n // ---- BEGIN diff --------------------------------------------------------------------------\n computeDiff(originalUrl, modifiedUrl, ignoreTrimWhitespace, maxComputationTime) {\n return __awaiter(this, void 0, void 0, function* () {\n const original = this._getModel(originalUrl);\n const modified = this._getModel(modifiedUrl);\n if (!original || !modified) {\n return null;\n }\n return EditorSimpleWorker.computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime);\n });\n }\n static computeDiff(originalTextModel, modifiedTextModel, ignoreTrimWhitespace, maxComputationTime) {\n const originalLines = originalTextModel.getLinesContent();\n const modifiedLines = modifiedTextModel.getLinesContent();\n const diffComputer = new DiffComputer(originalLines, modifiedLines, {\n shouldComputeCharChanges: true,\n shouldPostProcessCharChanges: true,\n shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,\n shouldMakePrettyDiff: true,\n maxComputationTime: maxComputationTime\n });\n const diffResult = diffComputer.computeDiff();\n const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(originalTextModel, modifiedTextModel));\n return {\n quitEarly: diffResult.quitEarly,\n identical: identical,\n changes: diffResult.changes\n };\n }\n static _modelsAreIdentical(original, modified) {\n const originalLineCount = original.getLineCount();\n const modifiedLineCount = modified.getLineCount();\n if (originalLineCount !== modifiedLineCount) {\n return false;\n }\n for (let line = 1; line <= originalLineCount; line++) {\n const originalLine = original.getLineContent(line);\n const modifiedLine = modified.getLineContent(line);\n if (originalLine !== modifiedLine) {\n return false;\n }\n }\n return true;\n }\n computeMoreMinimalEdits(modelUrl, edits) {\n return __awaiter(this, void 0, void 0, function* () {\n const model = this._getModel(modelUrl);\n if (!model) {\n return edits;\n }\n const result = [];\n let lastEol = undefined;\n edits = edits.slice(0).sort((a, b) => {\n if (a.range && b.range) {\n return Range.compareRangesUsingStarts(a.range, b.range);\n }\n // eol only changes should go to the end\n const aRng = a.range ? 0 : 1;\n const bRng = b.range ? 0 : 1;\n return aRng - bRng;\n });\n for (let { range, text, eol } of edits) {\n if (typeof eol === 'number') {\n lastEol = eol;\n }\n if (Range.isEmpty(range) && !text) {\n // empty change\n continue;\n }\n const original = model.getValueInRange(range);\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\n if (original === text) {\n // noop\n continue;\n }\n // make sure diff won't take too long\n if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) {\n result.push({ range, text });\n continue;\n }\n // compute diff between original and edit.text\n const changes = stringDiff(original, text, false);\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\n for (const change of changes) {\n const start = model.positionAt(editOffset + change.originalStart);\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\n const newEdit = {\n text: text.substr(change.modifiedStart, change.modifiedLength),\n range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\n };\n if (model.getValueInRange(newEdit.range) !== newEdit.text) {\n result.push(newEdit);\n }\n }\n }\n if (typeof lastEol === 'number') {\n result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\n }\n return result;\n });\n }\n // ---- END minimal edits ---------------------------------------------------------------\n computeLinks(modelUrl) {\n return __awaiter(this, void 0, void 0, function* () {\n const model = this._getModel(modelUrl);\n if (!model) {\n return null;\n }\n return computeLinks(model);\n });\n }\n textualSuggest(modelUrls, leadingWord, wordDef, wordDefFlags) {\n return __awaiter(this, void 0, void 0, function* () {\n const sw = new StopWatch(true);\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n const seen = new Set();\n outer: for (const url of modelUrls) {\n const model = this._getModel(url);\n if (!model) {\n continue;\n }\n for (const word of model.words(wordDefRegExp)) {\n if (word === leadingWord || !isNaN(Number(word))) {\n continue;\n }\n seen.add(word);\n if (seen.size > EditorSimpleWorker._suggestionsLimit) {\n break outer;\n }\n }\n }\n return { words: Array.from(seen), duration: sw.elapsed() };\n });\n }\n // ---- END suggest --------------------------------------------------------------------------\n //#region -- word ranges --\n computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\n return __awaiter(this, void 0, void 0, function* () {\n const model = this._getModel(modelUrl);\n if (!model) {\n return Object.create(null);\n }\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n const result = Object.create(null);\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\n const words = model.getLineWords(line, wordDefRegExp);\n for (const word of words) {\n if (!isNaN(Number(word.word))) {\n continue;\n }\n let array = result[word.word];\n if (!array) {\n array = [];\n result[word.word] = array;\n }\n array.push({\n startLineNumber: line,\n startColumn: word.startColumn,\n endLineNumber: line,\n endColumn: word.endColumn\n });\n }\n }\n return result;\n });\n }\n //#endregion\n navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\n return __awaiter(this, void 0, void 0, function* () {\n const model = this._getModel(modelUrl);\n if (!model) {\n return null;\n }\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\n if (range.startColumn === range.endColumn) {\n range = {\n startLineNumber: range.startLineNumber,\n startColumn: range.startColumn,\n endLineNumber: range.endLineNumber,\n endColumn: range.endColumn + 1\n };\n }\n const selectionText = model.getValueInRange(range);\n const wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\n if (!wordRange) {\n return null;\n }\n const word = model.getValueInRange(wordRange);\n const result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\n return result;\n });\n }\n // ---- BEGIN foreign module support --------------------------------------------------------------------------\n loadForeignModule(moduleId, createData, foreignHostMethods) {\n const proxyMethodRequest = (method, args) => {\n return this._host.fhr(method, args);\n };\n const foreignHost = types.createProxyObject(foreignHostMethods, proxyMethodRequest);\n const ctx = {\n host: foreignHost,\n getMirrorModels: () => {\n return this._getModels();\n }\n };\n if (this._foreignModuleFactory) {\n this._foreignModule = this._foreignModuleFactory(ctx, createData);\n // static foreing module\n return Promise.resolve(types.getAllMethodNames(this._foreignModule));\n }\n // ESM-comment-begin\n // \t\treturn new Promise((resolve, reject) => {\n // \t\t\trequire([moduleId], (foreignModule: { create: IForeignModuleFactory }) => {\n // \t\t\t\tthis._foreignModule = foreignModule.create(ctx, createData);\n // \n // \t\t\t\tresolve(types.getAllMethodNames(this._foreignModule));\n // \n // \t\t\t}, reject);\n // \t\t});\n // ESM-comment-end\n // ESM-uncomment-begin\n return Promise.reject(new Error(`Unexpected usage`));\n // ESM-uncomment-end\n }\n // foreign method request\n fmr(method, args) {\n if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') {\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\n }\n try {\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n}\n// ---- END diff --------------------------------------------------------------------------\n// ---- BEGIN minimal edits ---------------------------------------------------------------\nEditorSimpleWorker._diffLimit = 100000;\n// ---- BEGIN suggest --------------------------------------------------------------------------\nEditorSimpleWorker._suggestionsLimit = 10000;\n/**\n * Called on the worker side\n * @internal\n */\nexport function create(host) {\n return new EditorSimpleWorker(host, null);\n}\nif (typeof importScripts === 'function') {\n // Running in a web worker\n globals.monaco = createMonacoBaseAPI();\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { IntervalTimer, timeout } from '../../../base/common/async.js';\nimport { Disposable, dispose, toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\nimport { SimpleWorkerClient, logOnceWebWorkerWarning } from '../../../base/common/worker/simpleWorker.js';\nimport { DefaultWorkerFactory } from '../../../base/browser/defaultWorkerFactory.js';\nimport { Range } from '../../common/core/range.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { EditorSimpleWorker } from '../../common/services/editorSimpleWorker.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { ITextResourceConfigurationService } from '../../common/services/textResourceConfiguration.js';\nimport { regExpFlags } from '../../../base/common/strings.js';\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\nimport { ILogService } from '../../../platform/log/common/log.js';\nimport { StopWatch } from '../../../base/common/stopwatch.js';\nimport { canceled } from '../../../base/common/errors.js';\nimport { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';\n/**\n * Stop syncing a model to the worker if it was not needed for 1 min.\n */\nconst STOP_SYNC_MODEL_DELTA_TIME_MS = 60 * 1000;\n/**\n * Stop the worker if it was not needed for 5 min.\n */\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\nfunction canSyncModel(modelService, resource) {\n const model = modelService.getModel(resource);\n if (!model) {\n return false;\n }\n if (model.isTooLargeForSyncing()) {\n return false;\n }\n return true;\n}\nlet EditorWorkerService = class EditorWorkerService extends Disposable {\n constructor(modelService, configurationService, logService, languageConfigurationService, languageFeaturesService) {\n super();\n this._modelService = modelService;\n this._workerManager = this._register(new WorkerManager(this._modelService, languageConfigurationService));\n this._logService = logService;\n // register default link-provider and default completions-provider\n this._register(languageFeaturesService.linkProvider.register({ language: '*', hasAccessToAllModels: true }, {\n provideLinks: (model, token) => {\n if (!canSyncModel(this._modelService, model.uri)) {\n return Promise.resolve({ links: [] }); // File too large\n }\n return this._workerManager.withWorker().then(client => client.computeLinks(model.uri)).then(links => {\n return links && { links };\n });\n }\n }));\n this._register(languageFeaturesService.completionProvider.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService, languageConfigurationService)));\n }\n dispose() {\n super.dispose();\n }\n canComputeUnicodeHighlights(uri) {\n return canSyncModel(this._modelService, uri);\n }\n computedUnicodeHighlights(uri, options, range) {\n return this._workerManager.withWorker().then(client => client.computedUnicodeHighlights(uri, options, range));\n }\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\n return this._workerManager.withWorker().then(client => client.computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime));\n }\n computeMoreMinimalEdits(resource, edits) {\n if (isNonEmptyArray(edits)) {\n if (!canSyncModel(this._modelService, resource)) {\n return Promise.resolve(edits); // File too large\n }\n const sw = StopWatch.create(true);\n const result = this._workerManager.withWorker().then(client => client.computeMoreMinimalEdits(resource, edits));\n result.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\n return Promise.race([result, timeout(1000).then(() => edits)]);\n }\n else {\n return Promise.resolve(undefined);\n }\n }\n canNavigateValueSet(resource) {\n return (canSyncModel(this._modelService, resource));\n }\n navigateValueSet(resource, range, up) {\n return this._workerManager.withWorker().then(client => client.navigateValueSet(resource, range, up));\n }\n canComputeWordRanges(resource) {\n return canSyncModel(this._modelService, resource);\n }\n computeWordRanges(resource, range) {\n return this._workerManager.withWorker().then(client => client.computeWordRanges(resource, range));\n }\n};\nEditorWorkerService = __decorate([\n __param(0, IModelService),\n __param(1, ITextResourceConfigurationService),\n __param(2, ILogService),\n __param(3, ILanguageConfigurationService),\n __param(4, ILanguageFeaturesService)\n], EditorWorkerService);\nexport { EditorWorkerService };\nclass WordBasedCompletionItemProvider {\n constructor(workerManager, configurationService, modelService, languageConfigurationService) {\n this.languageConfigurationService = languageConfigurationService;\n this._debugDisplayName = 'wordbasedCompletions';\n this._workerManager = workerManager;\n this._configurationService = configurationService;\n this._modelService = modelService;\n }\n provideCompletionItems(model, position) {\n return __awaiter(this, void 0, void 0, function* () {\n const config = this._configurationService.getValue(model.uri, position, 'editor');\n if (!config.wordBasedSuggestions) {\n return undefined;\n }\n const models = [];\n if (config.wordBasedSuggestionsMode === 'currentDocument') {\n // only current file and only if not too large\n if (canSyncModel(this._modelService, model.uri)) {\n models.push(model.uri);\n }\n }\n else {\n // either all files or files of same language\n for (const candidate of this._modelService.getModels()) {\n if (!canSyncModel(this._modelService, candidate.uri)) {\n continue;\n }\n if (candidate === model) {\n models.unshift(candidate.uri);\n }\n else if (config.wordBasedSuggestionsMode === 'allDocuments' || candidate.getLanguageId() === model.getLanguageId()) {\n models.push(candidate.uri);\n }\n }\n }\n if (models.length === 0) {\n return undefined; // File too large, no other files\n }\n const wordDefRegExp = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n const word = model.getWordAtPosition(position);\n const replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n const insert = replace.setEndPosition(position.lineNumber, position.column);\n const client = yield this._workerManager.withWorker();\n const data = yield client.textualSuggest(models, word === null || word === void 0 ? void 0 : word.word, wordDefRegExp);\n if (!data) {\n return undefined;\n }\n return {\n duration: data.duration,\n suggestions: data.words.map((word) => {\n return {\n kind: 18 /* languages.CompletionItemKind.Text */,\n label: word,\n insertText: word,\n range: { insert, replace }\n };\n }),\n };\n });\n }\n}\nclass WorkerManager extends Disposable {\n constructor(modelService, languageConfigurationService) {\n super();\n this.languageConfigurationService = languageConfigurationService;\n this._modelService = modelService;\n this._editorWorkerClient = null;\n this._lastWorkerUsedTime = (new Date()).getTime();\n const stopWorkerInterval = this._register(new IntervalTimer());\n stopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2));\n this._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\n }\n dispose() {\n if (this._editorWorkerClient) {\n this._editorWorkerClient.dispose();\n this._editorWorkerClient = null;\n }\n super.dispose();\n }\n /**\n * Check if the model service has no more models and stop the worker if that is the case.\n */\n _checkStopEmptyWorker() {\n if (!this._editorWorkerClient) {\n return;\n }\n const models = this._modelService.getModels();\n if (models.length === 0) {\n // There are no more models => nothing possible for me to do\n this._editorWorkerClient.dispose();\n this._editorWorkerClient = null;\n }\n }\n /**\n * Check if the worker has been idle for a while and then stop it.\n */\n _checkStopIdleWorker() {\n if (!this._editorWorkerClient) {\n return;\n }\n const timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\n if (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\n this._editorWorkerClient.dispose();\n this._editorWorkerClient = null;\n }\n }\n withWorker() {\n this._lastWorkerUsedTime = (new Date()).getTime();\n if (!this._editorWorkerClient) {\n this._editorWorkerClient = new EditorWorkerClient(this._modelService, false, 'editorWorkerService', this.languageConfigurationService);\n }\n return Promise.resolve(this._editorWorkerClient);\n }\n}\nclass EditorModelManager extends Disposable {\n constructor(proxy, modelService, keepIdleModels) {\n super();\n this._syncedModels = Object.create(null);\n this._syncedModelsLastUsedTime = Object.create(null);\n this._proxy = proxy;\n this._modelService = modelService;\n if (!keepIdleModels) {\n const timer = new IntervalTimer();\n timer.cancelAndSet(() => this._checkStopModelSync(), Math.round(STOP_SYNC_MODEL_DELTA_TIME_MS / 2));\n this._register(timer);\n }\n }\n dispose() {\n for (const modelUrl in this._syncedModels) {\n dispose(this._syncedModels[modelUrl]);\n }\n this._syncedModels = Object.create(null);\n this._syncedModelsLastUsedTime = Object.create(null);\n super.dispose();\n }\n ensureSyncedResources(resources, forceLargeModels) {\n for (const resource of resources) {\n const resourceStr = resource.toString();\n if (!this._syncedModels[resourceStr]) {\n this._beginModelSync(resource, forceLargeModels);\n }\n if (this._syncedModels[resourceStr]) {\n this._syncedModelsLastUsedTime[resourceStr] = (new Date()).getTime();\n }\n }\n }\n _checkStopModelSync() {\n const currentTime = (new Date()).getTime();\n const toRemove = [];\n for (const modelUrl in this._syncedModelsLastUsedTime) {\n const elapsedTime = currentTime - this._syncedModelsLastUsedTime[modelUrl];\n if (elapsedTime > STOP_SYNC_MODEL_DELTA_TIME_MS) {\n toRemove.push(modelUrl);\n }\n }\n for (const e of toRemove) {\n this._stopModelSync(e);\n }\n }\n _beginModelSync(resource, forceLargeModels) {\n const model = this._modelService.getModel(resource);\n if (!model) {\n return;\n }\n if (!forceLargeModels && model.isTooLargeForSyncing()) {\n return;\n }\n const modelUrl = resource.toString();\n this._proxy.acceptNewModel({\n url: model.uri.toString(),\n lines: model.getLinesContent(),\n EOL: model.getEOL(),\n versionId: model.getVersionId()\n });\n const toDispose = new DisposableStore();\n toDispose.add(model.onDidChangeContent((e) => {\n this._proxy.acceptModelChanged(modelUrl.toString(), e);\n }));\n toDispose.add(model.onWillDispose(() => {\n this._stopModelSync(modelUrl);\n }));\n toDispose.add(toDisposable(() => {\n this._proxy.acceptRemovedModel(modelUrl);\n }));\n this._syncedModels[modelUrl] = toDispose;\n }\n _stopModelSync(modelUrl) {\n const toDispose = this._syncedModels[modelUrl];\n delete this._syncedModels[modelUrl];\n delete this._syncedModelsLastUsedTime[modelUrl];\n dispose(toDispose);\n }\n}\nclass SynchronousWorkerClient {\n constructor(instance) {\n this._instance = instance;\n this._proxyObj = Promise.resolve(this._instance);\n }\n dispose() {\n this._instance.dispose();\n }\n getProxyObject() {\n return this._proxyObj;\n }\n}\nexport class EditorWorkerHost {\n constructor(workerClient) {\n this._workerClient = workerClient;\n }\n // foreign host request\n fhr(method, args) {\n return this._workerClient.fhr(method, args);\n }\n}\nexport class EditorWorkerClient extends Disposable {\n constructor(modelService, keepIdleModels, label, languageConfigurationService) {\n super();\n this.languageConfigurationService = languageConfigurationService;\n this._disposed = false;\n this._modelService = modelService;\n this._keepIdleModels = keepIdleModels;\n this._workerFactory = new DefaultWorkerFactory(label);\n this._worker = null;\n this._modelManager = null;\n }\n // foreign host request\n fhr(method, args) {\n throw new Error(`Not implemented!`);\n }\n _getOrCreateWorker() {\n if (!this._worker) {\n try {\n this._worker = this._register(new SimpleWorkerClient(this._workerFactory, 'vs/editor/common/services/editorSimpleWorker', new EditorWorkerHost(this)));\n }\n catch (err) {\n logOnceWebWorkerWarning(err);\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\n }\n }\n return this._worker;\n }\n _getProxy() {\n return this._getOrCreateWorker().getProxyObject().then(undefined, (err) => {\n logOnceWebWorkerWarning(err);\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\n return this._getOrCreateWorker().getProxyObject();\n });\n }\n _getOrCreateModelManager(proxy) {\n if (!this._modelManager) {\n this._modelManager = this._register(new EditorModelManager(proxy, this._modelService, this._keepIdleModels));\n }\n return this._modelManager;\n }\n _withSyncedResources(resources, forceLargeModels = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n return Promise.reject(canceled());\n }\n return this._getProxy().then((proxy) => {\n this._getOrCreateModelManager(proxy).ensureSyncedResources(resources, forceLargeModels);\n return proxy;\n });\n });\n }\n computedUnicodeHighlights(uri, options, range) {\n return this._withSyncedResources([uri]).then(proxy => {\n return proxy.computeUnicodeHighlights(uri.toString(), options, range);\n });\n }\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\n return this._withSyncedResources([original, modified], /* forceLargeModels */ true).then(proxy => {\n return proxy.computeDiff(original.toString(), modified.toString(), ignoreTrimWhitespace, maxComputationTime);\n });\n }\n computeMoreMinimalEdits(resource, edits) {\n return this._withSyncedResources([resource]).then(proxy => {\n return proxy.computeMoreMinimalEdits(resource.toString(), edits);\n });\n }\n computeLinks(resource) {\n return this._withSyncedResources([resource]).then(proxy => {\n return proxy.computeLinks(resource.toString());\n });\n }\n textualSuggest(resources, leadingWord, wordDefRegExp) {\n return __awaiter(this, void 0, void 0, function* () {\n const proxy = yield this._withSyncedResources(resources);\n const wordDef = wordDefRegExp.source;\n const wordDefFlags = regExpFlags(wordDefRegExp);\n return proxy.textualSuggest(resources.map(r => r.toString()), leadingWord, wordDef, wordDefFlags);\n });\n }\n computeWordRanges(resource, range) {\n return this._withSyncedResources([resource]).then(proxy => {\n const model = this._modelService.getModel(resource);\n if (!model) {\n return Promise.resolve(null);\n }\n const wordDefRegExp = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n const wordDef = wordDefRegExp.source;\n const wordDefFlags = regExpFlags(wordDefRegExp);\n return proxy.computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\n });\n }\n navigateValueSet(resource, range, up) {\n return this._withSyncedResources([resource]).then(proxy => {\n const model = this._modelService.getModel(resource);\n if (!model) {\n return null;\n }\n const wordDefRegExp = this.languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getWordDefinition();\n const wordDef = wordDefRegExp.source;\n const wordDefFlags = regExpFlags(wordDefRegExp);\n return proxy.navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\n });\n }\n dispose() {\n super.dispose();\n this._disposed = true;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorWorkerClient } from './editorWorkerService.js';\nimport * as types from '../../../base/common/types.js';\n/**\n * Create a new web worker that has model syncing capabilities built in.\n * Specify an AMD module to load that will `create` an object that will be proxied.\n */\nexport function createWebWorker(modelService, languageConfigurationService, opts) {\n return new MonacoWebWorkerImpl(modelService, languageConfigurationService, opts);\n}\nclass MonacoWebWorkerImpl extends EditorWorkerClient {\n constructor(modelService, languageConfigurationService, opts) {\n super(modelService, opts.keepIdleModels || false, opts.label, languageConfigurationService);\n this._foreignModuleId = opts.moduleId;\n this._foreignModuleCreateData = opts.createData || null;\n this._foreignModuleHost = opts.host || null;\n this._foreignProxy = null;\n }\n // foreign host request\n fhr(method, args) {\n if (!this._foreignModuleHost || typeof this._foreignModuleHost[method] !== 'function') {\n return Promise.reject(new Error('Missing method ' + method + ' or missing main thread foreign host.'));\n }\n try {\n return Promise.resolve(this._foreignModuleHost[method].apply(this._foreignModuleHost, args));\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n _getForeignProxy() {\n if (!this._foreignProxy) {\n this._foreignProxy = this._getProxy().then((proxy) => {\n const foreignHostMethods = this._foreignModuleHost ? types.getAllMethodNames(this._foreignModuleHost) : [];\n return proxy.loadForeignModule(this._foreignModuleId, this._foreignModuleCreateData, foreignHostMethods).then((foreignMethods) => {\n this._foreignModuleCreateData = null;\n const proxyMethodRequest = (method, args) => {\n return proxy.fmr(method, args);\n };\n const createProxyMethod = (method, proxyMethodRequest) => {\n return function () {\n const args = Array.prototype.slice.call(arguments, 0);\n return proxyMethodRequest(method, args);\n };\n };\n const foreignProxy = {};\n for (const foreignMethod of foreignMethods) {\n foreignProxy[foreignMethod] = createProxyMethod(foreignMethod, proxyMethodRequest);\n }\n return foreignProxy;\n });\n });\n }\n return this._foreignProxy;\n }\n getProxy() {\n return this._getForeignProxy();\n }\n withSyncedResources(resources) {\n return this._withSyncedResources(resources).then(_ => this.getProxy());\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport function isFuzzyActionArr(what) {\n return (Array.isArray(what));\n}\nexport function isFuzzyAction(what) {\n return !isFuzzyActionArr(what);\n}\nexport function isString(what) {\n return (typeof what === 'string');\n}\nexport function isIAction(what) {\n return !isString(what);\n}\n// Small helper functions\n/**\n * Is a string null, undefined, or empty?\n */\nexport function empty(s) {\n return (s ? false : true);\n}\n/**\n * Puts a string to lower case if 'ignoreCase' is set.\n */\nexport function fixCase(lexer, str) {\n return (lexer.ignoreCase && str ? str.toLowerCase() : str);\n}\n/**\n * Ensures there are no bad characters in a CSS token class.\n */\nexport function sanitize(s) {\n return s.replace(/[&<>'\"_]/g, '-'); // used on all output token CSS classes\n}\n// Logging\n/**\n * Logs a message.\n */\nexport function log(lexer, msg) {\n console.log(`${lexer.languageId}: ${msg}`);\n}\n// Throwing errors\nexport function createError(lexer, msg) {\n return new Error(`${lexer.languageId}: ${msg}`);\n}\n// Helper functions for rule finding and substitution\n/**\n * substituteMatches is used on lexer strings and can substitutes predefined patterns:\n * \t\t$$ => $\n * \t\t$# => id\n * \t\t$n => matched entry n\n * \t\t@attr => contents of lexer[attr]\n *\n * See documentation for more info\n */\nexport function substituteMatches(lexer, str, id, matches, state) {\n const re = /\\$((\\$)|(#)|(\\d\\d?)|[sS](\\d\\d?)|@(\\w+))/g;\n let stateMatches = null;\n return str.replace(re, function (full, sub, dollar, hash, n, s, attr, ofs, total) {\n if (!empty(dollar)) {\n return '$'; // $$\n }\n if (!empty(hash)) {\n return fixCase(lexer, id); // default $#\n }\n if (!empty(n) && n < matches.length) {\n return fixCase(lexer, matches[n]); // $n\n }\n if (!empty(attr) && lexer && typeof (lexer[attr]) === 'string') {\n return lexer[attr]; //@attribute\n }\n if (stateMatches === null) { // split state on demand\n stateMatches = state.split('.');\n stateMatches.unshift(state);\n }\n if (!empty(s) && s < stateMatches.length) {\n return fixCase(lexer, stateMatches[s]); //$Sn\n }\n return '';\n });\n}\n/**\n * Find the tokenizer rules for a specific state (i.e. next action)\n */\nexport function findRules(lexer, inState) {\n let state = inState;\n while (state && state.length > 0) {\n const rules = lexer.tokenizer[state];\n if (rules) {\n return rules;\n }\n const idx = state.lastIndexOf('.');\n if (idx < 0) {\n state = null; // no further parent\n }\n else {\n state = state.substr(0, idx);\n }\n }\n return null;\n}\n/**\n * Is a certain state defined? In contrast to 'findRules' this works on a ILexerMin.\n * This is used during compilation where we may know the defined states\n * but not yet whether the corresponding rules are correct.\n */\nexport function stateExists(lexer, inState) {\n let state = inState;\n while (state && state.length > 0) {\n const exist = lexer.stateNames[state];\n if (exist) {\n return true;\n }\n const idx = state.lastIndexOf('.');\n if (idx < 0) {\n state = null; // no further parent\n }\n else {\n state = state.substr(0, idx);\n }\n }\n return false;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as languages from '../../../common/languages.js';\nimport { NullState, nullTokenizeEncoded, nullTokenize } from '../../../common/languages/nullTokenize.js';\nimport * as monarchCommon from './monarchCommon.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nconst CACHE_STACK_DEPTH = 5;\n/**\n * Reuse the same stack elements up to a certain depth.\n */\nclass MonarchStackElementFactory {\n constructor(maxCacheDepth) {\n this._maxCacheDepth = maxCacheDepth;\n this._entries = Object.create(null);\n }\n static create(parent, state) {\n return this._INSTANCE.create(parent, state);\n }\n create(parent, state) {\n if (parent !== null && parent.depth >= this._maxCacheDepth) {\n // no caching above a certain depth\n return new MonarchStackElement(parent, state);\n }\n let stackElementId = MonarchStackElement.getStackElementId(parent);\n if (stackElementId.length > 0) {\n stackElementId += '|';\n }\n stackElementId += state;\n let result = this._entries[stackElementId];\n if (result) {\n return result;\n }\n result = new MonarchStackElement(parent, state);\n this._entries[stackElementId] = result;\n return result;\n }\n}\nMonarchStackElementFactory._INSTANCE = new MonarchStackElementFactory(CACHE_STACK_DEPTH);\nclass MonarchStackElement {\n constructor(parent, state) {\n this.parent = parent;\n this.state = state;\n this.depth = (this.parent ? this.parent.depth : 0) + 1;\n }\n static getStackElementId(element) {\n let result = '';\n while (element !== null) {\n if (result.length > 0) {\n result += '|';\n }\n result += element.state;\n element = element.parent;\n }\n return result;\n }\n static _equals(a, b) {\n while (a !== null && b !== null) {\n if (a === b) {\n return true;\n }\n if (a.state !== b.state) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n }\n if (a === null && b === null) {\n return true;\n }\n return false;\n }\n equals(other) {\n return MonarchStackElement._equals(this, other);\n }\n push(state) {\n return MonarchStackElementFactory.create(this, state);\n }\n pop() {\n return this.parent;\n }\n popall() {\n let result = this;\n while (result.parent) {\n result = result.parent;\n }\n return result;\n }\n switchTo(state) {\n return MonarchStackElementFactory.create(this.parent, state);\n }\n}\nclass EmbeddedLanguageData {\n constructor(languageId, state) {\n this.languageId = languageId;\n this.state = state;\n }\n equals(other) {\n return (this.languageId === other.languageId\n && this.state.equals(other.state));\n }\n clone() {\n const stateClone = this.state.clone();\n // save an object\n if (stateClone === this.state) {\n return this;\n }\n return new EmbeddedLanguageData(this.languageId, this.state);\n }\n}\n/**\n * Reuse the same line states up to a certain depth.\n */\nclass MonarchLineStateFactory {\n constructor(maxCacheDepth) {\n this._maxCacheDepth = maxCacheDepth;\n this._entries = Object.create(null);\n }\n static create(stack, embeddedLanguageData) {\n return this._INSTANCE.create(stack, embeddedLanguageData);\n }\n create(stack, embeddedLanguageData) {\n if (embeddedLanguageData !== null) {\n // no caching when embedding\n return new MonarchLineState(stack, embeddedLanguageData);\n }\n if (stack !== null && stack.depth >= this._maxCacheDepth) {\n // no caching above a certain depth\n return new MonarchLineState(stack, embeddedLanguageData);\n }\n const stackElementId = MonarchStackElement.getStackElementId(stack);\n let result = this._entries[stackElementId];\n if (result) {\n return result;\n }\n result = new MonarchLineState(stack, null);\n this._entries[stackElementId] = result;\n return result;\n }\n}\nMonarchLineStateFactory._INSTANCE = new MonarchLineStateFactory(CACHE_STACK_DEPTH);\nclass MonarchLineState {\n constructor(stack, embeddedLanguageData) {\n this.stack = stack;\n this.embeddedLanguageData = embeddedLanguageData;\n }\n clone() {\n const embeddedlanguageDataClone = this.embeddedLanguageData ? this.embeddedLanguageData.clone() : null;\n // save an object\n if (embeddedlanguageDataClone === this.embeddedLanguageData) {\n return this;\n }\n return MonarchLineStateFactory.create(this.stack, this.embeddedLanguageData);\n }\n equals(other) {\n if (!(other instanceof MonarchLineState)) {\n return false;\n }\n if (!this.stack.equals(other.stack)) {\n return false;\n }\n if (this.embeddedLanguageData === null && other.embeddedLanguageData === null) {\n return true;\n }\n if (this.embeddedLanguageData === null || other.embeddedLanguageData === null) {\n return false;\n }\n return this.embeddedLanguageData.equals(other.embeddedLanguageData);\n }\n}\nclass MonarchClassicTokensCollector {\n constructor() {\n this._tokens = [];\n this._languageId = null;\n this._lastTokenType = null;\n this._lastTokenLanguage = null;\n }\n enterLanguage(languageId) {\n this._languageId = languageId;\n }\n emit(startOffset, type) {\n if (this._lastTokenType === type && this._lastTokenLanguage === this._languageId) {\n return;\n }\n this._lastTokenType = type;\n this._lastTokenLanguage = this._languageId;\n this._tokens.push(new languages.Token(startOffset, type, this._languageId));\n }\n nestedLanguageTokenize(embeddedLanguageLine, hasEOL, embeddedLanguageData, offsetDelta) {\n const nestedLanguageId = embeddedLanguageData.languageId;\n const embeddedModeState = embeddedLanguageData.state;\n const nestedLanguageTokenizationSupport = languages.TokenizationRegistry.get(nestedLanguageId);\n if (!nestedLanguageTokenizationSupport) {\n this.enterLanguage(nestedLanguageId);\n this.emit(offsetDelta, '');\n return embeddedModeState;\n }\n const nestedResult = nestedLanguageTokenizationSupport.tokenize(embeddedLanguageLine, hasEOL, embeddedModeState);\n if (offsetDelta !== 0) {\n for (const token of nestedResult.tokens) {\n this._tokens.push(new languages.Token(token.offset + offsetDelta, token.type, token.language));\n }\n }\n else {\n this._tokens = this._tokens.concat(nestedResult.tokens);\n }\n this._lastTokenType = null;\n this._lastTokenLanguage = null;\n this._languageId = null;\n return nestedResult.endState;\n }\n finalize(endState) {\n return new languages.TokenizationResult(this._tokens, endState);\n }\n}\nclass MonarchModernTokensCollector {\n constructor(languageService, theme) {\n this._languageService = languageService;\n this._theme = theme;\n this._prependTokens = null;\n this._tokens = [];\n this._currentLanguageId = 0 /* LanguageId.Null */;\n this._lastTokenMetadata = 0;\n }\n enterLanguage(languageId) {\n this._currentLanguageId = this._languageService.languageIdCodec.encodeLanguageId(languageId);\n }\n emit(startOffset, type) {\n const metadata = this._theme.match(this._currentLanguageId, type);\n if (this._lastTokenMetadata === metadata) {\n return;\n }\n this._lastTokenMetadata = metadata;\n this._tokens.push(startOffset);\n this._tokens.push(metadata);\n }\n static _merge(a, b, c) {\n const aLen = (a !== null ? a.length : 0);\n const bLen = b.length;\n const cLen = (c !== null ? c.length : 0);\n if (aLen === 0 && bLen === 0 && cLen === 0) {\n return new Uint32Array(0);\n }\n if (aLen === 0 && bLen === 0) {\n return c;\n }\n if (bLen === 0 && cLen === 0) {\n return a;\n }\n const result = new Uint32Array(aLen + bLen + cLen);\n if (a !== null) {\n result.set(a);\n }\n for (let i = 0; i < bLen; i++) {\n result[aLen + i] = b[i];\n }\n if (c !== null) {\n result.set(c, aLen + bLen);\n }\n return result;\n }\n nestedLanguageTokenize(embeddedLanguageLine, hasEOL, embeddedLanguageData, offsetDelta) {\n const nestedLanguageId = embeddedLanguageData.languageId;\n const embeddedModeState = embeddedLanguageData.state;\n const nestedLanguageTokenizationSupport = languages.TokenizationRegistry.get(nestedLanguageId);\n if (!nestedLanguageTokenizationSupport) {\n this.enterLanguage(nestedLanguageId);\n this.emit(offsetDelta, '');\n return embeddedModeState;\n }\n const nestedResult = nestedLanguageTokenizationSupport.tokenizeEncoded(embeddedLanguageLine, hasEOL, embeddedModeState);\n if (offsetDelta !== 0) {\n for (let i = 0, len = nestedResult.tokens.length; i < len; i += 2) {\n nestedResult.tokens[i] += offsetDelta;\n }\n }\n this._prependTokens = MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, nestedResult.tokens);\n this._tokens = [];\n this._currentLanguageId = 0;\n this._lastTokenMetadata = 0;\n return nestedResult.endState;\n }\n finalize(endState) {\n return new languages.EncodedTokenizationResult(MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, null), endState);\n }\n}\nlet MonarchTokenizer = class MonarchTokenizer {\n constructor(languageService, standaloneThemeService, languageId, lexer, _configurationService) {\n this._configurationService = _configurationService;\n this._languageService = languageService;\n this._standaloneThemeService = standaloneThemeService;\n this._languageId = languageId;\n this._lexer = lexer;\n this._embeddedLanguages = Object.create(null);\n this.embeddedLoaded = Promise.resolve(undefined);\n // Set up listening for embedded modes\n let emitting = false;\n this._tokenizationRegistryListener = languages.TokenizationRegistry.onDidChange((e) => {\n if (emitting) {\n return;\n }\n let isOneOfMyEmbeddedModes = false;\n for (let i = 0, len = e.changedLanguages.length; i < len; i++) {\n const language = e.changedLanguages[i];\n if (this._embeddedLanguages[language]) {\n isOneOfMyEmbeddedModes = true;\n break;\n }\n }\n if (isOneOfMyEmbeddedModes) {\n emitting = true;\n languages.TokenizationRegistry.fire([this._languageId]);\n emitting = false;\n }\n });\n this._maxTokenizationLineLength = this._configurationService.getValue('editor.maxTokenizationLineLength', {\n overrideIdentifier: this._languageId\n });\n this._configurationService.onDidChangeConfiguration(e => {\n if (e.affectsConfiguration('editor.maxTokenizationLineLength')) {\n this._maxTokenizationLineLength = this._configurationService.getValue('editor.maxTokenizationLineLength', {\n overrideIdentifier: this._languageId\n });\n }\n });\n }\n dispose() {\n this._tokenizationRegistryListener.dispose();\n }\n getLoadStatus() {\n const promises = [];\n for (const nestedLanguageId in this._embeddedLanguages) {\n const tokenizationSupport = languages.TokenizationRegistry.get(nestedLanguageId);\n if (tokenizationSupport) {\n // The nested language is already loaded\n if (tokenizationSupport instanceof MonarchTokenizer) {\n const nestedModeStatus = tokenizationSupport.getLoadStatus();\n if (nestedModeStatus.loaded === false) {\n promises.push(nestedModeStatus.promise);\n }\n }\n continue;\n }\n if (!languages.TokenizationRegistry.isResolved(nestedLanguageId)) {\n // The nested language is in the process of being loaded\n promises.push(languages.TokenizationRegistry.getOrCreate(nestedLanguageId));\n }\n }\n if (promises.length === 0) {\n return {\n loaded: true\n };\n }\n return {\n loaded: false,\n promise: Promise.all(promises).then(_ => undefined)\n };\n }\n getInitialState() {\n const rootState = MonarchStackElementFactory.create(null, this._lexer.start);\n return MonarchLineStateFactory.create(rootState, null);\n }\n tokenize(line, hasEOL, lineState) {\n if (line.length >= this._maxTokenizationLineLength) {\n return nullTokenize(this._languageId, lineState);\n }\n const tokensCollector = new MonarchClassicTokensCollector();\n const endLineState = this._tokenize(line, hasEOL, lineState, tokensCollector);\n return tokensCollector.finalize(endLineState);\n }\n tokenizeEncoded(line, hasEOL, lineState) {\n if (line.length >= this._maxTokenizationLineLength) {\n return nullTokenizeEncoded(this._languageService.languageIdCodec.encodeLanguageId(this._languageId), lineState);\n }\n const tokensCollector = new MonarchModernTokensCollector(this._languageService, this._standaloneThemeService.getColorTheme().tokenTheme);\n const endLineState = this._tokenize(line, hasEOL, lineState, tokensCollector);\n return tokensCollector.finalize(endLineState);\n }\n _tokenize(line, hasEOL, lineState, collector) {\n if (lineState.embeddedLanguageData) {\n return this._nestedTokenize(line, hasEOL, lineState, 0, collector);\n }\n else {\n return this._myTokenize(line, hasEOL, lineState, 0, collector);\n }\n }\n _findLeavingNestedLanguageOffset(line, state) {\n let rules = this._lexer.tokenizer[state.stack.state];\n if (!rules) {\n rules = monarchCommon.findRules(this._lexer, state.stack.state); // do parent matching\n if (!rules) {\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state.stack.state);\n }\n }\n let popOffset = -1;\n let hasEmbeddedPopRule = false;\n for (const rule of rules) {\n if (!monarchCommon.isIAction(rule.action) || rule.action.nextEmbedded !== '@pop') {\n continue;\n }\n hasEmbeddedPopRule = true;\n let regex = rule.regex;\n const regexSource = rule.regex.source;\n if (regexSource.substr(0, 4) === '^(?:' && regexSource.substr(regexSource.length - 1, 1) === ')') {\n const flags = (regex.ignoreCase ? 'i' : '') + (regex.unicode ? 'u' : '');\n regex = new RegExp(regexSource.substr(4, regexSource.length - 5), flags);\n }\n const result = line.search(regex);\n if (result === -1 || (result !== 0 && rule.matchOnlyAtLineStart)) {\n continue;\n }\n if (popOffset === -1 || result < popOffset) {\n popOffset = result;\n }\n }\n if (!hasEmbeddedPopRule) {\n throw monarchCommon.createError(this._lexer, 'no rule containing nextEmbedded: \"@pop\" in tokenizer embedded state: ' + state.stack.state);\n }\n return popOffset;\n }\n _nestedTokenize(line, hasEOL, lineState, offsetDelta, tokensCollector) {\n const popOffset = this._findLeavingNestedLanguageOffset(line, lineState);\n if (popOffset === -1) {\n // tokenization will not leave nested language\n const nestedEndState = tokensCollector.nestedLanguageTokenize(line, hasEOL, lineState.embeddedLanguageData, offsetDelta);\n return MonarchLineStateFactory.create(lineState.stack, new EmbeddedLanguageData(lineState.embeddedLanguageData.languageId, nestedEndState));\n }\n const nestedLanguageLine = line.substring(0, popOffset);\n if (nestedLanguageLine.length > 0) {\n // tokenize with the nested language\n tokensCollector.nestedLanguageTokenize(nestedLanguageLine, false, lineState.embeddedLanguageData, offsetDelta);\n }\n const restOfTheLine = line.substring(popOffset);\n return this._myTokenize(restOfTheLine, hasEOL, lineState, offsetDelta + popOffset, tokensCollector);\n }\n _safeRuleName(rule) {\n if (rule) {\n return rule.name;\n }\n return '(unknown)';\n }\n _myTokenize(lineWithoutLF, hasEOL, lineState, offsetDelta, tokensCollector) {\n tokensCollector.enterLanguage(this._languageId);\n const lineWithoutLFLength = lineWithoutLF.length;\n const line = (hasEOL && this._lexer.includeLF ? lineWithoutLF + '\\n' : lineWithoutLF);\n const lineLength = line.length;\n let embeddedLanguageData = lineState.embeddedLanguageData;\n let stack = lineState.stack;\n let pos = 0;\n let groupMatching = null;\n // See https://github.com/microsoft/monaco-editor/issues/1235\n // Evaluate rules at least once for an empty line\n let forceEvaluation = true;\n while (forceEvaluation || pos < lineLength) {\n const pos0 = pos;\n const stackLen0 = stack.depth;\n const groupLen0 = groupMatching ? groupMatching.groups.length : 0;\n const state = stack.state;\n let matches = null;\n let matched = null;\n let action = null;\n let rule = null;\n let enteringEmbeddedLanguage = null;\n // check if we need to process group matches first\n if (groupMatching) {\n matches = groupMatching.matches;\n const groupEntry = groupMatching.groups.shift();\n matched = groupEntry.matched;\n action = groupEntry.action;\n rule = groupMatching.rule;\n // cleanup if necessary\n if (groupMatching.groups.length === 0) {\n groupMatching = null;\n }\n }\n else {\n // otherwise we match on the token stream\n if (!forceEvaluation && pos >= lineLength) {\n // nothing to do\n break;\n }\n forceEvaluation = false;\n // get the rules for this state\n let rules = this._lexer.tokenizer[state];\n if (!rules) {\n rules = monarchCommon.findRules(this._lexer, state); // do parent matching\n if (!rules) {\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state);\n }\n }\n // try each rule until we match\n const restOfLine = line.substr(pos);\n for (const rule of rules) {\n if (pos === 0 || !rule.matchOnlyAtLineStart) {\n matches = restOfLine.match(rule.regex);\n if (matches) {\n matched = matches[0];\n action = rule.action;\n break;\n }\n }\n }\n }\n // We matched 'rule' with 'matches' and 'action'\n if (!matches) {\n matches = [''];\n matched = '';\n }\n if (!action) {\n // bad: we didn't match anything, and there is no action to take\n // we need to advance the stream or we get progress trouble\n if (pos < lineLength) {\n matches = [line.charAt(pos)];\n matched = matches[0];\n }\n action = this._lexer.defaultToken;\n }\n if (matched === null) {\n // should never happen, needed for strict null checking\n break;\n }\n // advance stream\n pos += matched.length;\n // maybe call action function (used for 'cases')\n while (monarchCommon.isFuzzyAction(action) && monarchCommon.isIAction(action) && action.test) {\n action = action.test(matched, matches, state, pos === lineLength);\n }\n let result = null;\n // set the result: either a string or an array of actions\n if (typeof action === 'string' || Array.isArray(action)) {\n result = action;\n }\n else if (action.group) {\n result = action.group;\n }\n else if (action.token !== null && action.token !== undefined) {\n // do $n replacements?\n if (action.tokenSubst) {\n result = monarchCommon.substituteMatches(this._lexer, action.token, matched, matches, state);\n }\n else {\n result = action.token;\n }\n // enter embedded language?\n if (action.nextEmbedded) {\n if (action.nextEmbedded === '@pop') {\n if (!embeddedLanguageData) {\n throw monarchCommon.createError(this._lexer, 'cannot pop embedded language if not inside one');\n }\n embeddedLanguageData = null;\n }\n else if (embeddedLanguageData) {\n throw monarchCommon.createError(this._lexer, 'cannot enter embedded language from within an embedded language');\n }\n else {\n enteringEmbeddedLanguage = monarchCommon.substituteMatches(this._lexer, action.nextEmbedded, matched, matches, state);\n }\n }\n // state transformations\n if (action.goBack) { // back up the stream..\n pos = Math.max(0, pos - action.goBack);\n }\n if (action.switchTo && typeof action.switchTo === 'string') {\n let nextState = monarchCommon.substituteMatches(this._lexer, action.switchTo, matched, matches, state); // switch state without a push...\n if (nextState[0] === '@') {\n nextState = nextState.substr(1); // peel off starting '@'\n }\n if (!monarchCommon.findRules(this._lexer, nextState)) {\n throw monarchCommon.createError(this._lexer, 'trying to switch to a state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\n }\n else {\n stack = stack.switchTo(nextState);\n }\n }\n else if (action.transform && typeof action.transform === 'function') {\n throw monarchCommon.createError(this._lexer, 'action.transform not supported');\n }\n else if (action.next) {\n if (action.next === '@push') {\n if (stack.depth >= this._lexer.maxStack) {\n throw monarchCommon.createError(this._lexer, 'maximum tokenizer stack size reached: [' +\n stack.state + ',' + stack.parent.state + ',...]');\n }\n else {\n stack = stack.push(state);\n }\n }\n else if (action.next === '@pop') {\n if (stack.depth <= 1) {\n throw monarchCommon.createError(this._lexer, 'trying to pop an empty stack in rule: ' + this._safeRuleName(rule));\n }\n else {\n stack = stack.pop();\n }\n }\n else if (action.next === '@popall') {\n stack = stack.popall();\n }\n else {\n let nextState = monarchCommon.substituteMatches(this._lexer, action.next, matched, matches, state);\n if (nextState[0] === '@') {\n nextState = nextState.substr(1); // peel off starting '@'\n }\n if (!monarchCommon.findRules(this._lexer, nextState)) {\n throw monarchCommon.createError(this._lexer, 'trying to set a next state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\n }\n else {\n stack = stack.push(nextState);\n }\n }\n }\n if (action.log && typeof (action.log) === 'string') {\n monarchCommon.log(this._lexer, this._lexer.languageId + ': ' + monarchCommon.substituteMatches(this._lexer, action.log, matched, matches, state));\n }\n }\n // check result\n if (result === null) {\n throw monarchCommon.createError(this._lexer, 'lexer rule has no well-defined action in rule: ' + this._safeRuleName(rule));\n }\n const computeNewStateForEmbeddedLanguage = (enteringEmbeddedLanguage) => {\n // support language names, mime types, and language ids\n const languageId = (this._languageService.getLanguageIdByLanguageName(enteringEmbeddedLanguage)\n || this._languageService.getLanguageIdByMimeType(enteringEmbeddedLanguage)\n || enteringEmbeddedLanguage);\n const embeddedLanguageData = this._getNestedEmbeddedLanguageData(languageId);\n if (pos < lineLength) {\n // there is content from the embedded language on this line\n const restOfLine = lineWithoutLF.substr(pos);\n return this._nestedTokenize(restOfLine, hasEOL, MonarchLineStateFactory.create(stack, embeddedLanguageData), offsetDelta + pos, tokensCollector);\n }\n else {\n return MonarchLineStateFactory.create(stack, embeddedLanguageData);\n }\n };\n // is the result a group match?\n if (Array.isArray(result)) {\n if (groupMatching && groupMatching.groups.length > 0) {\n throw monarchCommon.createError(this._lexer, 'groups cannot be nested: ' + this._safeRuleName(rule));\n }\n if (matches.length !== result.length + 1) {\n throw monarchCommon.createError(this._lexer, 'matched number of groups does not match the number of actions in rule: ' + this._safeRuleName(rule));\n }\n let totalLen = 0;\n for (let i = 1; i < matches.length; i++) {\n totalLen += matches[i].length;\n }\n if (totalLen !== matched.length) {\n throw monarchCommon.createError(this._lexer, 'with groups, all characters should be matched in consecutive groups in rule: ' + this._safeRuleName(rule));\n }\n groupMatching = {\n rule: rule,\n matches: matches,\n groups: []\n };\n for (let i = 0; i < result.length; i++) {\n groupMatching.groups[i] = {\n action: result[i],\n matched: matches[i + 1]\n };\n }\n pos -= matched.length;\n // call recursively to initiate first result match\n continue;\n }\n else {\n // regular result\n // check for '@rematch'\n if (result === '@rematch') {\n pos -= matched.length;\n matched = ''; // better set the next state too..\n matches = null;\n result = '';\n // Even though `@rematch` was specified, if `nextEmbedded` also specified,\n // a state transition should occur.\n if (enteringEmbeddedLanguage !== null) {\n return computeNewStateForEmbeddedLanguage(enteringEmbeddedLanguage);\n }\n }\n // check progress\n if (matched.length === 0) {\n if (lineLength === 0 || stackLen0 !== stack.depth || state !== stack.state || (!groupMatching ? 0 : groupMatching.groups.length) !== groupLen0) {\n continue;\n }\n else {\n throw monarchCommon.createError(this._lexer, 'no progress in tokenizer in rule: ' + this._safeRuleName(rule));\n }\n }\n // return the result (and check for brace matching)\n // todo: for efficiency we could pre-sanitize tokenPostfix and substitutions\n let tokenType = null;\n if (monarchCommon.isString(result) && result.indexOf('@brackets') === 0) {\n const rest = result.substr('@brackets'.length);\n const bracket = findBracket(this._lexer, matched);\n if (!bracket) {\n throw monarchCommon.createError(this._lexer, '@brackets token returned but no bracket defined as: ' + matched);\n }\n tokenType = monarchCommon.sanitize(bracket.token + rest);\n }\n else {\n const token = (result === '' ? '' : result + this._lexer.tokenPostfix);\n tokenType = monarchCommon.sanitize(token);\n }\n if (pos0 < lineWithoutLFLength) {\n tokensCollector.emit(pos0 + offsetDelta, tokenType);\n }\n }\n if (enteringEmbeddedLanguage !== null) {\n return computeNewStateForEmbeddedLanguage(enteringEmbeddedLanguage);\n }\n }\n return MonarchLineStateFactory.create(stack, embeddedLanguageData);\n }\n _getNestedEmbeddedLanguageData(languageId) {\n if (!this._languageService.isRegisteredLanguageId(languageId)) {\n return new EmbeddedLanguageData(languageId, NullState);\n }\n if (languageId !== this._languageId) {\n // Fire language loading event\n languages.TokenizationRegistry.getOrCreate(languageId);\n this._embeddedLanguages[languageId] = true;\n }\n const tokenizationSupport = languages.TokenizationRegistry.get(languageId);\n if (tokenizationSupport) {\n return new EmbeddedLanguageData(languageId, tokenizationSupport.getInitialState());\n }\n return new EmbeddedLanguageData(languageId, NullState);\n }\n};\nMonarchTokenizer = __decorate([\n __param(4, IConfigurationService)\n], MonarchTokenizer);\nexport { MonarchTokenizer };\n/**\n * Searches for a bracket in the 'brackets' attribute that matches the input.\n */\nfunction findBracket(lexer, matched) {\n if (!matched) {\n return null;\n }\n matched = monarchCommon.fixCase(lexer, matched);\n const brackets = lexer.brackets;\n for (const bracket of brackets) {\n if (bracket.open === matched) {\n return { token: bracket.token, bracketType: 1 /* monarchCommon.MonarchBracket.Open */ };\n }\n else if (bracket.close === matched) {\n return { token: bracket.token, bracketType: -1 /* monarchCommon.MonarchBracket.Close */ };\n }\n }\n return null;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport * as strings from '../../../base/common/strings.js';\nimport { LineTokens } from '../../common/tokens/lineTokens.js';\nimport { TokenizationRegistry } from '../../common/languages.js';\nimport { RenderLineInput, renderViewLine2 as renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\nimport { ViewLineRenderingData } from '../../common/viewModel.js';\nimport { MonarchTokenizer } from '../common/monarch/monarchLexer.js';\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('standaloneColorizer', { createHTML: value => value });\nexport class Colorizer {\n static colorizeElement(themeService, languageService, domNode, options) {\n options = options || {};\n const theme = options.theme || 'vs';\n const mimeType = options.mimeType || domNode.getAttribute('lang') || domNode.getAttribute('data-lang');\n if (!mimeType) {\n console.error('Mode not detected');\n return Promise.resolve();\n }\n const languageId = languageService.getLanguageIdByMimeType(mimeType) || mimeType;\n themeService.setTheme(theme);\n const text = domNode.firstChild ? domNode.firstChild.nodeValue : '';\n domNode.className += ' ' + theme;\n const render = (str) => {\n var _a;\n const trustedhtml = (_a = ttPolicy === null || ttPolicy === void 0 ? void 0 : ttPolicy.createHTML(str)) !== null && _a !== void 0 ? _a : str;\n domNode.innerHTML = trustedhtml;\n };\n return this.colorize(languageService, text || '', languageId, options).then(render, (err) => console.error(err));\n }\n static colorize(languageService, text, languageId, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const languageIdCodec = languageService.languageIdCodec;\n let tabSize = 4;\n if (options && typeof options.tabSize === 'number') {\n tabSize = options.tabSize;\n }\n if (strings.startsWithUTF8BOM(text)) {\n text = text.substr(1);\n }\n const lines = strings.splitLines(text);\n if (!languageService.isRegisteredLanguageId(languageId)) {\n return _fakeColorize(lines, tabSize, languageIdCodec);\n }\n const tokenizationSupport = yield TokenizationRegistry.getOrCreate(languageId);\n if (tokenizationSupport) {\n return _colorize(lines, tabSize, tokenizationSupport, languageIdCodec);\n }\n return _fakeColorize(lines, tabSize, languageIdCodec);\n });\n }\n static colorizeLine(line, mightContainNonBasicASCII, mightContainRTL, tokens, tabSize = 4) {\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, mightContainNonBasicASCII);\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, mightContainRTL);\n const renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, tokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\n return renderResult.html;\n }\n static colorizeModelLine(model, lineNumber, tabSize = 4) {\n const content = model.getLineContent(lineNumber);\n model.tokenization.forceTokenization(lineNumber);\n const tokens = model.tokenization.getLineTokens(lineNumber);\n const inflatedTokens = tokens.inflate();\n return this.colorizeLine(content, model.mightContainNonBasicASCII(), model.mightContainRTL(), inflatedTokens, tabSize);\n }\n}\nfunction _colorize(lines, tabSize, tokenizationSupport, languageIdCodec) {\n return new Promise((c, e) => {\n const execute = () => {\n const result = _actualColorize(lines, tabSize, tokenizationSupport, languageIdCodec);\n if (tokenizationSupport instanceof MonarchTokenizer) {\n const status = tokenizationSupport.getLoadStatus();\n if (status.loaded === false) {\n status.promise.then(execute, e);\n return;\n }\n }\n c(result);\n };\n execute();\n });\n}\nfunction _fakeColorize(lines, tabSize, languageIdCodec) {\n let html = [];\n const defaultMetadata = ((0 /* FontStyle.None */ << 11 /* MetadataConsts.FONT_STYLE_OFFSET */)\n | (1 /* ColorId.DefaultForeground */ << 15 /* MetadataConsts.FOREGROUND_OFFSET */)\n | (2 /* ColorId.DefaultBackground */ << 24 /* MetadataConsts.BACKGROUND_OFFSET */)) >>> 0;\n const tokens = new Uint32Array(2);\n tokens[0] = 0;\n tokens[1] = defaultMetadata;\n for (let i = 0, length = lines.length; i < length; i++) {\n const line = lines[i];\n tokens[0] = line.length;\n const lineTokens = new LineTokens(tokens, line, languageIdCodec);\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\n const renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\n html = html.concat(renderResult.html);\n html.push('
    ');\n }\n return html.join('');\n}\nfunction _actualColorize(lines, tabSize, tokenizationSupport, languageIdCodec) {\n let html = [];\n let state = tokenizationSupport.getInitialState();\n for (let i = 0, length = lines.length; i < length; i++) {\n const line = lines[i];\n const tokenizeResult = tokenizationSupport.tokenizeEncoded(line, true, state);\n LineTokens.convertToEndOffset(tokenizeResult.tokens, line.length);\n const lineTokens = new LineTokens(tokenizeResult.tokens, line, languageIdCodec);\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\n const renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens.inflate(), [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\n html = html.concat(renderResult.html);\n html.push('
    ');\n state = tokenizeResult.endState;\n }\n return html.join('');\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a;\nimport './media/diffReview.css';\nimport * as nls from '../../../nls.js';\nimport * as dom from '../../../base/browser/dom.js';\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\nimport { DomScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\nimport { Action } from '../../../base/common/actions.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { applyFontInfo } from '../config/domFontInfo.js';\nimport { EditorAction, registerEditorAction } from '../editorExtensions.js';\nimport { ICodeEditorService } from '../services/codeEditorService.js';\nimport { EditorFontLigatures } from '../../common/config/editorOptions.js';\nimport { LineTokens } from '../../common/tokens/lineTokens.js';\nimport { Position } from '../../common/core/position.js';\nimport { editorLineNumbers } from '../../common/core/editorColorRegistry.js';\nimport { RenderLineInput, renderViewLine2 as renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\nimport { ViewLineRenderingData } from '../../common/viewModel.js';\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\nimport { scrollbarShadow } from '../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant, ThemeIcon } from '../../../platform/theme/common/themeService.js';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { registerIcon } from '../../../platform/theme/common/iconRegistry.js';\nimport { ILanguageService } from '../../common/languages/language.js';\nconst DIFF_LINES_PADDING = 3;\nclass DiffEntry {\n constructor(originalLineStart, originalLineEnd, modifiedLineStart, modifiedLineEnd) {\n this.originalLineStart = originalLineStart;\n this.originalLineEnd = originalLineEnd;\n this.modifiedLineStart = modifiedLineStart;\n this.modifiedLineEnd = modifiedLineEnd;\n }\n getType() {\n if (this.originalLineStart === 0) {\n return 1 /* DiffEntryType.Insert */;\n }\n if (this.modifiedLineStart === 0) {\n return 2 /* DiffEntryType.Delete */;\n }\n return 0 /* DiffEntryType.Equal */;\n }\n}\nclass Diff {\n constructor(entries) {\n this.entries = entries;\n }\n}\nconst diffReviewInsertIcon = registerIcon('diff-review-insert', Codicon.add, nls.localize('diffReviewInsertIcon', 'Icon for \\'Insert\\' in diff review.'));\nconst diffReviewRemoveIcon = registerIcon('diff-review-remove', Codicon.remove, nls.localize('diffReviewRemoveIcon', 'Icon for \\'Remove\\' in diff review.'));\nconst diffReviewCloseIcon = registerIcon('diff-review-close', Codicon.close, nls.localize('diffReviewCloseIcon', 'Icon for \\'Close\\' in diff review.'));\nlet DiffReview = class DiffReview extends Disposable {\n constructor(diffEditor, _languageService) {\n super();\n this._languageService = _languageService;\n this._width = 0;\n this._diffEditor = diffEditor;\n this._isVisible = false;\n this.shadow = createFastDomNode(document.createElement('div'));\n this.shadow.setClassName('diff-review-shadow');\n this.actionBarContainer = createFastDomNode(document.createElement('div'));\n this.actionBarContainer.setClassName('diff-review-actions');\n this._actionBar = this._register(new ActionBar(this.actionBarContainer.domNode));\n this._actionBar.push(new Action('diffreview.close', nls.localize('label.close', \"Close\"), 'close-diff-review ' + ThemeIcon.asClassName(diffReviewCloseIcon), true, () => __awaiter(this, void 0, void 0, function* () { return this.hide(); })), { label: false, icon: true });\n this.domNode = createFastDomNode(document.createElement('div'));\n this.domNode.setClassName('diff-review monaco-editor-background');\n this._content = createFastDomNode(document.createElement('div'));\n this._content.setClassName('diff-review-content');\n this._content.setAttribute('role', 'code');\n this.scrollbar = this._register(new DomScrollableElement(this._content.domNode, {}));\n this.domNode.domNode.appendChild(this.scrollbar.getDomNode());\n this._register(diffEditor.onDidUpdateDiff(() => {\n if (!this._isVisible) {\n return;\n }\n this._diffs = this._compute();\n this._render();\n }));\n this._register(diffEditor.getModifiedEditor().onDidChangeCursorPosition(() => {\n if (!this._isVisible) {\n return;\n }\n this._render();\n }));\n this._register(dom.addStandardDisposableListener(this.domNode.domNode, 'click', (e) => {\n e.preventDefault();\n const row = dom.findParentWithClass(e.target, 'diff-review-row');\n if (row) {\n this._goToRow(row);\n }\n }));\n this._register(dom.addStandardDisposableListener(this.domNode.domNode, 'keydown', (e) => {\n if (e.equals(18 /* KeyCode.DownArrow */)\n || e.equals(2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */)\n || e.equals(512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */)) {\n e.preventDefault();\n this._goToRow(this._getNextRow());\n }\n if (e.equals(16 /* KeyCode.UpArrow */)\n || e.equals(2048 /* KeyMod.CtrlCmd */ | 16 /* KeyCode.UpArrow */)\n || e.equals(512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */)) {\n e.preventDefault();\n this._goToRow(this._getPrevRow());\n }\n if (e.equals(9 /* KeyCode.Escape */)\n || e.equals(2048 /* KeyMod.CtrlCmd */ | 9 /* KeyCode.Escape */)\n || e.equals(512 /* KeyMod.Alt */ | 9 /* KeyCode.Escape */)\n || e.equals(1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */)) {\n e.preventDefault();\n this.hide();\n }\n if (e.equals(10 /* KeyCode.Space */)\n || e.equals(3 /* KeyCode.Enter */)) {\n e.preventDefault();\n this.accept();\n }\n }));\n this._diffs = [];\n this._currentDiff = null;\n }\n prev() {\n let index = 0;\n if (!this._isVisible) {\n this._diffs = this._compute();\n }\n if (this._isVisible) {\n let currentIndex = -1;\n for (let i = 0, len = this._diffs.length; i < len; i++) {\n if (this._diffs[i] === this._currentDiff) {\n currentIndex = i;\n break;\n }\n }\n index = (this._diffs.length + currentIndex - 1);\n }\n else {\n index = this._findDiffIndex(this._diffEditor.getPosition());\n }\n if (this._diffs.length === 0) {\n // Nothing to do\n return;\n }\n index = index % this._diffs.length;\n const entries = this._diffs[index].entries;\n this._diffEditor.setPosition(new Position(entries[0].modifiedLineStart, 1));\n this._diffEditor.setSelection({ startColumn: 1, startLineNumber: entries[0].modifiedLineStart, endColumn: 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */, endLineNumber: entries[entries.length - 1].modifiedLineEnd });\n this._isVisible = true;\n this._diffEditor.doLayout();\n this._render();\n this._goToRow(this._getNextRow());\n }\n next() {\n let index = 0;\n if (!this._isVisible) {\n this._diffs = this._compute();\n }\n if (this._isVisible) {\n let currentIndex = -1;\n for (let i = 0, len = this._diffs.length; i < len; i++) {\n if (this._diffs[i] === this._currentDiff) {\n currentIndex = i;\n break;\n }\n }\n index = (currentIndex + 1);\n }\n else {\n index = this._findDiffIndex(this._diffEditor.getPosition());\n }\n if (this._diffs.length === 0) {\n // Nothing to do\n return;\n }\n index = index % this._diffs.length;\n const entries = this._diffs[index].entries;\n this._diffEditor.setPosition(new Position(entries[0].modifiedLineStart, 1));\n this._diffEditor.setSelection({ startColumn: 1, startLineNumber: entries[0].modifiedLineStart, endColumn: 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */, endLineNumber: entries[entries.length - 1].modifiedLineEnd });\n this._isVisible = true;\n this._diffEditor.doLayout();\n this._render();\n this._goToRow(this._getNextRow());\n }\n accept() {\n let jumpToLineNumber = -1;\n const current = this._getCurrentFocusedRow();\n if (current) {\n const lineNumber = parseInt(current.getAttribute('data-line'), 10);\n if (!isNaN(lineNumber)) {\n jumpToLineNumber = lineNumber;\n }\n }\n this.hide();\n if (jumpToLineNumber !== -1) {\n this._diffEditor.setPosition(new Position(jumpToLineNumber, 1));\n this._diffEditor.revealPosition(new Position(jumpToLineNumber, 1), 1 /* ScrollType.Immediate */);\n }\n }\n hide() {\n this._isVisible = false;\n this._diffEditor.updateOptions({ readOnly: false });\n this._diffEditor.focus();\n this._diffEditor.doLayout();\n this._render();\n }\n _getPrevRow() {\n const current = this._getCurrentFocusedRow();\n if (!current) {\n return this._getFirstRow();\n }\n if (current.previousElementSibling) {\n return current.previousElementSibling;\n }\n return current;\n }\n _getNextRow() {\n const current = this._getCurrentFocusedRow();\n if (!current) {\n return this._getFirstRow();\n }\n if (current.nextElementSibling) {\n return current.nextElementSibling;\n }\n return current;\n }\n _getFirstRow() {\n return this.domNode.domNode.querySelector('.diff-review-row');\n }\n _getCurrentFocusedRow() {\n const result = document.activeElement;\n if (result && /diff-review-row/.test(result.className)) {\n return result;\n }\n return null;\n }\n _goToRow(row) {\n const prev = this._getCurrentFocusedRow();\n row.tabIndex = 0;\n row.focus();\n if (prev && prev !== row) {\n prev.tabIndex = -1;\n }\n this.scrollbar.scanDomNode();\n }\n isVisible() {\n return this._isVisible;\n }\n layout(top, width, height) {\n this._width = width;\n this.shadow.setTop(top - 6);\n this.shadow.setWidth(width);\n this.shadow.setHeight(this._isVisible ? 6 : 0);\n this.domNode.setTop(top);\n this.domNode.setWidth(width);\n this.domNode.setHeight(height);\n this._content.setHeight(height);\n this._content.setWidth(width);\n if (this._isVisible) {\n this.actionBarContainer.setAttribute('aria-hidden', 'false');\n this.actionBarContainer.setDisplay('block');\n }\n else {\n this.actionBarContainer.setAttribute('aria-hidden', 'true');\n this.actionBarContainer.setDisplay('none');\n }\n }\n _compute() {\n const lineChanges = this._diffEditor.getLineChanges();\n if (!lineChanges || lineChanges.length === 0) {\n return [];\n }\n const originalModel = this._diffEditor.getOriginalEditor().getModel();\n const modifiedModel = this._diffEditor.getModifiedEditor().getModel();\n if (!originalModel || !modifiedModel) {\n return [];\n }\n return DiffReview._mergeAdjacent(lineChanges, originalModel.getLineCount(), modifiedModel.getLineCount());\n }\n static _mergeAdjacent(lineChanges, originalLineCount, modifiedLineCount) {\n if (!lineChanges || lineChanges.length === 0) {\n return [];\n }\n const diffs = [];\n let diffsLength = 0;\n for (let i = 0, len = lineChanges.length; i < len; i++) {\n const lineChange = lineChanges[i];\n const originalStart = lineChange.originalStartLineNumber;\n const originalEnd = lineChange.originalEndLineNumber;\n const modifiedStart = lineChange.modifiedStartLineNumber;\n const modifiedEnd = lineChange.modifiedEndLineNumber;\n const r = [];\n let rLength = 0;\n // Emit before anchors\n {\n const originalEqualAbove = (originalEnd === 0 ? originalStart : originalStart - 1);\n const modifiedEqualAbove = (modifiedEnd === 0 ? modifiedStart : modifiedStart - 1);\n // Make sure we don't step into the previous diff\n let minOriginal = 1;\n let minModified = 1;\n if (i > 0) {\n const prevLineChange = lineChanges[i - 1];\n if (prevLineChange.originalEndLineNumber === 0) {\n minOriginal = prevLineChange.originalStartLineNumber + 1;\n }\n else {\n minOriginal = prevLineChange.originalEndLineNumber + 1;\n }\n if (prevLineChange.modifiedEndLineNumber === 0) {\n minModified = prevLineChange.modifiedStartLineNumber + 1;\n }\n else {\n minModified = prevLineChange.modifiedEndLineNumber + 1;\n }\n }\n let fromOriginal = originalEqualAbove - DIFF_LINES_PADDING + 1;\n let fromModified = modifiedEqualAbove - DIFF_LINES_PADDING + 1;\n if (fromOriginal < minOriginal) {\n const delta = minOriginal - fromOriginal;\n fromOriginal = fromOriginal + delta;\n fromModified = fromModified + delta;\n }\n if (fromModified < minModified) {\n const delta = minModified - fromModified;\n fromOriginal = fromOriginal + delta;\n fromModified = fromModified + delta;\n }\n r[rLength++] = new DiffEntry(fromOriginal, originalEqualAbove, fromModified, modifiedEqualAbove);\n }\n // Emit deleted lines\n {\n if (originalEnd !== 0) {\n r[rLength++] = new DiffEntry(originalStart, originalEnd, 0, 0);\n }\n }\n // Emit inserted lines\n {\n if (modifiedEnd !== 0) {\n r[rLength++] = new DiffEntry(0, 0, modifiedStart, modifiedEnd);\n }\n }\n // Emit after anchors\n {\n const originalEqualBelow = (originalEnd === 0 ? originalStart + 1 : originalEnd + 1);\n const modifiedEqualBelow = (modifiedEnd === 0 ? modifiedStart + 1 : modifiedEnd + 1);\n // Make sure we don't step into the next diff\n let maxOriginal = originalLineCount;\n let maxModified = modifiedLineCount;\n if (i + 1 < len) {\n const nextLineChange = lineChanges[i + 1];\n if (nextLineChange.originalEndLineNumber === 0) {\n maxOriginal = nextLineChange.originalStartLineNumber;\n }\n else {\n maxOriginal = nextLineChange.originalStartLineNumber - 1;\n }\n if (nextLineChange.modifiedEndLineNumber === 0) {\n maxModified = nextLineChange.modifiedStartLineNumber;\n }\n else {\n maxModified = nextLineChange.modifiedStartLineNumber - 1;\n }\n }\n let toOriginal = originalEqualBelow + DIFF_LINES_PADDING - 1;\n let toModified = modifiedEqualBelow + DIFF_LINES_PADDING - 1;\n if (toOriginal > maxOriginal) {\n const delta = maxOriginal - toOriginal;\n toOriginal = toOriginal + delta;\n toModified = toModified + delta;\n }\n if (toModified > maxModified) {\n const delta = maxModified - toModified;\n toOriginal = toOriginal + delta;\n toModified = toModified + delta;\n }\n r[rLength++] = new DiffEntry(originalEqualBelow, toOriginal, modifiedEqualBelow, toModified);\n }\n diffs[diffsLength++] = new Diff(r);\n }\n // Merge adjacent diffs\n let curr = diffs[0].entries;\n const r = [];\n let rLength = 0;\n for (let i = 1, len = diffs.length; i < len; i++) {\n const thisDiff = diffs[i].entries;\n const currLast = curr[curr.length - 1];\n const thisFirst = thisDiff[0];\n if (currLast.getType() === 0 /* DiffEntryType.Equal */\n && thisFirst.getType() === 0 /* DiffEntryType.Equal */\n && thisFirst.originalLineStart <= currLast.originalLineEnd) {\n // We are dealing with equal lines that overlap\n curr[curr.length - 1] = new DiffEntry(currLast.originalLineStart, thisFirst.originalLineEnd, currLast.modifiedLineStart, thisFirst.modifiedLineEnd);\n curr = curr.concat(thisDiff.slice(1));\n continue;\n }\n r[rLength++] = new Diff(curr);\n curr = thisDiff;\n }\n r[rLength++] = new Diff(curr);\n return r;\n }\n _findDiffIndex(pos) {\n const lineNumber = pos.lineNumber;\n for (let i = 0, len = this._diffs.length; i < len; i++) {\n const diff = this._diffs[i].entries;\n const lastModifiedLine = diff[diff.length - 1].modifiedLineEnd;\n if (lineNumber <= lastModifiedLine) {\n return i;\n }\n }\n return 0;\n }\n _render() {\n const originalOptions = this._diffEditor.getOriginalEditor().getOptions();\n const modifiedOptions = this._diffEditor.getModifiedEditor().getOptions();\n const originalModel = this._diffEditor.getOriginalEditor().getModel();\n const modifiedModel = this._diffEditor.getModifiedEditor().getModel();\n const originalModelOpts = originalModel.getOptions();\n const modifiedModelOpts = modifiedModel.getOptions();\n if (!this._isVisible || !originalModel || !modifiedModel) {\n dom.clearNode(this._content.domNode);\n this._currentDiff = null;\n this.scrollbar.scanDomNode();\n return;\n }\n this._diffEditor.updateOptions({ readOnly: true });\n const diffIndex = this._findDiffIndex(this._diffEditor.getPosition());\n if (this._diffs[diffIndex] === this._currentDiff) {\n return;\n }\n this._currentDiff = this._diffs[diffIndex];\n const diffs = this._diffs[diffIndex].entries;\n const container = document.createElement('div');\n container.className = 'diff-review-table';\n container.setAttribute('role', 'list');\n container.setAttribute('aria-label', 'Difference review. Use \"Stage | Unstage | Revert Selected Ranges\" commands');\n applyFontInfo(container, modifiedOptions.get(46 /* EditorOption.fontInfo */));\n let minOriginalLine = 0;\n let maxOriginalLine = 0;\n let minModifiedLine = 0;\n let maxModifiedLine = 0;\n for (let i = 0, len = diffs.length; i < len; i++) {\n const diffEntry = diffs[i];\n const originalLineStart = diffEntry.originalLineStart;\n const originalLineEnd = diffEntry.originalLineEnd;\n const modifiedLineStart = diffEntry.modifiedLineStart;\n const modifiedLineEnd = diffEntry.modifiedLineEnd;\n if (originalLineStart !== 0 && ((minOriginalLine === 0 || originalLineStart < minOriginalLine))) {\n minOriginalLine = originalLineStart;\n }\n if (originalLineEnd !== 0 && ((maxOriginalLine === 0 || originalLineEnd > maxOriginalLine))) {\n maxOriginalLine = originalLineEnd;\n }\n if (modifiedLineStart !== 0 && ((minModifiedLine === 0 || modifiedLineStart < minModifiedLine))) {\n minModifiedLine = modifiedLineStart;\n }\n if (modifiedLineEnd !== 0 && ((maxModifiedLine === 0 || modifiedLineEnd > maxModifiedLine))) {\n maxModifiedLine = modifiedLineEnd;\n }\n }\n const header = document.createElement('div');\n header.className = 'diff-review-row';\n const cell = document.createElement('div');\n cell.className = 'diff-review-cell diff-review-summary';\n const originalChangedLinesCnt = maxOriginalLine - minOriginalLine + 1;\n const modifiedChangedLinesCnt = maxModifiedLine - minModifiedLine + 1;\n cell.appendChild(document.createTextNode(`${diffIndex + 1}/${this._diffs.length}: @@ -${minOriginalLine},${originalChangedLinesCnt} +${minModifiedLine},${modifiedChangedLinesCnt} @@`));\n header.setAttribute('data-line', String(minModifiedLine));\n const getAriaLines = (lines) => {\n if (lines === 0) {\n return nls.localize('no_lines_changed', \"no lines changed\");\n }\n else if (lines === 1) {\n return nls.localize('one_line_changed', \"1 line changed\");\n }\n else {\n return nls.localize('more_lines_changed', \"{0} lines changed\", lines);\n }\n };\n const originalChangedLinesCntAria = getAriaLines(originalChangedLinesCnt);\n const modifiedChangedLinesCntAria = getAriaLines(modifiedChangedLinesCnt);\n header.setAttribute('aria-label', nls.localize({\n key: 'header',\n comment: [\n 'This is the ARIA label for a git diff header.',\n 'A git diff header looks like this: @@ -154,12 +159,39 @@.',\n 'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.',\n 'Variables 0 and 1 refer to the diff index out of total number of diffs.',\n 'Variables 2 and 4 will be numbers (a line number).',\n 'Variables 3 and 5 will be \"no lines changed\", \"1 line changed\" or \"X lines changed\", localized separately.'\n ]\n }, \"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\", (diffIndex + 1), this._diffs.length, minOriginalLine, originalChangedLinesCntAria, minModifiedLine, modifiedChangedLinesCntAria));\n header.appendChild(cell);\n // @@ -504,7 +517,7 @@\n header.setAttribute('role', 'listitem');\n container.appendChild(header);\n const lineHeight = modifiedOptions.get(61 /* EditorOption.lineHeight */);\n let modLine = minModifiedLine;\n for (let i = 0, len = diffs.length; i < len; i++) {\n const diffEntry = diffs[i];\n DiffReview._renderSection(container, diffEntry, modLine, lineHeight, this._width, originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts, this._languageService.languageIdCodec);\n if (diffEntry.modifiedLineStart !== 0) {\n modLine = diffEntry.modifiedLineEnd;\n }\n }\n dom.clearNode(this._content.domNode);\n this._content.domNode.appendChild(container);\n this.scrollbar.scanDomNode();\n }\n static _renderSection(dest, diffEntry, modLine, lineHeight, width, originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts, languageIdCodec) {\n const type = diffEntry.getType();\n let rowClassName = 'diff-review-row';\n let lineNumbersExtraClassName = '';\n const spacerClassName = 'diff-review-spacer';\n let spacerIcon = null;\n switch (type) {\n case 1 /* DiffEntryType.Insert */:\n rowClassName = 'diff-review-row line-insert';\n lineNumbersExtraClassName = ' char-insert';\n spacerIcon = diffReviewInsertIcon;\n break;\n case 2 /* DiffEntryType.Delete */:\n rowClassName = 'diff-review-row line-delete';\n lineNumbersExtraClassName = ' char-delete';\n spacerIcon = diffReviewRemoveIcon;\n break;\n }\n const originalLineStart = diffEntry.originalLineStart;\n const originalLineEnd = diffEntry.originalLineEnd;\n const modifiedLineStart = diffEntry.modifiedLineStart;\n const modifiedLineEnd = diffEntry.modifiedLineEnd;\n const cnt = Math.max(modifiedLineEnd - modifiedLineStart, originalLineEnd - originalLineStart);\n const originalLayoutInfo = originalOptions.get(133 /* EditorOption.layoutInfo */);\n const originalLineNumbersWidth = originalLayoutInfo.glyphMarginWidth + originalLayoutInfo.lineNumbersWidth;\n const modifiedLayoutInfo = modifiedOptions.get(133 /* EditorOption.layoutInfo */);\n const modifiedLineNumbersWidth = 10 + modifiedLayoutInfo.glyphMarginWidth + modifiedLayoutInfo.lineNumbersWidth;\n for (let i = 0; i <= cnt; i++) {\n const originalLine = (originalLineStart === 0 ? 0 : originalLineStart + i);\n const modifiedLine = (modifiedLineStart === 0 ? 0 : modifiedLineStart + i);\n const row = document.createElement('div');\n row.style.minWidth = width + 'px';\n row.className = rowClassName;\n row.setAttribute('role', 'listitem');\n if (modifiedLine !== 0) {\n modLine = modifiedLine;\n }\n row.setAttribute('data-line', String(modLine));\n const cell = document.createElement('div');\n cell.className = 'diff-review-cell';\n cell.style.height = `${lineHeight}px`;\n row.appendChild(cell);\n const originalLineNumber = document.createElement('span');\n originalLineNumber.style.width = (originalLineNumbersWidth + 'px');\n originalLineNumber.style.minWidth = (originalLineNumbersWidth + 'px');\n originalLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n if (originalLine !== 0) {\n originalLineNumber.appendChild(document.createTextNode(String(originalLine)));\n }\n else {\n originalLineNumber.innerText = '\\u00a0';\n }\n cell.appendChild(originalLineNumber);\n const modifiedLineNumber = document.createElement('span');\n modifiedLineNumber.style.width = (modifiedLineNumbersWidth + 'px');\n modifiedLineNumber.style.minWidth = (modifiedLineNumbersWidth + 'px');\n modifiedLineNumber.style.paddingRight = '10px';\n modifiedLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\n if (modifiedLine !== 0) {\n modifiedLineNumber.appendChild(document.createTextNode(String(modifiedLine)));\n }\n else {\n modifiedLineNumber.innerText = '\\u00a0';\n }\n cell.appendChild(modifiedLineNumber);\n const spacer = document.createElement('span');\n spacer.className = spacerClassName;\n if (spacerIcon) {\n const spacerCodicon = document.createElement('span');\n spacerCodicon.className = ThemeIcon.asClassName(spacerIcon);\n spacerCodicon.innerText = '\\u00a0\\u00a0';\n spacer.appendChild(spacerCodicon);\n }\n else {\n spacer.innerText = '\\u00a0\\u00a0';\n }\n cell.appendChild(spacer);\n let lineContent;\n if (modifiedLine !== 0) {\n let html = this._renderLine(modifiedModel, modifiedOptions, modifiedModelOpts.tabSize, modifiedLine, languageIdCodec);\n if (DiffReview._ttPolicy) {\n html = DiffReview._ttPolicy.createHTML(html);\n }\n cell.insertAdjacentHTML('beforeend', html);\n lineContent = modifiedModel.getLineContent(modifiedLine);\n }\n else {\n let html = this._renderLine(originalModel, originalOptions, originalModelOpts.tabSize, originalLine, languageIdCodec);\n if (DiffReview._ttPolicy) {\n html = DiffReview._ttPolicy.createHTML(html);\n }\n cell.insertAdjacentHTML('beforeend', html);\n lineContent = originalModel.getLineContent(originalLine);\n }\n if (lineContent.length === 0) {\n lineContent = nls.localize('blankLine', \"blank\");\n }\n let ariaLabel = '';\n switch (type) {\n case 0 /* DiffEntryType.Equal */:\n if (originalLine === modifiedLine) {\n ariaLabel = nls.localize({ key: 'unchangedLine', comment: ['The placeholders are contents of the line and should not be translated.'] }, \"{0} unchanged line {1}\", lineContent, originalLine);\n }\n else {\n ariaLabel = nls.localize('equalLine', \"{0} original line {1} modified line {2}\", lineContent, originalLine, modifiedLine);\n }\n break;\n case 1 /* DiffEntryType.Insert */:\n ariaLabel = nls.localize('insertLine', \"+ {0} modified line {1}\", lineContent, modifiedLine);\n break;\n case 2 /* DiffEntryType.Delete */:\n ariaLabel = nls.localize('deleteLine', \"- {0} original line {1}\", lineContent, originalLine);\n break;\n }\n row.setAttribute('aria-label', ariaLabel);\n dest.appendChild(row);\n }\n }\n static _renderLine(model, options, tabSize, lineNumber, languageIdCodec) {\n const lineContent = model.getLineContent(lineNumber);\n const fontInfo = options.get(46 /* EditorOption.fontInfo */);\n const lineTokens = LineTokens.createEmpty(lineContent, languageIdCodec);\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());\n const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());\n const r = renderViewLine(new RenderLineInput((fontInfo.isMonospace && !options.get(29 /* EditorOption.disableMonospaceOptimizations */)), fontInfo.canUseHalfwidthRightwardsArrow, lineContent, false, isBasicASCII, containsRTL, 0, lineTokens, [], tabSize, 0, fontInfo.spaceWidth, fontInfo.middotWidth, fontInfo.wsmiddotWidth, options.get(107 /* EditorOption.stopRenderingLineAfter */), options.get(90 /* EditorOption.renderWhitespace */), options.get(85 /* EditorOption.renderControlCharacters */), options.get(47 /* EditorOption.fontLigatures */) !== EditorFontLigatures.OFF, null));\n return r.html;\n }\n};\nDiffReview._ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('diffReview', { createHTML: value => value });\nDiffReview = __decorate([\n __param(1, ILanguageService)\n], DiffReview);\nexport { DiffReview };\n// theming\nregisterThemingParticipant((theme, collector) => {\n const lineNumbers = theme.getColor(editorLineNumbers);\n if (lineNumbers) {\n collector.addRule(`.monaco-diff-editor .diff-review-line-number { color: ${lineNumbers}; }`);\n }\n const shadow = theme.getColor(scrollbarShadow);\n if (shadow) {\n collector.addRule(`.monaco-diff-editor .diff-review-shadow { box-shadow: ${shadow} 0 -6px 6px -6px inset; }`);\n }\n});\nclass DiffReviewNext extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.diffReview.next',\n label: nls.localize('editor.action.diffReview.next', \"Go to Next Difference\"),\n alias: 'Go to Next Difference',\n precondition: ContextKeyExpr.has('isInDiffEditor'),\n kbOpts: {\n kbExpr: null,\n primary: 65 /* KeyCode.F7 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n const diffEditor = findFocusedDiffEditor(accessor);\n if (diffEditor) {\n diffEditor.diffReviewNext();\n }\n }\n}\nclass DiffReviewPrev extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.diffReview.prev',\n label: nls.localize('editor.action.diffReview.prev', \"Go to Previous Difference\"),\n alias: 'Go to Previous Difference',\n precondition: ContextKeyExpr.has('isInDiffEditor'),\n kbOpts: {\n kbExpr: null,\n primary: 1024 /* KeyMod.Shift */ | 65 /* KeyCode.F7 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor, editor) {\n const diffEditor = findFocusedDiffEditor(accessor);\n if (diffEditor) {\n diffEditor.diffReviewPrev();\n }\n }\n}\nfunction findFocusedDiffEditor(accessor) {\n const codeEditorService = accessor.get(ICodeEditorService);\n const diffEditors = codeEditorService.listDiffEditors();\n const activeCodeEditor = codeEditorService.getActiveCodeEditor();\n if (!activeCodeEditor) {\n return null;\n }\n for (let i = 0, len = diffEditors.length; i < len; i++) {\n const diffEditor = diffEditors[i];\n if (diffEditor.getModifiedEditor().getId() === activeCodeEditor.getId() || diffEditor.getOriginalEditor().getId() === activeCodeEditor.getId()) {\n return diffEditor;\n }\n }\n return null;\n}\nregisterEditorAction(DiffReviewNext);\nregisterEditorAction(DiffReviewPrev);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as nls from '../../../nls.js';\nimport * as dom from '../../../base/browser/dom.js';\nimport { Action } from '../../../base/common/actions.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { Range } from '../../common/core/range.js';\nimport { Codicon } from '../../../base/common/codicons.js';\nexport class InlineDiffMargin extends Disposable {\n constructor(_viewZoneId, _marginDomNode, editor, diff, _contextMenuService, _clipboardService) {\n super();\n this._viewZoneId = _viewZoneId;\n this._marginDomNode = _marginDomNode;\n this.editor = editor;\n this.diff = diff;\n this._contextMenuService = _contextMenuService;\n this._clipboardService = _clipboardService;\n this._visibility = false;\n // make sure the diff margin shows above overlay.\n this._marginDomNode.style.zIndex = '10';\n this._diffActions = document.createElement('div');\n this._diffActions.className = Codicon.lightBulb.classNames + ' lightbulb-glyph';\n this._diffActions.style.position = 'absolute';\n const lineHeight = editor.getOption(61 /* EditorOption.lineHeight */);\n const lineFeed = editor.getModel().getEOL();\n this._diffActions.style.right = '0px';\n this._diffActions.style.visibility = 'hidden';\n this._diffActions.style.height = `${lineHeight}px`;\n this._diffActions.style.lineHeight = `${lineHeight}px`;\n this._marginDomNode.appendChild(this._diffActions);\n const actions = [];\n const isDeletion = diff.modifiedEndLineNumber === 0;\n // default action\n actions.push(new Action('diff.clipboard.copyDeletedContent', isDeletion\n ? (diff.originalEndLineNumber > diff.modifiedStartLineNumber\n ? nls.localize('diff.clipboard.copyDeletedLinesContent.label', \"Copy deleted lines\")\n : nls.localize('diff.clipboard.copyDeletedLinesContent.single.label', \"Copy deleted line\"))\n : (diff.originalEndLineNumber > diff.modifiedStartLineNumber\n ? nls.localize('diff.clipboard.copyChangedLinesContent.label', \"Copy changed lines\")\n : nls.localize('diff.clipboard.copyChangedLinesContent.single.label', \"Copy changed line\")), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\n const range = new Range(diff.originalStartLineNumber, 1, diff.originalEndLineNumber + 1, 1);\n const deletedText = diff.originalModel.getValueInRange(range);\n yield this._clipboardService.writeText(deletedText);\n })));\n let currentLineNumberOffset = 0;\n let copyLineAction = undefined;\n if (diff.originalEndLineNumber > diff.modifiedStartLineNumber) {\n copyLineAction = new Action('diff.clipboard.copyDeletedLineContent', isDeletion\n ? nls.localize('diff.clipboard.copyDeletedLineContent.label', \"Copy deleted line ({0})\", diff.originalStartLineNumber)\n : nls.localize('diff.clipboard.copyChangedLineContent.label', \"Copy changed line ({0})\", diff.originalStartLineNumber), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\n const lineContent = diff.originalModel.getLineContent(diff.originalStartLineNumber + currentLineNumberOffset);\n if (lineContent === '') {\n // empty line\n const eof = diff.originalModel.getEndOfLineSequence();\n yield this._clipboardService.writeText(eof === 0 /* EndOfLineSequence.LF */ ? '\\n' : '\\r\\n');\n }\n else {\n yield this._clipboardService.writeText(lineContent);\n }\n }));\n actions.push(copyLineAction);\n }\n const readOnly = editor.getOption(83 /* EditorOption.readOnly */);\n if (!readOnly) {\n actions.push(new Action('diff.inline.revertChange', nls.localize('diff.inline.revertChange.label', \"Revert this change\"), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\n const range = new Range(diff.originalStartLineNumber, 1, diff.originalEndLineNumber, diff.originalModel.getLineMaxColumn(diff.originalEndLineNumber));\n const deletedText = diff.originalModel.getValueInRange(range);\n if (diff.modifiedEndLineNumber === 0) {\n // deletion only\n const column = editor.getModel().getLineMaxColumn(diff.modifiedStartLineNumber);\n editor.executeEdits('diffEditor', [\n {\n range: new Range(diff.modifiedStartLineNumber, column, diff.modifiedStartLineNumber, column),\n text: lineFeed + deletedText\n }\n ]);\n }\n else {\n const column = editor.getModel().getLineMaxColumn(diff.modifiedEndLineNumber);\n editor.executeEdits('diffEditor', [\n {\n range: new Range(diff.modifiedStartLineNumber, 1, diff.modifiedEndLineNumber, column),\n text: deletedText\n }\n ]);\n }\n })));\n }\n const showContextMenu = (x, y) => {\n this._contextMenuService.showContextMenu({\n getAnchor: () => {\n return {\n x,\n y\n };\n },\n getActions: () => {\n if (copyLineAction) {\n copyLineAction.label =\n isDeletion\n ? nls.localize('diff.clipboard.copyDeletedLineContent.label', \"Copy deleted line ({0})\", diff.originalStartLineNumber + currentLineNumberOffset)\n : nls.localize('diff.clipboard.copyChangedLineContent.label', \"Copy changed line ({0})\", diff.originalStartLineNumber + currentLineNumberOffset);\n }\n return actions;\n },\n autoSelectFirstItem: true\n });\n };\n this._register(dom.addStandardDisposableListener(this._diffActions, 'mousedown', e => {\n const { top, height } = dom.getDomNodePagePosition(this._diffActions);\n const pad = Math.floor(lineHeight / 3);\n e.preventDefault();\n showContextMenu(e.posx, top + height + pad);\n }));\n this._register(editor.onMouseMove((e) => {\n if (e.target.type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */ || e.target.type === 5 /* MouseTargetType.GUTTER_VIEW_ZONE */) {\n const viewZoneId = e.target.detail.viewZoneId;\n if (viewZoneId === this._viewZoneId) {\n this.visibility = true;\n currentLineNumberOffset = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, lineHeight);\n }\n else {\n this.visibility = false;\n }\n }\n else {\n this.visibility = false;\n }\n }));\n this._register(editor.onMouseDown((e) => {\n if (!e.event.rightButton) {\n return;\n }\n if (e.target.type === 8 /* MouseTargetType.CONTENT_VIEW_ZONE */ || e.target.type === 5 /* MouseTargetType.GUTTER_VIEW_ZONE */) {\n const viewZoneId = e.target.detail.viewZoneId;\n if (viewZoneId === this._viewZoneId) {\n e.event.preventDefault();\n currentLineNumberOffset = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, lineHeight);\n showContextMenu(e.event.posx, e.event.posy + lineHeight);\n }\n }\n }));\n }\n get visibility() {\n return this._visibility;\n }\n set visibility(_visibility) {\n if (this._visibility !== _visibility) {\n this._visibility = _visibility;\n if (_visibility) {\n this._diffActions.style.visibility = 'visible';\n }\n else {\n this._diffActions.style.visibility = 'hidden';\n }\n }\n }\n _updateLightBulbPosition(marginDomNode, y, lineHeight) {\n const { top } = dom.getDomNodePagePosition(marginDomNode);\n const offset = y - top;\n const lineNumberOffset = Math.floor(offset / lineHeight);\n const newTop = lineNumberOffset * lineHeight;\n this._diffActions.style.top = `${newTop}px`;\n if (this.diff.viewLineCounts) {\n let acc = 0;\n for (let i = 0; i < this.diff.viewLineCounts.length; i++) {\n acc += this.diff.viewLineCounts[i];\n if (lineNumberOffset < acc) {\n return i;\n }\n }\n }\n return lineNumberOffset;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nimport './media/diffEditor.css';\nimport * as nls from '../../../nls.js';\nimport * as dom from '../../../base/browser/dom.js';\nimport * as assert from '../../../base/common/assert.js';\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\nimport { Sash } from '../../../base/browser/ui/sash/sash.js';\nimport { RunOnceScheduler } from '../../../base/common/async.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { applyFontInfo } from '../config/domFontInfo.js';\nimport { StableEditorScrollState } from '../stableEditorScroll.js';\nimport { ICodeEditorService } from '../services/codeEditorService.js';\nimport { CodeEditorWidget } from './codeEditorWidget.js';\nimport { DiffReview } from './diffReview.js';\nimport { EditorOptions, EditorFontLigatures, stringSet as validateStringSetOption, boolean as validateBooleanOption, clampedInt } from '../../common/config/editorOptions.js';\nimport { Position } from '../../common/core/position.js';\nimport { Range } from '../../common/core/range.js';\nimport { createStringBuilder } from '../../common/core/stringBuilder.js';\nimport * as editorCommon from '../../common/editorCommon.js';\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\nimport { IEditorWorkerService } from '../../common/services/editorWorker.js';\nimport { OverviewRulerZone } from '../../common/viewModel/overviewZoneManager.js';\nimport { LineDecoration } from '../../common/viewLayout/lineDecorations.js';\nimport { RenderLineInput, renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\nimport { InlineDecoration, ViewLineRenderingData } from '../../common/viewModel.js';\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\nimport { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection.js';\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\nimport { defaultInsertColor, defaultRemoveColor, diffBorder, diffInserted, diffInsertedOutline, diffRemoved, diffRemovedOutline, scrollbarShadow, scrollbarSliderBackground, scrollbarSliderHoverBackground, scrollbarSliderActiveBackground, diffDiagonalFill, diffInsertedLineGutter, diffRemovedLineGutter, diffInsertedLine, diffRemovedLine, diffOverviewRulerInserted, diffOverviewRulerRemoved } from '../../../platform/theme/common/colorRegistry.js';\nimport { IThemeService, getThemeTypeSelector, registerThemingParticipant, ThemeIcon } from '../../../platform/theme/common/themeService.js';\nimport { IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\nimport { InlineDiffMargin } from './inlineDiffMargin.js';\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\nimport { EditorExtensionsRegistry } from '../editorExtensions.js';\nimport { onUnexpectedError } from '../../../base/common/errors.js';\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\nimport { ElementSizeObserver } from '../config/elementSizeObserver.js';\nimport { Codicon } from '../../../base/common/codicons.js';\nimport { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from '../../../base/browser/ui/mouseCursor/mouseCursor.js';\nimport { registerIcon } from '../../../platform/theme/common/iconRegistry.js';\nimport { isHighContrast } from '../../../platform/theme/common/theme.js';\nclass VisualEditorState {\n constructor(_contextMenuService, _clipboardService) {\n this._contextMenuService = _contextMenuService;\n this._clipboardService = _clipboardService;\n this._zones = [];\n this._inlineDiffMargins = [];\n this._zonesMap = {};\n this._decorations = [];\n }\n getForeignViewZones(allViewZones) {\n return allViewZones.filter((z) => !this._zonesMap[String(z.id)]);\n }\n clean(editor) {\n // (1) View zones\n if (this._zones.length > 0) {\n editor.changeViewZones((viewChangeAccessor) => {\n for (const zoneId of this._zones) {\n viewChangeAccessor.removeZone(zoneId);\n }\n });\n }\n this._zones = [];\n this._zonesMap = {};\n // (2) Model decorations\n editor.changeDecorations((changeAccessor) => {\n this._decorations = changeAccessor.deltaDecorations(this._decorations, []);\n });\n }\n apply(editor, overviewRuler, newDecorations, restoreScrollState) {\n const scrollState = restoreScrollState ? StableEditorScrollState.capture(editor) : null;\n // view zones\n editor.changeViewZones((viewChangeAccessor) => {\n var _a;\n for (const zoneId of this._zones) {\n viewChangeAccessor.removeZone(zoneId);\n }\n for (const inlineDiffMargin of this._inlineDiffMargins) {\n inlineDiffMargin.dispose();\n }\n this._zones = [];\n this._zonesMap = {};\n this._inlineDiffMargins = [];\n for (let i = 0, length = newDecorations.zones.length; i < length; i++) {\n const viewZone = newDecorations.zones[i];\n viewZone.suppressMouseDown = true;\n const zoneId = viewChangeAccessor.addZone(viewZone);\n this._zones.push(zoneId);\n this._zonesMap[String(zoneId)] = true;\n if (newDecorations.zones[i].diff && viewZone.marginDomNode) {\n viewZone.suppressMouseDown = false;\n if (((_a = newDecorations.zones[i].diff) === null || _a === void 0 ? void 0 : _a.originalModel.getValueLength()) !== 0) {\n // do not contribute diff margin actions for newly created files\n this._inlineDiffMargins.push(new InlineDiffMargin(zoneId, viewZone.marginDomNode, editor, newDecorations.zones[i].diff, this._contextMenuService, this._clipboardService));\n }\n }\n }\n });\n scrollState === null || scrollState === void 0 ? void 0 : scrollState.restore(editor);\n // decorations\n editor.changeDecorations((changeAccessor) => {\n this._decorations = changeAccessor.deltaDecorations(this._decorations, newDecorations.decorations);\n });\n // overview ruler\n overviewRuler === null || overviewRuler === void 0 ? void 0 : overviewRuler.setZones(newDecorations.overviewZones);\n }\n}\nlet DIFF_EDITOR_ID = 0;\nconst diffInsertIcon = registerIcon('diff-insert', Codicon.add, nls.localize('diffInsertIcon', 'Line decoration for inserts in the diff editor.'));\nconst diffRemoveIcon = registerIcon('diff-remove', Codicon.remove, nls.localize('diffRemoveIcon', 'Line decoration for removals in the diff editor.'));\nconst ttPolicy = (_a = window.trustedTypes) === null || _a === void 0 ? void 0 : _a.createPolicy('diffEditorWidget', { createHTML: value => value });\nlet DiffEditorWidget = class DiffEditorWidget extends Disposable {\n constructor(domElement, options, codeEditorWidgetOptions, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, _editorProgressService) {\n super();\n this._editorProgressService = _editorProgressService;\n this._onDidDispose = this._register(new Emitter());\n this.onDidDispose = this._onDidDispose.event;\n this._onDidUpdateDiff = this._register(new Emitter());\n this.onDidUpdateDiff = this._onDidUpdateDiff.event;\n this._onDidContentSizeChange = this._register(new Emitter());\n this._lastOriginalWarning = null;\n this._lastModifiedWarning = null;\n this._editorWorkerService = editorWorkerService;\n this._codeEditorService = codeEditorService;\n this._contextKeyService = this._register(contextKeyService.createScoped(domElement));\n this._instantiationService = instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService]));\n this._contextKeyService.createKey('isInDiffEditor', true);\n this._themeService = themeService;\n this._notificationService = notificationService;\n this._id = (++DIFF_EDITOR_ID);\n this._state = 0 /* editorBrowser.DiffEditorState.Idle */;\n this._updatingDiffProgress = null;\n this._domElement = domElement;\n options = options || {};\n this._options = validateDiffEditorOptions(options, {\n enableSplitViewResizing: true,\n renderSideBySide: true,\n renderMarginRevertIcon: true,\n maxComputationTime: 5000,\n maxFileSize: 50,\n ignoreTrimWhitespace: true,\n renderIndicators: true,\n originalEditable: false,\n diffCodeLens: false,\n renderOverviewRuler: true,\n diffWordWrap: 'inherit'\n });\n if (typeof options.isInEmbeddedEditor !== 'undefined') {\n this._contextKeyService.createKey('isInEmbeddedDiffEditor', options.isInEmbeddedEditor);\n }\n else {\n this._contextKeyService.createKey('isInEmbeddedDiffEditor', false);\n }\n this._updateDecorationsRunner = this._register(new RunOnceScheduler(() => this._updateDecorations(), 0));\n this._containerDomElement = document.createElement('div');\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._options.renderSideBySide);\n this._containerDomElement.style.position = 'relative';\n this._containerDomElement.style.height = '100%';\n this._domElement.appendChild(this._containerDomElement);\n this._overviewViewportDomElement = createFastDomNode(document.createElement('div'));\n this._overviewViewportDomElement.setClassName('diffViewport');\n this._overviewViewportDomElement.setPosition('absolute');\n this._overviewDomElement = document.createElement('div');\n this._overviewDomElement.className = 'diffOverview';\n this._overviewDomElement.style.position = 'absolute';\n this._overviewDomElement.appendChild(this._overviewViewportDomElement.domNode);\n this._register(dom.addStandardDisposableListener(this._overviewDomElement, dom.EventType.POINTER_DOWN, (e) => {\n this._modifiedEditor.delegateVerticalScrollbarPointerDown(e);\n }));\n if (this._options.renderOverviewRuler) {\n this._containerDomElement.appendChild(this._overviewDomElement);\n }\n // Create left side\n this._originalDomNode = document.createElement('div');\n this._originalDomNode.className = 'editor original';\n this._originalDomNode.style.position = 'absolute';\n this._originalDomNode.style.height = '100%';\n this._containerDomElement.appendChild(this._originalDomNode);\n // Create right side\n this._modifiedDomNode = document.createElement('div');\n this._modifiedDomNode.className = 'editor modified';\n this._modifiedDomNode.style.position = 'absolute';\n this._modifiedDomNode.style.height = '100%';\n this._containerDomElement.appendChild(this._modifiedDomNode);\n this._beginUpdateDecorationsTimeout = -1;\n this._currentlyChangingViewZones = false;\n this._diffComputationToken = 0;\n this._originalEditorState = new VisualEditorState(contextMenuService, clipboardService);\n this._modifiedEditorState = new VisualEditorState(contextMenuService, clipboardService);\n this._isVisible = true;\n this._isHandlingScrollEvent = false;\n this._elementSizeObserver = this._register(new ElementSizeObserver(this._containerDomElement, options.dimension));\n this._register(this._elementSizeObserver.onDidChange(() => this._onDidContainerSizeChanged()));\n if (options.automaticLayout) {\n this._elementSizeObserver.startObserving();\n }\n this._diffComputationResult = null;\n this._originalEditor = this._createLeftHandSideEditor(options, codeEditorWidgetOptions.originalEditor || {});\n this._modifiedEditor = this._createRightHandSideEditor(options, codeEditorWidgetOptions.modifiedEditor || {});\n this._originalOverviewRuler = null;\n this._modifiedOverviewRuler = null;\n this._reviewPane = instantiationService.createInstance(DiffReview, this);\n this._containerDomElement.appendChild(this._reviewPane.domNode.domNode);\n this._containerDomElement.appendChild(this._reviewPane.shadow.domNode);\n this._containerDomElement.appendChild(this._reviewPane.actionBarContainer.domNode);\n if (this._options.renderSideBySide) {\n this._setStrategy(new DiffEditorWidgetSideBySide(this._createDataSource(), this._options.enableSplitViewResizing));\n }\n else {\n this._setStrategy(new DiffEditorWidgetInline(this._createDataSource(), this._options.enableSplitViewResizing));\n }\n this._register(themeService.onDidColorThemeChange(t => {\n if (this._strategy && this._strategy.applyColors(t)) {\n this._updateDecorationsRunner.schedule();\n }\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._options.renderSideBySide);\n }));\n const contributions = EditorExtensionsRegistry.getDiffEditorContributions();\n for (const desc of contributions) {\n try {\n this._register(instantiationService.createInstance(desc.ctor, this));\n }\n catch (err) {\n onUnexpectedError(err);\n }\n }\n this._codeEditorService.addDiffEditor(this);\n }\n _setState(newState) {\n if (this._state === newState) {\n return;\n }\n this._state = newState;\n if (this._updatingDiffProgress) {\n this._updatingDiffProgress.done();\n this._updatingDiffProgress = null;\n }\n if (this._state === 1 /* editorBrowser.DiffEditorState.ComputingDiff */) {\n this._updatingDiffProgress = this._editorProgressService.show(true, 1000);\n }\n }\n diffReviewNext() {\n this._reviewPane.next();\n }\n diffReviewPrev() {\n this._reviewPane.prev();\n }\n static _getClassName(theme, renderSideBySide) {\n let result = 'monaco-diff-editor monaco-editor-background ';\n if (renderSideBySide) {\n result += 'side-by-side ';\n }\n result += getThemeTypeSelector(theme.type);\n return result;\n }\n _disposeOverviewRulers() {\n if (this._originalOverviewRuler) {\n this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode());\n this._originalOverviewRuler.dispose();\n this._originalOverviewRuler = null;\n }\n if (this._modifiedOverviewRuler) {\n this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode());\n this._modifiedOverviewRuler.dispose();\n this._modifiedOverviewRuler = null;\n }\n }\n _createOverviewRulers() {\n if (!this._options.renderOverviewRuler) {\n return;\n }\n assert.ok(!this._originalOverviewRuler && !this._modifiedOverviewRuler);\n if (this._originalEditor.hasModel()) {\n this._originalOverviewRuler = this._originalEditor.createOverviewRuler('original diffOverviewRuler');\n this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode());\n }\n if (this._modifiedEditor.hasModel()) {\n this._modifiedOverviewRuler = this._modifiedEditor.createOverviewRuler('modified diffOverviewRuler');\n this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode());\n }\n this._layoutOverviewRulers();\n }\n _createLeftHandSideEditor(options, codeEditorWidgetOptions) {\n const editor = this._createInnerEditor(this._instantiationService, this._originalDomNode, this._adjustOptionsForLeftHandSide(options), codeEditorWidgetOptions);\n this._register(editor.onDidScrollChange((e) => {\n if (this._isHandlingScrollEvent) {\n return;\n }\n if (!e.scrollTopChanged && !e.scrollLeftChanged && !e.scrollHeightChanged) {\n return;\n }\n this._isHandlingScrollEvent = true;\n this._modifiedEditor.setScrollPosition({\n scrollLeft: e.scrollLeft,\n scrollTop: e.scrollTop\n });\n this._isHandlingScrollEvent = false;\n this._layoutOverviewViewport();\n }));\n this._register(editor.onDidChangeViewZones(() => {\n this._onViewZonesChanged();\n }));\n this._register(editor.onDidChangeConfiguration((e) => {\n if (!editor.getModel()) {\n return;\n }\n if (e.hasChanged(46 /* EditorOption.fontInfo */)) {\n this._updateDecorationsRunner.schedule();\n }\n if (e.hasChanged(134 /* EditorOption.wrappingInfo */)) {\n this._updateDecorationsRunner.cancel();\n this._updateDecorations();\n }\n }));\n this._register(editor.onDidChangeHiddenAreas(() => {\n this._updateDecorationsRunner.cancel();\n this._updateDecorations();\n }));\n this._register(editor.onDidChangeModelContent(() => {\n if (this._isVisible) {\n this._beginUpdateDecorationsSoon();\n }\n }));\n const isInDiffLeftEditorKey = this._contextKeyService.createKey('isInDiffLeftEditor', editor.hasWidgetFocus());\n this._register(editor.onDidFocusEditorWidget(() => isInDiffLeftEditorKey.set(true)));\n this._register(editor.onDidBlurEditorWidget(() => isInDiffLeftEditorKey.set(false)));\n this._register(editor.onDidContentSizeChange(e => {\n const width = this._originalEditor.getContentWidth() + this._modifiedEditor.getContentWidth() + DiffEditorWidget.ONE_OVERVIEW_WIDTH;\n const height = Math.max(this._modifiedEditor.getContentHeight(), this._originalEditor.getContentHeight());\n this._onDidContentSizeChange.fire({\n contentHeight: height,\n contentWidth: width,\n contentHeightChanged: e.contentHeightChanged,\n contentWidthChanged: e.contentWidthChanged\n });\n }));\n return editor;\n }\n _createRightHandSideEditor(options, codeEditorWidgetOptions) {\n const editor = this._createInnerEditor(this._instantiationService, this._modifiedDomNode, this._adjustOptionsForRightHandSide(options), codeEditorWidgetOptions);\n this._register(editor.onDidScrollChange((e) => {\n if (this._isHandlingScrollEvent) {\n return;\n }\n if (!e.scrollTopChanged && !e.scrollLeftChanged && !e.scrollHeightChanged) {\n return;\n }\n this._isHandlingScrollEvent = true;\n this._originalEditor.setScrollPosition({\n scrollLeft: e.scrollLeft,\n scrollTop: e.scrollTop\n });\n this._isHandlingScrollEvent = false;\n this._layoutOverviewViewport();\n }));\n this._register(editor.onDidChangeViewZones(() => {\n this._onViewZonesChanged();\n }));\n this._register(editor.onDidChangeConfiguration((e) => {\n if (!editor.getModel()) {\n return;\n }\n if (e.hasChanged(46 /* EditorOption.fontInfo */)) {\n this._updateDecorationsRunner.schedule();\n }\n if (e.hasChanged(134 /* EditorOption.wrappingInfo */)) {\n this._updateDecorationsRunner.cancel();\n this._updateDecorations();\n }\n }));\n this._register(editor.onDidChangeHiddenAreas(() => {\n this._updateDecorationsRunner.cancel();\n this._updateDecorations();\n }));\n this._register(editor.onDidChangeModelContent(() => {\n if (this._isVisible) {\n this._beginUpdateDecorationsSoon();\n }\n }));\n this._register(editor.onDidChangeModelOptions((e) => {\n if (e.tabSize) {\n this._updateDecorationsRunner.schedule();\n }\n }));\n const isInDiffRightEditorKey = this._contextKeyService.createKey('isInDiffRightEditor', editor.hasWidgetFocus());\n this._register(editor.onDidFocusEditorWidget(() => isInDiffRightEditorKey.set(true)));\n this._register(editor.onDidBlurEditorWidget(() => isInDiffRightEditorKey.set(false)));\n this._register(editor.onDidContentSizeChange(e => {\n const width = this._originalEditor.getContentWidth() + this._modifiedEditor.getContentWidth() + DiffEditorWidget.ONE_OVERVIEW_WIDTH;\n const height = Math.max(this._modifiedEditor.getContentHeight(), this._originalEditor.getContentHeight());\n this._onDidContentSizeChange.fire({\n contentHeight: height,\n contentWidth: width,\n contentHeightChanged: e.contentHeightChanged,\n contentWidthChanged: e.contentWidthChanged\n });\n }));\n // Revert change when an arrow is clicked.\n this._register(editor.onMouseDown(event => {\n var _a, _b;\n if (!event.event.rightButton && event.target.position && ((_a = event.target.element) === null || _a === void 0 ? void 0 : _a.className.includes('arrow-revert-change'))) {\n const lineNumber = event.target.position.lineNumber;\n const change = (_b = this._diffComputationResult) === null || _b === void 0 ? void 0 : _b.changes.find(c => c.modifiedStartLineNumber === lineNumber - 1 || c.modifiedStartLineNumber === lineNumber);\n if (change) {\n this.revertChange(change);\n }\n event.event.stopPropagation();\n this._updateDecorations();\n return;\n }\n }));\n return editor;\n }\n /**\n * Reverts a change in the modified editor.\n */\n revertChange(change) {\n const editor = this._modifiedEditor;\n const original = this._originalEditor.getModel();\n const modified = this._modifiedEditor.getModel();\n if (!original || !modified || !editor) {\n return;\n }\n const originalRange = change.originalEndLineNumber > 0 ? new Range(change.originalStartLineNumber, 1, change.originalEndLineNumber, original.getLineMaxColumn(change.originalEndLineNumber)) : null;\n const originalContent = originalRange ? original.getValueInRange(originalRange) : null;\n const newRange = change.modifiedEndLineNumber > 0 ? new Range(change.modifiedStartLineNumber, 1, change.modifiedEndLineNumber, modified.getLineMaxColumn(change.modifiedEndLineNumber)) : null;\n const eol = modified.getEOL();\n if (change.originalEndLineNumber === 0 && newRange) {\n // Insert change.\n // To revert: delete the new content and a linebreak (if possible)\n let range = newRange;\n if (change.modifiedStartLineNumber > 1) {\n // Try to include a linebreak from before.\n range = newRange.setStartPosition(change.modifiedStartLineNumber - 1, modified.getLineMaxColumn(change.modifiedStartLineNumber - 1));\n }\n else if (change.modifiedEndLineNumber < modified.getLineCount()) {\n // Try to include the linebreak from after.\n range = newRange.setEndPosition(change.modifiedEndLineNumber + 1, 1);\n }\n editor.executeEdits('diffEditor', [{\n range,\n text: '',\n }]);\n }\n else if (change.modifiedEndLineNumber === 0 && originalContent !== null) {\n // Delete change.\n // To revert: insert the old content and a linebreak.\n const insertAt = change.modifiedStartLineNumber < modified.getLineCount() ? new Position(change.modifiedStartLineNumber + 1, 1) : new Position(change.modifiedStartLineNumber, modified.getLineMaxColumn(change.modifiedStartLineNumber));\n editor.executeEdits('diffEditor', [{\n range: Range.fromPositions(insertAt, insertAt),\n text: change.modifiedStartLineNumber < modified.getLineCount() ? originalContent + eol : eol + originalContent,\n }]);\n }\n else if (newRange && originalContent !== null) {\n // Modified change.\n editor.executeEdits('diffEditor', [{\n range: newRange,\n text: originalContent,\n }]);\n }\n }\n _createInnerEditor(instantiationService, container, options, editorWidgetOptions) {\n return instantiationService.createInstance(CodeEditorWidget, container, options, editorWidgetOptions);\n }\n dispose() {\n this._codeEditorService.removeDiffEditor(this);\n if (this._beginUpdateDecorationsTimeout !== -1) {\n window.clearTimeout(this._beginUpdateDecorationsTimeout);\n this._beginUpdateDecorationsTimeout = -1;\n }\n this._cleanViewZonesAndDecorations();\n if (this._originalOverviewRuler) {\n this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode());\n this._originalOverviewRuler.dispose();\n }\n if (this._modifiedOverviewRuler) {\n this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode());\n this._modifiedOverviewRuler.dispose();\n }\n this._overviewDomElement.removeChild(this._overviewViewportDomElement.domNode);\n if (this._options.renderOverviewRuler) {\n this._containerDomElement.removeChild(this._overviewDomElement);\n }\n this._containerDomElement.removeChild(this._originalDomNode);\n this._originalEditor.dispose();\n this._containerDomElement.removeChild(this._modifiedDomNode);\n this._modifiedEditor.dispose();\n this._strategy.dispose();\n this._containerDomElement.removeChild(this._reviewPane.domNode.domNode);\n this._containerDomElement.removeChild(this._reviewPane.shadow.domNode);\n this._containerDomElement.removeChild(this._reviewPane.actionBarContainer.domNode);\n this._reviewPane.dispose();\n this._domElement.removeChild(this._containerDomElement);\n this._onDidDispose.fire();\n super.dispose();\n }\n //------------ begin IDiffEditor methods\n getId() {\n return this.getEditorType() + ':' + this._id;\n }\n getEditorType() {\n return editorCommon.EditorType.IDiffEditor;\n }\n getLineChanges() {\n if (!this._diffComputationResult) {\n return null;\n }\n return this._diffComputationResult.changes;\n }\n getOriginalEditor() {\n return this._originalEditor;\n }\n getModifiedEditor() {\n return this._modifiedEditor;\n }\n updateOptions(_newOptions) {\n const newOptions = validateDiffEditorOptions(_newOptions, this._options);\n const changed = changedDiffEditorOptions(this._options, newOptions);\n this._options = newOptions;\n const beginUpdateDecorations = (changed.ignoreTrimWhitespace || changed.renderIndicators || changed.renderMarginRevertIcon);\n const beginUpdateDecorationsSoon = (this._isVisible && (changed.maxComputationTime || changed.maxFileSize));\n if (beginUpdateDecorations) {\n this._beginUpdateDecorations();\n }\n else if (beginUpdateDecorationsSoon) {\n this._beginUpdateDecorationsSoon();\n }\n this._modifiedEditor.updateOptions(this._adjustOptionsForRightHandSide(_newOptions));\n this._originalEditor.updateOptions(this._adjustOptionsForLeftHandSide(_newOptions));\n // enableSplitViewResizing\n this._strategy.setEnableSplitViewResizing(this._options.enableSplitViewResizing);\n // renderSideBySide\n if (changed.renderSideBySide) {\n if (this._options.renderSideBySide) {\n this._setStrategy(new DiffEditorWidgetSideBySide(this._createDataSource(), this._options.enableSplitViewResizing));\n }\n else {\n this._setStrategy(new DiffEditorWidgetInline(this._createDataSource(), this._options.enableSplitViewResizing));\n }\n // Update class name\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._options.renderSideBySide);\n }\n // renderOverviewRuler\n if (changed.renderOverviewRuler) {\n if (this._options.renderOverviewRuler) {\n this._containerDomElement.appendChild(this._overviewDomElement);\n }\n else {\n this._containerDomElement.removeChild(this._overviewDomElement);\n }\n }\n }\n getModel() {\n return {\n original: this._originalEditor.getModel(),\n modified: this._modifiedEditor.getModel()\n };\n }\n setModel(model) {\n // Guard us against partial null model\n if (model && (!model.original || !model.modified)) {\n throw new Error(!model.original ? 'DiffEditorWidget.setModel: Original model is null' : 'DiffEditorWidget.setModel: Modified model is null');\n }\n // Remove all view zones & decorations\n this._cleanViewZonesAndDecorations();\n this._disposeOverviewRulers();\n // Update code editor models\n this._originalEditor.setModel(model ? model.original : null);\n this._modifiedEditor.setModel(model ? model.modified : null);\n this._updateDecorationsRunner.cancel();\n // this.originalEditor.onDidChangeModelOptions\n if (model) {\n this._originalEditor.setScrollTop(0);\n this._modifiedEditor.setScrollTop(0);\n }\n // Disable any diff computations that will come in\n this._diffComputationResult = null;\n this._diffComputationToken++;\n this._setState(0 /* editorBrowser.DiffEditorState.Idle */);\n if (model) {\n this._createOverviewRulers();\n // Begin comparing\n this._beginUpdateDecorations();\n }\n this._layoutOverviewViewport();\n }\n getContainerDomNode() {\n return this._domElement;\n }\n getVisibleColumnFromPosition(position) {\n return this._modifiedEditor.getVisibleColumnFromPosition(position);\n }\n getPosition() {\n return this._modifiedEditor.getPosition();\n }\n setPosition(position, source = 'api') {\n this._modifiedEditor.setPosition(position, source);\n }\n revealLine(lineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLine(lineNumber, scrollType);\n }\n revealLineInCenter(lineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLineInCenter(lineNumber, scrollType);\n }\n revealLineInCenterIfOutsideViewport(lineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLineInCenterIfOutsideViewport(lineNumber, scrollType);\n }\n revealLineNearTop(lineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLineNearTop(lineNumber, scrollType);\n }\n revealPosition(position, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealPosition(position, scrollType);\n }\n revealPositionInCenter(position, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealPositionInCenter(position, scrollType);\n }\n revealPositionInCenterIfOutsideViewport(position, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealPositionInCenterIfOutsideViewport(position, scrollType);\n }\n revealPositionNearTop(position, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealPositionNearTop(position, scrollType);\n }\n getSelection() {\n return this._modifiedEditor.getSelection();\n }\n getSelections() {\n return this._modifiedEditor.getSelections();\n }\n setSelection(something, source = 'api') {\n this._modifiedEditor.setSelection(something, source);\n }\n setSelections(ranges, source = 'api') {\n this._modifiedEditor.setSelections(ranges, source);\n }\n revealLines(startLineNumber, endLineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLines(startLineNumber, endLineNumber, scrollType);\n }\n revealLinesInCenter(startLineNumber, endLineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLinesInCenter(startLineNumber, endLineNumber, scrollType);\n }\n revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType);\n }\n revealLinesNearTop(startLineNumber, endLineNumber, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealLinesNearTop(startLineNumber, endLineNumber, scrollType);\n }\n revealRange(range, scrollType = 0 /* editorCommon.ScrollType.Smooth */, revealVerticalInCenter = false, revealHorizontal = true) {\n this._modifiedEditor.revealRange(range, scrollType, revealVerticalInCenter, revealHorizontal);\n }\n revealRangeInCenter(range, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealRangeInCenter(range, scrollType);\n }\n revealRangeInCenterIfOutsideViewport(range, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealRangeInCenterIfOutsideViewport(range, scrollType);\n }\n revealRangeNearTop(range, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealRangeNearTop(range, scrollType);\n }\n revealRangeNearTopIfOutsideViewport(range, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealRangeNearTopIfOutsideViewport(range, scrollType);\n }\n revealRangeAtTop(range, scrollType = 0 /* editorCommon.ScrollType.Smooth */) {\n this._modifiedEditor.revealRangeAtTop(range, scrollType);\n }\n getSupportedActions() {\n return this._modifiedEditor.getSupportedActions();\n }\n saveViewState() {\n const originalViewState = this._originalEditor.saveViewState();\n const modifiedViewState = this._modifiedEditor.saveViewState();\n return {\n original: originalViewState,\n modified: modifiedViewState\n };\n }\n restoreViewState(s) {\n if (s && s.original && s.modified) {\n const diffEditorState = s;\n this._originalEditor.restoreViewState(diffEditorState.original);\n this._modifiedEditor.restoreViewState(diffEditorState.modified);\n }\n }\n layout(dimension) {\n this._elementSizeObserver.observe(dimension);\n }\n focus() {\n this._modifiedEditor.focus();\n }\n hasTextFocus() {\n return this._originalEditor.hasTextFocus() || this._modifiedEditor.hasTextFocus();\n }\n trigger(source, handlerId, payload) {\n this._modifiedEditor.trigger(source, handlerId, payload);\n }\n createDecorationsCollection(decorations) {\n return this._modifiedEditor.createDecorationsCollection(decorations);\n }\n changeDecorations(callback) {\n return this._modifiedEditor.changeDecorations(callback);\n }\n //------------ end IDiffEditor methods\n //------------ begin layouting methods\n _onDidContainerSizeChanged() {\n this._doLayout();\n }\n _getReviewHeight() {\n return this._reviewPane.isVisible() ? this._elementSizeObserver.getHeight() : 0;\n }\n _layoutOverviewRulers() {\n if (!this._options.renderOverviewRuler) {\n return;\n }\n if (!this._originalOverviewRuler || !this._modifiedOverviewRuler) {\n return;\n }\n const height = this._elementSizeObserver.getHeight();\n const reviewHeight = this._getReviewHeight();\n const freeSpace = DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH - 2 * DiffEditorWidget.ONE_OVERVIEW_WIDTH;\n const layoutInfo = this._modifiedEditor.getLayoutInfo();\n if (layoutInfo) {\n this._originalOverviewRuler.setLayout({\n top: 0,\n width: DiffEditorWidget.ONE_OVERVIEW_WIDTH,\n right: freeSpace + DiffEditorWidget.ONE_OVERVIEW_WIDTH,\n height: (height - reviewHeight)\n });\n this._modifiedOverviewRuler.setLayout({\n top: 0,\n right: 0,\n width: DiffEditorWidget.ONE_OVERVIEW_WIDTH,\n height: (height - reviewHeight)\n });\n }\n }\n //------------ end layouting methods\n _onViewZonesChanged() {\n if (this._currentlyChangingViewZones) {\n return;\n }\n this._updateDecorationsRunner.schedule();\n }\n _beginUpdateDecorationsSoon() {\n // Clear previous timeout if necessary\n if (this._beginUpdateDecorationsTimeout !== -1) {\n window.clearTimeout(this._beginUpdateDecorationsTimeout);\n this._beginUpdateDecorationsTimeout = -1;\n }\n this._beginUpdateDecorationsTimeout = window.setTimeout(() => this._beginUpdateDecorations(), DiffEditorWidget.UPDATE_DIFF_DECORATIONS_DELAY);\n }\n static _equals(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n return (a.toString() === b.toString());\n }\n _beginUpdateDecorations() {\n this._beginUpdateDecorationsTimeout = -1;\n const currentOriginalModel = this._originalEditor.getModel();\n const currentModifiedModel = this._modifiedEditor.getModel();\n if (!currentOriginalModel || !currentModifiedModel) {\n return;\n }\n // Prevent old diff requests to come if a new request has been initiated\n // The best method would be to call cancel on the Promise, but this is not\n // yet supported, so using tokens for now.\n this._diffComputationToken++;\n const currentToken = this._diffComputationToken;\n const diffLimit = this._options.maxFileSize * 1024 * 1024; // MB\n const canSyncModelForDiff = (model) => {\n const bufferTextLength = model.getValueLength();\n return (diffLimit === 0 || bufferTextLength <= diffLimit);\n };\n if (!canSyncModelForDiff(currentOriginalModel) || !canSyncModelForDiff(currentModifiedModel)) {\n if (!DiffEditorWidget._equals(currentOriginalModel.uri, this._lastOriginalWarning)\n || !DiffEditorWidget._equals(currentModifiedModel.uri, this._lastModifiedWarning)) {\n this._lastOriginalWarning = currentOriginalModel.uri;\n this._lastModifiedWarning = currentModifiedModel.uri;\n this._notificationService.warn(nls.localize(\"diff.tooLarge\", \"Cannot compare files because one file is too large.\"));\n }\n return;\n }\n this._setState(1 /* editorBrowser.DiffEditorState.ComputingDiff */);\n this._editorWorkerService.computeDiff(currentOriginalModel.uri, currentModifiedModel.uri, this._options.ignoreTrimWhitespace, this._options.maxComputationTime).then((result) => {\n if (currentToken === this._diffComputationToken\n && currentOriginalModel === this._originalEditor.getModel()\n && currentModifiedModel === this._modifiedEditor.getModel()) {\n this._setState(2 /* editorBrowser.DiffEditorState.DiffComputed */);\n this._diffComputationResult = result;\n this._updateDecorationsRunner.schedule();\n this._onDidUpdateDiff.fire();\n }\n }, (error) => {\n if (currentToken === this._diffComputationToken\n && currentOriginalModel === this._originalEditor.getModel()\n && currentModifiedModel === this._modifiedEditor.getModel()) {\n this._setState(2 /* editorBrowser.DiffEditorState.DiffComputed */);\n this._diffComputationResult = null;\n this._updateDecorationsRunner.schedule();\n }\n });\n }\n _cleanViewZonesAndDecorations() {\n this._originalEditorState.clean(this._originalEditor);\n this._modifiedEditorState.clean(this._modifiedEditor);\n }\n _updateDecorations() {\n if (!this._originalEditor.getModel() || !this._modifiedEditor.getModel()) {\n return;\n }\n const lineChanges = (this._diffComputationResult ? this._diffComputationResult.changes : []);\n const foreignOriginal = this._originalEditorState.getForeignViewZones(this._originalEditor.getWhitespaces());\n const foreignModified = this._modifiedEditorState.getForeignViewZones(this._modifiedEditor.getWhitespaces());\n const diffDecorations = this._strategy.getEditorsDiffDecorations(lineChanges, this._options.ignoreTrimWhitespace, this._options.renderIndicators, this._options.renderMarginRevertIcon, foreignOriginal, foreignModified);\n try {\n this._currentlyChangingViewZones = true;\n this._originalEditorState.apply(this._originalEditor, this._originalOverviewRuler, diffDecorations.original, false);\n this._modifiedEditorState.apply(this._modifiedEditor, this._modifiedOverviewRuler, diffDecorations.modified, true);\n }\n finally {\n this._currentlyChangingViewZones = false;\n }\n }\n _adjustOptionsForSubEditor(options) {\n const clonedOptions = Object.assign({}, options);\n clonedOptions.inDiffEditor = true;\n clonedOptions.automaticLayout = false;\n // Clone scrollbar options before changing them\n clonedOptions.scrollbar = Object.assign({}, (clonedOptions.scrollbar || {}));\n clonedOptions.scrollbar.vertical = 'visible';\n clonedOptions.folding = false;\n clonedOptions.codeLens = this._options.diffCodeLens;\n clonedOptions.fixedOverflowWidgets = true;\n // clonedOptions.lineDecorationsWidth = '2ch';\n // Clone minimap options before changing them\n clonedOptions.minimap = Object.assign({}, (clonedOptions.minimap || {}));\n clonedOptions.minimap.enabled = false;\n return clonedOptions;\n }\n _adjustOptionsForLeftHandSide(options) {\n const result = this._adjustOptionsForSubEditor(options);\n if (!this._options.renderSideBySide) {\n // never wrap hidden editor\n result.wordWrapOverride1 = 'off';\n result.wordWrapOverride2 = 'off';\n }\n else {\n result.wordWrapOverride1 = this._options.diffWordWrap;\n }\n if (options.originalAriaLabel) {\n result.ariaLabel = options.originalAriaLabel;\n }\n result.readOnly = !this._options.originalEditable;\n result.dropIntoEditor = { enabled: !result.readOnly };\n result.extraEditorClassName = 'original-in-monaco-diff-editor';\n return Object.assign(Object.assign({}, result), { dimension: {\n height: 0,\n width: 0\n } });\n }\n _adjustOptionsForRightHandSide(options) {\n const result = this._adjustOptionsForSubEditor(options);\n if (options.modifiedAriaLabel) {\n result.ariaLabel = options.modifiedAriaLabel;\n }\n result.wordWrapOverride1 = this._options.diffWordWrap;\n result.revealHorizontalRightPadding = EditorOptions.revealHorizontalRightPadding.defaultValue + DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH;\n result.scrollbar.verticalHasArrows = false;\n result.extraEditorClassName = 'modified-in-monaco-diff-editor';\n return Object.assign(Object.assign({}, result), { dimension: {\n height: 0,\n width: 0\n } });\n }\n doLayout() {\n this._elementSizeObserver.observe();\n this._doLayout();\n }\n _doLayout() {\n const width = this._elementSizeObserver.getWidth();\n const height = this._elementSizeObserver.getHeight();\n const reviewHeight = this._getReviewHeight();\n const splitPoint = this._strategy.layout();\n this._originalDomNode.style.width = splitPoint + 'px';\n this._originalDomNode.style.left = '0px';\n this._modifiedDomNode.style.width = (width - splitPoint) + 'px';\n this._modifiedDomNode.style.left = splitPoint + 'px';\n this._overviewDomElement.style.top = '0px';\n this._overviewDomElement.style.height = (height - reviewHeight) + 'px';\n this._overviewDomElement.style.width = DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH + 'px';\n this._overviewDomElement.style.left = (width - DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH) + 'px';\n this._overviewViewportDomElement.setWidth(DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH);\n this._overviewViewportDomElement.setHeight(30);\n this._originalEditor.layout({ width: splitPoint, height: (height - reviewHeight) });\n this._modifiedEditor.layout({ width: width - splitPoint - (this._options.renderOverviewRuler ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0), height: (height - reviewHeight) });\n if (this._originalOverviewRuler || this._modifiedOverviewRuler) {\n this._layoutOverviewRulers();\n }\n this._reviewPane.layout(height - reviewHeight, width, reviewHeight);\n this._layoutOverviewViewport();\n }\n _layoutOverviewViewport() {\n const layout = this._computeOverviewViewport();\n if (!layout) {\n this._overviewViewportDomElement.setTop(0);\n this._overviewViewportDomElement.setHeight(0);\n }\n else {\n this._overviewViewportDomElement.setTop(layout.top);\n this._overviewViewportDomElement.setHeight(layout.height);\n }\n }\n _computeOverviewViewport() {\n const layoutInfo = this._modifiedEditor.getLayoutInfo();\n if (!layoutInfo) {\n return null;\n }\n const scrollTop = this._modifiedEditor.getScrollTop();\n const scrollHeight = this._modifiedEditor.getScrollHeight();\n const computedAvailableSize = Math.max(0, layoutInfo.height);\n const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * 0);\n const computedRatio = scrollHeight > 0 ? (computedRepresentableSize / scrollHeight) : 0;\n const computedSliderSize = Math.max(0, Math.floor(layoutInfo.height * computedRatio));\n const computedSliderPosition = Math.floor(scrollTop * computedRatio);\n return {\n height: computedSliderSize,\n top: computedSliderPosition\n };\n }\n _createDataSource() {\n return {\n getWidth: () => {\n return this._elementSizeObserver.getWidth();\n },\n getHeight: () => {\n return (this._elementSizeObserver.getHeight() - this._getReviewHeight());\n },\n getOptions: () => {\n return {\n renderOverviewRuler: this._options.renderOverviewRuler\n };\n },\n getContainerDomNode: () => {\n return this._containerDomElement;\n },\n relayoutEditors: () => {\n this._doLayout();\n },\n getOriginalEditor: () => {\n return this._originalEditor;\n },\n getModifiedEditor: () => {\n return this._modifiedEditor;\n }\n };\n }\n _setStrategy(newStrategy) {\n if (this._strategy) {\n this._strategy.dispose();\n }\n this._strategy = newStrategy;\n newStrategy.applyColors(this._themeService.getColorTheme());\n if (this._diffComputationResult) {\n this._updateDecorations();\n }\n // Just do a layout, the strategy might need it\n this._doLayout();\n }\n _getLineChangeAtOrBeforeLineNumber(lineNumber, startLineNumberExtractor) {\n const lineChanges = (this._diffComputationResult ? this._diffComputationResult.changes : []);\n if (lineChanges.length === 0 || lineNumber < startLineNumberExtractor(lineChanges[0])) {\n // There are no changes or `lineNumber` is before the first change\n return null;\n }\n let min = 0;\n let max = lineChanges.length - 1;\n while (min < max) {\n const mid = Math.floor((min + max) / 2);\n const midStart = startLineNumberExtractor(lineChanges[mid]);\n const midEnd = (mid + 1 <= max ? startLineNumberExtractor(lineChanges[mid + 1]) : 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */);\n if (lineNumber < midStart) {\n max = mid - 1;\n }\n else if (lineNumber >= midEnd) {\n min = mid + 1;\n }\n else {\n // HIT!\n min = mid;\n max = mid;\n }\n }\n return lineChanges[min];\n }\n _getEquivalentLineForOriginalLineNumber(lineNumber) {\n const lineChange = this._getLineChangeAtOrBeforeLineNumber(lineNumber, (lineChange) => lineChange.originalStartLineNumber);\n if (!lineChange) {\n return lineNumber;\n }\n const originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\n const modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\n const lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? (lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1) : 0);\n const lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? (lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1) : 0);\n const delta = lineNumber - originalEquivalentLineNumber;\n if (delta <= lineChangeOriginalLength) {\n return modifiedEquivalentLineNumber + Math.min(delta, lineChangeModifiedLength);\n }\n return modifiedEquivalentLineNumber + lineChangeModifiedLength - lineChangeOriginalLength + delta;\n }\n _getEquivalentLineForModifiedLineNumber(lineNumber) {\n const lineChange = this._getLineChangeAtOrBeforeLineNumber(lineNumber, (lineChange) => lineChange.modifiedStartLineNumber);\n if (!lineChange) {\n return lineNumber;\n }\n const originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\n const modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\n const lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? (lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1) : 0);\n const lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? (lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1) : 0);\n const delta = lineNumber - modifiedEquivalentLineNumber;\n if (delta <= lineChangeModifiedLength) {\n return originalEquivalentLineNumber + Math.min(delta, lineChangeOriginalLength);\n }\n return originalEquivalentLineNumber + lineChangeOriginalLength - lineChangeModifiedLength + delta;\n }\n getDiffLineInformationForOriginal(lineNumber) {\n if (!this._diffComputationResult) {\n // Cannot answer that which I don't know\n return null;\n }\n return {\n equivalentLineNumber: this._getEquivalentLineForOriginalLineNumber(lineNumber)\n };\n }\n getDiffLineInformationForModified(lineNumber) {\n if (!this._diffComputationResult) {\n // Cannot answer that which I don't know\n return null;\n }\n return {\n equivalentLineNumber: this._getEquivalentLineForModifiedLineNumber(lineNumber)\n };\n }\n};\nDiffEditorWidget.ONE_OVERVIEW_WIDTH = 15;\nDiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH = 30;\nDiffEditorWidget.UPDATE_DIFF_DECORATIONS_DELAY = 200; // ms\nDiffEditorWidget = __decorate([\n __param(3, IClipboardService),\n __param(4, IEditorWorkerService),\n __param(5, IContextKeyService),\n __param(6, IInstantiationService),\n __param(7, ICodeEditorService),\n __param(8, IThemeService),\n __param(9, INotificationService),\n __param(10, IContextMenuService),\n __param(11, IEditorProgressService)\n], DiffEditorWidget);\nexport { DiffEditorWidget };\nclass DiffEditorWidgetStyle extends Disposable {\n constructor(dataSource) {\n super();\n this._dataSource = dataSource;\n this._insertColor = null;\n this._removeColor = null;\n }\n applyColors(theme) {\n const newInsertColor = theme.getColor(diffOverviewRulerInserted) || (theme.getColor(diffInserted) || defaultInsertColor).transparent(2);\n const newRemoveColor = theme.getColor(diffOverviewRulerRemoved) || (theme.getColor(diffRemoved) || defaultRemoveColor).transparent(2);\n const hasChanges = !newInsertColor.equals(this._insertColor) || !newRemoveColor.equals(this._removeColor);\n this._insertColor = newInsertColor;\n this._removeColor = newRemoveColor;\n return hasChanges;\n }\n getEditorsDiffDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, renderMarginRevertIcon, originalWhitespaces, modifiedWhitespaces) {\n // Get view zones\n modifiedWhitespaces = modifiedWhitespaces.sort((a, b) => {\n return a.afterLineNumber - b.afterLineNumber;\n });\n originalWhitespaces = originalWhitespaces.sort((a, b) => {\n return a.afterLineNumber - b.afterLineNumber;\n });\n const zones = this._getViewZones(lineChanges, originalWhitespaces, modifiedWhitespaces, renderIndicators);\n // Get decorations & overview ruler zones\n const originalDecorations = this._getOriginalEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators);\n const modifiedDecorations = this._getModifiedEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators, renderMarginRevertIcon);\n return {\n original: {\n decorations: originalDecorations.decorations,\n overviewZones: originalDecorations.overviewZones,\n zones: zones.original\n },\n modified: {\n decorations: modifiedDecorations.decorations,\n overviewZones: modifiedDecorations.overviewZones,\n zones: zones.modified\n }\n };\n }\n}\nclass ForeignViewZonesIterator {\n constructor(source) {\n this._source = source;\n this._index = -1;\n this.current = null;\n this.advance();\n }\n advance() {\n this._index++;\n if (this._index < this._source.length) {\n this.current = this._source[this._index];\n }\n else {\n this.current = null;\n }\n }\n}\nclass ViewZonesComputer {\n constructor(_lineChanges, _originalForeignVZ, _modifiedForeignVZ, _originalEditor, _modifiedEditor) {\n this._lineChanges = _lineChanges;\n this._originalForeignVZ = _originalForeignVZ;\n this._modifiedForeignVZ = _modifiedForeignVZ;\n this._originalEditor = _originalEditor;\n this._modifiedEditor = _modifiedEditor;\n }\n static _getViewLineCount(editor, startLineNumber, endLineNumber) {\n const model = editor.getModel();\n const viewModel = editor._getViewModel();\n if (model && viewModel) {\n const viewRange = getViewRange(model, viewModel, startLineNumber, endLineNumber);\n return (viewRange.endLineNumber - viewRange.startLineNumber + 1);\n }\n return (endLineNumber - startLineNumber + 1);\n }\n getViewZones() {\n const originalLineHeight = this._originalEditor.getOption(61 /* EditorOption.lineHeight */);\n const modifiedLineHeight = this._modifiedEditor.getOption(61 /* EditorOption.lineHeight */);\n const originalHasWrapping = (this._originalEditor.getOption(134 /* EditorOption.wrappingInfo */).wrappingColumn !== -1);\n const modifiedHasWrapping = (this._modifiedEditor.getOption(134 /* EditorOption.wrappingInfo */).wrappingColumn !== -1);\n const hasWrapping = (originalHasWrapping || modifiedHasWrapping);\n const originalModel = this._originalEditor.getModel();\n const originalCoordinatesConverter = this._originalEditor._getViewModel().coordinatesConverter;\n const modifiedCoordinatesConverter = this._modifiedEditor._getViewModel().coordinatesConverter;\n const result = {\n original: [],\n modified: []\n };\n let lineChangeModifiedLength = 0;\n let lineChangeOriginalLength = 0;\n let originalEquivalentLineNumber = 0;\n let modifiedEquivalentLineNumber = 0;\n let originalEndEquivalentLineNumber = 0;\n let modifiedEndEquivalentLineNumber = 0;\n const sortMyViewZones = (a, b) => {\n return a.afterLineNumber - b.afterLineNumber;\n };\n const addAndCombineIfPossible = (destination, item) => {\n if (item.domNode === null && destination.length > 0) {\n const lastItem = destination[destination.length - 1];\n if (lastItem.afterLineNumber === item.afterLineNumber && lastItem.domNode === null) {\n lastItem.heightInLines += item.heightInLines;\n return;\n }\n }\n destination.push(item);\n };\n const modifiedForeignVZ = new ForeignViewZonesIterator(this._modifiedForeignVZ);\n const originalForeignVZ = new ForeignViewZonesIterator(this._originalForeignVZ);\n let lastOriginalLineNumber = 1;\n let lastModifiedLineNumber = 1;\n // In order to include foreign view zones after the last line change, the for loop will iterate once more after the end of the `lineChanges` array\n for (let i = 0, length = this._lineChanges.length; i <= length; i++) {\n const lineChange = (i < length ? this._lineChanges[i] : null);\n if (lineChange !== null) {\n originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\n modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\n lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? ViewZonesComputer._getViewLineCount(this._originalEditor, lineChange.originalStartLineNumber, lineChange.originalEndLineNumber) : 0);\n lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? ViewZonesComputer._getViewLineCount(this._modifiedEditor, lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber) : 0);\n originalEndEquivalentLineNumber = Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber);\n modifiedEndEquivalentLineNumber = Math.max(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber);\n }\n else {\n // Increase to very large value to get the producing tests of foreign view zones running\n originalEquivalentLineNumber += 10000000 + lineChangeOriginalLength;\n modifiedEquivalentLineNumber += 10000000 + lineChangeModifiedLength;\n originalEndEquivalentLineNumber = originalEquivalentLineNumber;\n modifiedEndEquivalentLineNumber = modifiedEquivalentLineNumber;\n }\n // Each step produces view zones, and after producing them, we try to cancel them out, to avoid empty-empty view zone cases\n let stepOriginal = [];\n let stepModified = [];\n // ---------------------------- PRODUCE VIEW ZONES\n // [PRODUCE] View zones due to line mapping differences (equal lines but wrapped differently)\n if (hasWrapping) {\n let count;\n if (lineChange) {\n if (lineChange.originalEndLineNumber > 0) {\n count = lineChange.originalStartLineNumber - lastOriginalLineNumber;\n }\n else {\n count = lineChange.modifiedStartLineNumber - lastModifiedLineNumber;\n }\n }\n else {\n // `lastOriginalLineNumber` has not been looked at yet\n count = originalModel.getLineCount() - lastOriginalLineNumber + 1;\n }\n for (let i = 0; i < count; i++) {\n const originalLineNumber = lastOriginalLineNumber + i;\n const modifiedLineNumber = lastModifiedLineNumber + i;\n const originalViewLineCount = originalCoordinatesConverter.getModelLineViewLineCount(originalLineNumber);\n const modifiedViewLineCount = modifiedCoordinatesConverter.getModelLineViewLineCount(modifiedLineNumber);\n if (originalViewLineCount < modifiedViewLineCount) {\n stepOriginal.push({\n afterLineNumber: originalLineNumber,\n heightInLines: modifiedViewLineCount - originalViewLineCount,\n domNode: null,\n marginDomNode: null\n });\n }\n else if (originalViewLineCount > modifiedViewLineCount) {\n stepModified.push({\n afterLineNumber: modifiedLineNumber,\n heightInLines: originalViewLineCount - modifiedViewLineCount,\n domNode: null,\n marginDomNode: null\n });\n }\n }\n if (lineChange) {\n lastOriginalLineNumber = (lineChange.originalEndLineNumber > 0 ? lineChange.originalEndLineNumber : lineChange.originalStartLineNumber) + 1;\n lastModifiedLineNumber = (lineChange.modifiedEndLineNumber > 0 ? lineChange.modifiedEndLineNumber : lineChange.modifiedStartLineNumber) + 1;\n }\n }\n // [PRODUCE] View zone(s) in original-side due to foreign view zone(s) in modified-side\n while (modifiedForeignVZ.current && modifiedForeignVZ.current.afterLineNumber <= modifiedEndEquivalentLineNumber) {\n let viewZoneLineNumber;\n if (modifiedForeignVZ.current.afterLineNumber <= modifiedEquivalentLineNumber) {\n viewZoneLineNumber = originalEquivalentLineNumber - modifiedEquivalentLineNumber + modifiedForeignVZ.current.afterLineNumber;\n }\n else {\n viewZoneLineNumber = originalEndEquivalentLineNumber;\n }\n let marginDomNode = null;\n if (lineChange && lineChange.modifiedStartLineNumber <= modifiedForeignVZ.current.afterLineNumber && modifiedForeignVZ.current.afterLineNumber <= lineChange.modifiedEndLineNumber) {\n marginDomNode = this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion();\n }\n stepOriginal.push({\n afterLineNumber: viewZoneLineNumber,\n heightInLines: modifiedForeignVZ.current.height / modifiedLineHeight,\n domNode: null,\n marginDomNode: marginDomNode\n });\n modifiedForeignVZ.advance();\n }\n // [PRODUCE] View zone(s) in modified-side due to foreign view zone(s) in original-side\n while (originalForeignVZ.current && originalForeignVZ.current.afterLineNumber <= originalEndEquivalentLineNumber) {\n let viewZoneLineNumber;\n if (originalForeignVZ.current.afterLineNumber <= originalEquivalentLineNumber) {\n viewZoneLineNumber = modifiedEquivalentLineNumber - originalEquivalentLineNumber + originalForeignVZ.current.afterLineNumber;\n }\n else {\n viewZoneLineNumber = modifiedEndEquivalentLineNumber;\n }\n stepModified.push({\n afterLineNumber: viewZoneLineNumber,\n heightInLines: originalForeignVZ.current.height / originalLineHeight,\n domNode: null\n });\n originalForeignVZ.advance();\n }\n if (lineChange !== null && isChangeOrInsert(lineChange)) {\n const r = this._produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength);\n if (r) {\n stepOriginal.push(r);\n }\n }\n if (lineChange !== null && isChangeOrDelete(lineChange)) {\n const r = this._produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength);\n if (r) {\n stepModified.push(r);\n }\n }\n // ---------------------------- END PRODUCE VIEW ZONES\n // ---------------------------- EMIT MINIMAL VIEW ZONES\n // [CANCEL & EMIT] Try to cancel view zones out\n let stepOriginalIndex = 0;\n let stepModifiedIndex = 0;\n stepOriginal = stepOriginal.sort(sortMyViewZones);\n stepModified = stepModified.sort(sortMyViewZones);\n while (stepOriginalIndex < stepOriginal.length && stepModifiedIndex < stepModified.length) {\n const original = stepOriginal[stepOriginalIndex];\n const modified = stepModified[stepModifiedIndex];\n const originalDelta = original.afterLineNumber - originalEquivalentLineNumber;\n const modifiedDelta = modified.afterLineNumber - modifiedEquivalentLineNumber;\n if (originalDelta < modifiedDelta) {\n addAndCombineIfPossible(result.original, original);\n stepOriginalIndex++;\n }\n else if (modifiedDelta < originalDelta) {\n addAndCombineIfPossible(result.modified, modified);\n stepModifiedIndex++;\n }\n else if (original.shouldNotShrink) {\n addAndCombineIfPossible(result.original, original);\n stepOriginalIndex++;\n }\n else if (modified.shouldNotShrink) {\n addAndCombineIfPossible(result.modified, modified);\n stepModifiedIndex++;\n }\n else {\n if (original.heightInLines >= modified.heightInLines) {\n // modified view zone gets removed\n original.heightInLines -= modified.heightInLines;\n stepModifiedIndex++;\n }\n else {\n // original view zone gets removed\n modified.heightInLines -= original.heightInLines;\n stepOriginalIndex++;\n }\n }\n }\n // [EMIT] Remaining original view zones\n while (stepOriginalIndex < stepOriginal.length) {\n addAndCombineIfPossible(result.original, stepOriginal[stepOriginalIndex]);\n stepOriginalIndex++;\n }\n // [EMIT] Remaining modified view zones\n while (stepModifiedIndex < stepModified.length) {\n addAndCombineIfPossible(result.modified, stepModified[stepModifiedIndex]);\n stepModifiedIndex++;\n }\n // ---------------------------- END EMIT MINIMAL VIEW ZONES\n }\n return {\n original: ViewZonesComputer._ensureDomNodes(result.original),\n modified: ViewZonesComputer._ensureDomNodes(result.modified),\n };\n }\n static _ensureDomNodes(zones) {\n return zones.map((z) => {\n if (!z.domNode) {\n z.domNode = createFakeLinesDiv();\n }\n return z;\n });\n }\n}\nfunction createDecoration(startLineNumber, startColumn, endLineNumber, endColumn, options) {\n return {\n range: new Range(startLineNumber, startColumn, endLineNumber, endColumn),\n options: options\n };\n}\nconst DECORATIONS = {\n arrowRevertChange: ModelDecorationOptions.register({\n description: 'diff-editor-arrow-revert-change',\n glyphMarginClassName: 'arrow-revert-change ' + ThemeIcon.asClassName(Codicon.arrowRight),\n }),\n charDelete: ModelDecorationOptions.register({\n description: 'diff-editor-char-delete',\n className: 'char-delete'\n }),\n charDeleteWholeLine: ModelDecorationOptions.register({\n description: 'diff-editor-char-delete-whole-line',\n className: 'char-delete',\n isWholeLine: true\n }),\n charInsert: ModelDecorationOptions.register({\n description: 'diff-editor-char-insert',\n className: 'char-insert'\n }),\n charInsertWholeLine: ModelDecorationOptions.register({\n description: 'diff-editor-char-insert-whole-line',\n className: 'char-insert',\n isWholeLine: true\n }),\n lineInsert: ModelDecorationOptions.register({\n description: 'diff-editor-line-insert',\n className: 'line-insert',\n marginClassName: 'gutter-insert',\n isWholeLine: true\n }),\n lineInsertWithSign: ModelDecorationOptions.register({\n description: 'diff-editor-line-insert-with-sign',\n className: 'line-insert',\n linesDecorationsClassName: 'insert-sign ' + ThemeIcon.asClassName(diffInsertIcon),\n marginClassName: 'gutter-insert',\n isWholeLine: true\n }),\n lineDelete: ModelDecorationOptions.register({\n description: 'diff-editor-line-delete',\n className: 'line-delete',\n marginClassName: 'gutter-delete',\n isWholeLine: true\n }),\n lineDeleteWithSign: ModelDecorationOptions.register({\n description: 'diff-editor-line-delete-with-sign',\n className: 'line-delete',\n linesDecorationsClassName: 'delete-sign ' + ThemeIcon.asClassName(diffRemoveIcon),\n marginClassName: 'gutter-delete',\n isWholeLine: true\n }),\n lineDeleteMargin: ModelDecorationOptions.register({\n description: 'diff-editor-line-delete-margin',\n marginClassName: 'gutter-delete',\n })\n};\nclass DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle {\n constructor(dataSource, enableSplitViewResizing) {\n super(dataSource);\n this._disableSash = (enableSplitViewResizing === false);\n this._sashRatio = null;\n this._sashPosition = null;\n this._startSashPosition = null;\n this._sash = this._register(new Sash(this._dataSource.getContainerDomNode(), this, { orientation: 0 /* Orientation.VERTICAL */ }));\n if (this._disableSash) {\n this._sash.state = 0 /* SashState.Disabled */;\n }\n this._sash.onDidStart(() => this._onSashDragStart());\n this._sash.onDidChange((e) => this._onSashDrag(e));\n this._sash.onDidEnd(() => this._onSashDragEnd());\n this._sash.onDidReset(() => this._onSashReset());\n }\n setEnableSplitViewResizing(enableSplitViewResizing) {\n const newDisableSash = (enableSplitViewResizing === false);\n if (this._disableSash !== newDisableSash) {\n this._disableSash = newDisableSash;\n this._sash.state = this._disableSash ? 0 /* SashState.Disabled */ : 3 /* SashState.Enabled */;\n }\n }\n layout(sashRatio = this._sashRatio) {\n const w = this._dataSource.getWidth();\n const contentWidth = w - (this._dataSource.getOptions().renderOverviewRuler ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0);\n let sashPosition = Math.floor((sashRatio || 0.5) * contentWidth);\n const midPoint = Math.floor(0.5 * contentWidth);\n sashPosition = this._disableSash ? midPoint : sashPosition || midPoint;\n if (contentWidth > DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH * 2) {\n if (sashPosition < DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH) {\n sashPosition = DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH;\n }\n if (sashPosition > contentWidth - DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH) {\n sashPosition = contentWidth - DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH;\n }\n }\n else {\n sashPosition = midPoint;\n }\n if (this._sashPosition !== sashPosition) {\n this._sashPosition = sashPosition;\n }\n this._sash.layout();\n return this._sashPosition;\n }\n _onSashDragStart() {\n this._startSashPosition = this._sashPosition;\n }\n _onSashDrag(e) {\n const w = this._dataSource.getWidth();\n const contentWidth = w - (this._dataSource.getOptions().renderOverviewRuler ? DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH : 0);\n const sashPosition = this.layout((this._startSashPosition + (e.currentX - e.startX)) / contentWidth);\n this._sashRatio = sashPosition / contentWidth;\n this._dataSource.relayoutEditors();\n }\n _onSashDragEnd() {\n this._sash.layout();\n }\n _onSashReset() {\n this._sashRatio = 0.5;\n this._dataSource.relayoutEditors();\n this._sash.layout();\n }\n getVerticalSashTop(sash) {\n return 0;\n }\n getVerticalSashLeft(sash) {\n return this._sashPosition;\n }\n getVerticalSashHeight(sash) {\n return this._dataSource.getHeight();\n }\n _getViewZones(lineChanges, originalForeignVZ, modifiedForeignVZ) {\n const originalEditor = this._dataSource.getOriginalEditor();\n const modifiedEditor = this._dataSource.getModifiedEditor();\n const c = new SideBySideViewZonesComputer(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor);\n return c.getViewZones();\n }\n _getOriginalEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators) {\n const originalEditor = this._dataSource.getOriginalEditor();\n const overviewZoneColor = String(this._removeColor);\n const result = {\n decorations: [],\n overviewZones: []\n };\n const originalModel = originalEditor.getModel();\n const originalViewModel = originalEditor._getViewModel();\n for (const lineChange of lineChanges) {\n if (isChangeOrDelete(lineChange)) {\n result.decorations.push({\n range: new Range(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n options: (renderIndicators ? DECORATIONS.lineDeleteWithSign : DECORATIONS.lineDelete)\n });\n if (!isChangeOrInsert(lineChange) || !lineChange.charChanges) {\n result.decorations.push(createDecoration(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charDeleteWholeLine));\n }\n const viewRange = getViewRange(originalModel, originalViewModel, lineChange.originalStartLineNumber, lineChange.originalEndLineNumber);\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, /*use endLineNumber*/ 0, overviewZoneColor));\n if (lineChange.charChanges) {\n for (const charChange of lineChange.charChanges) {\n if (isCharChangeOrDelete(charChange)) {\n if (ignoreTrimWhitespace) {\n for (let lineNumber = charChange.originalStartLineNumber; lineNumber <= charChange.originalEndLineNumber; lineNumber++) {\n let startColumn;\n let endColumn;\n if (lineNumber === charChange.originalStartLineNumber) {\n startColumn = charChange.originalStartColumn;\n }\n else {\n startColumn = originalModel.getLineFirstNonWhitespaceColumn(lineNumber);\n }\n if (lineNumber === charChange.originalEndLineNumber) {\n endColumn = charChange.originalEndColumn;\n }\n else {\n endColumn = originalModel.getLineLastNonWhitespaceColumn(lineNumber);\n }\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charDelete));\n }\n }\n else {\n result.decorations.push(createDecoration(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn, DECORATIONS.charDelete));\n }\n }\n }\n }\n }\n }\n return result;\n }\n _getModifiedEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators, renderMarginRevertIcon) {\n const modifiedEditor = this._dataSource.getModifiedEditor();\n const overviewZoneColor = String(this._insertColor);\n const result = {\n decorations: [],\n overviewZones: []\n };\n const modifiedModel = modifiedEditor.getModel();\n const modifiedViewModel = modifiedEditor._getViewModel();\n for (const lineChange of lineChanges) {\n // Arrows for reverting changes.\n if (renderMarginRevertIcon) {\n if (lineChange.modifiedEndLineNumber > 0) {\n result.decorations.push({\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedStartLineNumber, 1),\n options: DECORATIONS.arrowRevertChange\n });\n }\n else {\n const viewZone = zones.modified.find(z => z.afterLineNumber === lineChange.modifiedStartLineNumber);\n if (viewZone) {\n viewZone.marginDomNode = createViewZoneMarginArrow();\n }\n }\n }\n if (isChangeOrInsert(lineChange)) {\n result.decorations.push({\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n options: (renderIndicators ? DECORATIONS.lineInsertWithSign : DECORATIONS.lineInsert)\n });\n if (!isChangeOrDelete(lineChange) || !lineChange.charChanges) {\n result.decorations.push(createDecoration(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charInsertWholeLine));\n }\n const viewRange = getViewRange(modifiedModel, modifiedViewModel, lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber);\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, /*use endLineNumber*/ 0, overviewZoneColor));\n if (lineChange.charChanges) {\n for (const charChange of lineChange.charChanges) {\n if (isCharChangeOrInsert(charChange)) {\n if (ignoreTrimWhitespace) {\n for (let lineNumber = charChange.modifiedStartLineNumber; lineNumber <= charChange.modifiedEndLineNumber; lineNumber++) {\n let startColumn;\n let endColumn;\n if (lineNumber === charChange.modifiedStartLineNumber) {\n startColumn = charChange.modifiedStartColumn;\n }\n else {\n startColumn = modifiedModel.getLineFirstNonWhitespaceColumn(lineNumber);\n }\n if (lineNumber === charChange.modifiedEndLineNumber) {\n endColumn = charChange.modifiedEndColumn;\n }\n else {\n endColumn = modifiedModel.getLineLastNonWhitespaceColumn(lineNumber);\n }\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charInsert));\n }\n }\n else {\n result.decorations.push(createDecoration(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn, DECORATIONS.charInsert));\n }\n }\n }\n }\n }\n }\n return result;\n }\n}\nDiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH = 100;\nclass SideBySideViewZonesComputer extends ViewZonesComputer {\n constructor(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor) {\n super(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor);\n }\n _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {\n return null;\n }\n _produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\n if (lineChangeModifiedLength > lineChangeOriginalLength) {\n return {\n afterLineNumber: Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber),\n heightInLines: (lineChangeModifiedLength - lineChangeOriginalLength),\n domNode: null\n };\n }\n return null;\n }\n _produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\n if (lineChangeOriginalLength > lineChangeModifiedLength) {\n return {\n afterLineNumber: Math.max(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber),\n heightInLines: (lineChangeOriginalLength - lineChangeModifiedLength),\n domNode: null\n };\n }\n return null;\n }\n}\nclass DiffEditorWidgetInline extends DiffEditorWidgetStyle {\n constructor(dataSource, enableSplitViewResizing) {\n super(dataSource);\n this._decorationsLeft = dataSource.getOriginalEditor().getLayoutInfo().decorationsLeft;\n this._register(dataSource.getOriginalEditor().onDidLayoutChange((layoutInfo) => {\n if (this._decorationsLeft !== layoutInfo.decorationsLeft) {\n this._decorationsLeft = layoutInfo.decorationsLeft;\n dataSource.relayoutEditors();\n }\n }));\n }\n setEnableSplitViewResizing(enableSplitViewResizing) {\n // Nothing to do..\n }\n _getViewZones(lineChanges, originalForeignVZ, modifiedForeignVZ, renderIndicators) {\n const originalEditor = this._dataSource.getOriginalEditor();\n const modifiedEditor = this._dataSource.getModifiedEditor();\n const computer = new InlineViewZonesComputer(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators);\n return computer.getViewZones();\n }\n _getOriginalEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators) {\n const overviewZoneColor = String(this._removeColor);\n const result = {\n decorations: [],\n overviewZones: []\n };\n const originalEditor = this._dataSource.getOriginalEditor();\n const originalModel = originalEditor.getModel();\n const originalViewModel = originalEditor._getViewModel();\n let zoneIndex = 0;\n for (const lineChange of lineChanges) {\n // Add overview zones in the overview ruler\n if (isChangeOrDelete(lineChange)) {\n result.decorations.push({\n range: new Range(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n options: DECORATIONS.lineDeleteMargin\n });\n while (zoneIndex < zones.modified.length) {\n const zone = zones.modified[zoneIndex];\n if (zone.diff && zone.diff.originalStartLineNumber >= lineChange.originalStartLineNumber) {\n break;\n }\n zoneIndex++;\n }\n let zoneHeightInLines = 0;\n if (zoneIndex < zones.modified.length) {\n const zone = zones.modified[zoneIndex];\n if (zone.diff\n && zone.diff.originalStartLineNumber === lineChange.originalStartLineNumber\n && zone.diff.originalEndLineNumber === lineChange.originalEndLineNumber\n && zone.diff.modifiedStartLineNumber === lineChange.modifiedStartLineNumber\n && zone.diff.modifiedEndLineNumber === lineChange.modifiedEndLineNumber) {\n zoneHeightInLines = zone.heightInLines;\n }\n }\n const viewRange = getViewRange(originalModel, originalViewModel, lineChange.originalStartLineNumber, lineChange.originalEndLineNumber);\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, zoneHeightInLines, overviewZoneColor));\n }\n }\n return result;\n }\n _getModifiedEditorDecorations(zones, lineChanges, ignoreTrimWhitespace, renderIndicators, renderMarginRevertIcon) {\n const modifiedEditor = this._dataSource.getModifiedEditor();\n const overviewZoneColor = String(this._insertColor);\n const result = {\n decorations: [],\n overviewZones: []\n };\n const modifiedModel = modifiedEditor.getModel();\n const modifiedViewModel = modifiedEditor._getViewModel();\n for (const lineChange of lineChanges) {\n // Add decorations & overview zones\n if (isChangeOrInsert(lineChange)) {\n result.decorations.push({\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n options: (renderIndicators ? DECORATIONS.lineInsertWithSign : DECORATIONS.lineInsert)\n });\n const viewRange = getViewRange(modifiedModel, modifiedViewModel, lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber);\n result.overviewZones.push(new OverviewRulerZone(viewRange.startLineNumber, viewRange.endLineNumber, /*use endLineNumber*/ 0, overviewZoneColor));\n if (lineChange.charChanges) {\n for (const charChange of lineChange.charChanges) {\n if (isCharChangeOrInsert(charChange)) {\n if (ignoreTrimWhitespace) {\n for (let lineNumber = charChange.modifiedStartLineNumber; lineNumber <= charChange.modifiedEndLineNumber; lineNumber++) {\n let startColumn;\n let endColumn;\n if (lineNumber === charChange.modifiedStartLineNumber) {\n startColumn = charChange.modifiedStartColumn;\n }\n else {\n startColumn = modifiedModel.getLineFirstNonWhitespaceColumn(lineNumber);\n }\n if (lineNumber === charChange.modifiedEndLineNumber) {\n endColumn = charChange.modifiedEndColumn;\n }\n else {\n endColumn = modifiedModel.getLineLastNonWhitespaceColumn(lineNumber);\n }\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charInsert));\n }\n }\n else {\n result.decorations.push(createDecoration(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn, DECORATIONS.charInsert));\n }\n }\n }\n }\n else {\n result.decorations.push(createDecoration(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charInsertWholeLine));\n }\n }\n }\n return result;\n }\n layout() {\n // An editor should not be smaller than 5px\n return Math.max(5, this._decorationsLeft);\n }\n}\nclass InlineViewZonesComputer extends ViewZonesComputer {\n constructor(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators) {\n super(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor);\n this._originalModel = originalEditor.getModel();\n this._renderIndicators = renderIndicators;\n this._pendingLineChange = [];\n this._pendingViewZones = [];\n this._lineBreaksComputer = this._modifiedEditor._getViewModel().createLineBreaksComputer();\n }\n getViewZones() {\n const result = super.getViewZones();\n this._finalize(result);\n return result;\n }\n _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {\n const result = document.createElement('div');\n result.className = 'inline-added-margin-view-zone';\n return result;\n }\n _produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\n const marginDomNode = document.createElement('div');\n marginDomNode.className = 'inline-added-margin-view-zone';\n return {\n afterLineNumber: Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber),\n heightInLines: lineChangeModifiedLength,\n domNode: document.createElement('div'),\n marginDomNode: marginDomNode\n };\n }\n _produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\n const domNode = document.createElement('div');\n domNode.className = `view-lines line-delete ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`;\n const marginDomNode = document.createElement('div');\n marginDomNode.className = 'inline-deleted-margin-view-zone';\n const viewZone = {\n shouldNotShrink: true,\n afterLineNumber: (lineChange.modifiedEndLineNumber === 0 ? lineChange.modifiedStartLineNumber : lineChange.modifiedStartLineNumber - 1),\n heightInLines: lineChangeOriginalLength,\n minWidthInPx: 0,\n domNode: domNode,\n marginDomNode: marginDomNode,\n diff: {\n originalStartLineNumber: lineChange.originalStartLineNumber,\n originalEndLineNumber: lineChange.originalEndLineNumber,\n modifiedStartLineNumber: lineChange.modifiedStartLineNumber,\n modifiedEndLineNumber: lineChange.modifiedEndLineNumber,\n originalModel: this._originalModel,\n viewLineCounts: null,\n }\n };\n for (let lineNumber = lineChange.originalStartLineNumber; lineNumber <= lineChange.originalEndLineNumber; lineNumber++) {\n this._lineBreaksComputer.addRequest(this._originalModel.getLineContent(lineNumber), null, null);\n }\n this._pendingLineChange.push(lineChange);\n this._pendingViewZones.push(viewZone);\n return viewZone;\n }\n _finalize(result) {\n const modifiedEditorOptions = this._modifiedEditor.getOptions();\n const tabSize = this._modifiedEditor.getModel().getOptions().tabSize;\n const fontInfo = modifiedEditorOptions.get(46 /* EditorOption.fontInfo */);\n const disableMonospaceOptimizations = modifiedEditorOptions.get(29 /* EditorOption.disableMonospaceOptimizations */);\n const typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\n const scrollBeyondLastColumn = modifiedEditorOptions.get(95 /* EditorOption.scrollBeyondLastColumn */);\n const mightContainNonBasicASCII = this._originalModel.mightContainNonBasicASCII();\n const mightContainRTL = this._originalModel.mightContainRTL();\n const lineHeight = modifiedEditorOptions.get(61 /* EditorOption.lineHeight */);\n const layoutInfo = modifiedEditorOptions.get(133 /* EditorOption.layoutInfo */);\n const lineDecorationsWidth = layoutInfo.decorationsWidth;\n const stopRenderingLineAfter = modifiedEditorOptions.get(107 /* EditorOption.stopRenderingLineAfter */);\n const renderWhitespace = modifiedEditorOptions.get(90 /* EditorOption.renderWhitespace */);\n const renderControlCharacters = modifiedEditorOptions.get(85 /* EditorOption.renderControlCharacters */);\n const fontLigatures = modifiedEditorOptions.get(47 /* EditorOption.fontLigatures */);\n const lineBreaks = this._lineBreaksComputer.finalize();\n let lineBreakIndex = 0;\n for (let i = 0; i < this._pendingLineChange.length; i++) {\n const lineChange = this._pendingLineChange[i];\n const viewZone = this._pendingViewZones[i];\n const domNode = viewZone.domNode;\n applyFontInfo(domNode, fontInfo);\n const marginDomNode = viewZone.marginDomNode;\n applyFontInfo(marginDomNode, fontInfo);\n const decorations = [];\n if (lineChange.charChanges) {\n for (const charChange of lineChange.charChanges) {\n if (isCharChangeOrDelete(charChange)) {\n decorations.push(new InlineDecoration(new Range(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn), 'char-delete', 0 /* InlineDecorationType.Regular */));\n }\n }\n }\n const hasCharChanges = (decorations.length > 0);\n const sb = createStringBuilder(10000);\n let maxCharsPerLine = 0;\n let renderedLineCount = 0;\n let viewLineCounts = null;\n for (let lineNumber = lineChange.originalStartLineNumber; lineNumber <= lineChange.originalEndLineNumber; lineNumber++) {\n const lineIndex = lineNumber - lineChange.originalStartLineNumber;\n const lineTokens = this._originalModel.tokenization.getLineTokens(lineNumber);\n const lineContent = lineTokens.getLineContent();\n const lineBreakData = lineBreaks[lineBreakIndex++];\n const actualDecorations = LineDecoration.filter(decorations, lineNumber, 1, lineContent.length + 1);\n if (lineBreakData) {\n let lastBreakOffset = 0;\n for (const breakOffset of lineBreakData.breakOffsets) {\n const viewLineTokens = lineTokens.sliceAndInflate(lastBreakOffset, breakOffset, 0);\n const viewLineContent = lineContent.substring(lastBreakOffset, breakOffset);\n maxCharsPerLine = Math.max(maxCharsPerLine, this._renderOriginalLine(renderedLineCount++, viewLineContent, viewLineTokens, LineDecoration.extractWrapped(actualDecorations, lastBreakOffset, breakOffset), hasCharChanges, mightContainNonBasicASCII, mightContainRTL, fontInfo, disableMonospaceOptimizations, lineHeight, lineDecorationsWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures, tabSize, sb, marginDomNode));\n lastBreakOffset = breakOffset;\n }\n if (!viewLineCounts) {\n viewLineCounts = [];\n }\n // make sure all lines before this one have an entry in `viewLineCounts`\n while (viewLineCounts.length < lineIndex) {\n viewLineCounts[viewLineCounts.length] = 1;\n }\n viewLineCounts[lineIndex] = lineBreakData.breakOffsets.length;\n viewZone.heightInLines += (lineBreakData.breakOffsets.length - 1);\n const marginDomNode2 = document.createElement('div');\n marginDomNode2.className = 'gutter-delete';\n result.original.push({\n afterLineNumber: lineNumber,\n afterColumn: 0,\n heightInLines: lineBreakData.breakOffsets.length - 1,\n domNode: createFakeLinesDiv(),\n marginDomNode: marginDomNode2\n });\n }\n else {\n maxCharsPerLine = Math.max(maxCharsPerLine, this._renderOriginalLine(renderedLineCount++, lineContent, lineTokens, actualDecorations, hasCharChanges, mightContainNonBasicASCII, mightContainRTL, fontInfo, disableMonospaceOptimizations, lineHeight, lineDecorationsWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures, tabSize, sb, marginDomNode));\n }\n }\n maxCharsPerLine += scrollBeyondLastColumn;\n const html = sb.build();\n const trustedhtml = ttPolicy ? ttPolicy.createHTML(html) : html;\n domNode.innerHTML = trustedhtml;\n viewZone.minWidthInPx = (maxCharsPerLine * typicalHalfwidthCharacterWidth);\n if (viewLineCounts) {\n // make sure all lines have an entry in `viewLineCounts`\n const cnt = lineChange.originalEndLineNumber - lineChange.originalStartLineNumber;\n while (viewLineCounts.length <= cnt) {\n viewLineCounts[viewLineCounts.length] = 1;\n }\n }\n viewZone.diff.viewLineCounts = viewLineCounts;\n }\n result.original.sort((a, b) => {\n return a.afterLineNumber - b.afterLineNumber;\n });\n }\n _renderOriginalLine(renderedLineCount, lineContent, lineTokens, decorations, hasCharChanges, mightContainNonBasicASCII, mightContainRTL, fontInfo, disableMonospaceOptimizations, lineHeight, lineDecorationsWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures, tabSize, sb, marginDomNode) {\n sb.appendASCIIString('
    ');\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, mightContainNonBasicASCII);\n const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, mightContainRTL);\n const output = renderViewLine(new RenderLineInput((fontInfo.isMonospace && !disableMonospaceOptimizations), fontInfo.canUseHalfwidthRightwardsArrow, lineContent, false, isBasicASCII, containsRTL, 0, lineTokens, decorations, tabSize, 0, fontInfo.spaceWidth, fontInfo.middotWidth, fontInfo.wsmiddotWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures !== EditorFontLigatures.OFF, null // Send no selections, original line cannot be selected\n ), sb);\n sb.appendASCIIString('
    ');\n if (this._renderIndicators) {\n const marginElement = document.createElement('div');\n marginElement.className = `delete-sign ${ThemeIcon.asClassName(diffRemoveIcon)}`;\n marginElement.setAttribute('style', `position:absolute;top:${renderedLineCount * lineHeight}px;width:${lineDecorationsWidth}px;height:${lineHeight}px;right:0;`);\n marginDomNode.appendChild(marginElement);\n }\n return output.characterMapping.getHorizontalOffset(output.characterMapping.length);\n }\n}\nfunction validateDiffWordWrap(value, defaultValue) {\n return validateStringSetOption(value, defaultValue, ['off', 'on', 'inherit']);\n}\nfunction isChangeOrInsert(lineChange) {\n return lineChange.modifiedEndLineNumber > 0;\n}\nfunction isChangeOrDelete(lineChange) {\n return lineChange.originalEndLineNumber > 0;\n}\nfunction isCharChangeOrInsert(charChange) {\n if (charChange.modifiedStartLineNumber === charChange.modifiedEndLineNumber) {\n return charChange.modifiedEndColumn - charChange.modifiedStartColumn > 0;\n }\n return charChange.modifiedEndLineNumber - charChange.modifiedStartLineNumber > 0;\n}\nfunction isCharChangeOrDelete(charChange) {\n if (charChange.originalStartLineNumber === charChange.originalEndLineNumber) {\n return charChange.originalEndColumn - charChange.originalStartColumn > 0;\n }\n return charChange.originalEndLineNumber - charChange.originalStartLineNumber > 0;\n}\nfunction createFakeLinesDiv() {\n const r = document.createElement('div');\n r.className = 'diagonal-fill';\n return r;\n}\nfunction createViewZoneMarginArrow() {\n const arrow = document.createElement('div');\n arrow.className = 'arrow-revert-change ' + ThemeIcon.asClassName(Codicon.arrowRight);\n return dom.$('div', {}, arrow);\n}\nfunction getViewRange(model, viewModel, startLineNumber, endLineNumber) {\n const lineCount = model.getLineCount();\n startLineNumber = Math.min(lineCount, Math.max(1, startLineNumber));\n endLineNumber = Math.min(lineCount, Math.max(1, endLineNumber));\n return viewModel.coordinatesConverter.convertModelRangeToViewRange(new Range(startLineNumber, model.getLineMinColumn(startLineNumber), endLineNumber, model.getLineMaxColumn(endLineNumber)));\n}\nfunction validateDiffEditorOptions(options, defaults) {\n return {\n enableSplitViewResizing: validateBooleanOption(options.enableSplitViewResizing, defaults.enableSplitViewResizing),\n renderSideBySide: validateBooleanOption(options.renderSideBySide, defaults.renderSideBySide),\n renderMarginRevertIcon: validateBooleanOption(options.renderMarginRevertIcon, defaults.renderMarginRevertIcon),\n maxComputationTime: clampedInt(options.maxComputationTime, defaults.maxComputationTime, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n maxFileSize: clampedInt(options.maxFileSize, defaults.maxFileSize, 0, 1073741824 /* Constants.MAX_SAFE_SMALL_INTEGER */),\n ignoreTrimWhitespace: validateBooleanOption(options.ignoreTrimWhitespace, defaults.ignoreTrimWhitespace),\n renderIndicators: validateBooleanOption(options.renderIndicators, defaults.renderIndicators),\n originalEditable: validateBooleanOption(options.originalEditable, defaults.originalEditable),\n diffCodeLens: validateBooleanOption(options.diffCodeLens, defaults.diffCodeLens),\n renderOverviewRuler: validateBooleanOption(options.renderOverviewRuler, defaults.renderOverviewRuler),\n diffWordWrap: validateDiffWordWrap(options.diffWordWrap, defaults.diffWordWrap),\n };\n}\nfunction changedDiffEditorOptions(a, b) {\n return {\n enableSplitViewResizing: (a.enableSplitViewResizing !== b.enableSplitViewResizing),\n renderSideBySide: (a.renderSideBySide !== b.renderSideBySide),\n renderMarginRevertIcon: (a.renderMarginRevertIcon !== b.renderMarginRevertIcon),\n maxComputationTime: (a.maxComputationTime !== b.maxComputationTime),\n maxFileSize: (a.maxFileSize !== b.maxFileSize),\n ignoreTrimWhitespace: (a.ignoreTrimWhitespace !== b.ignoreTrimWhitespace),\n renderIndicators: (a.renderIndicators !== b.renderIndicators),\n originalEditable: (a.originalEditable !== b.originalEditable),\n diffCodeLens: (a.diffCodeLens !== b.diffCodeLens),\n renderOverviewRuler: (a.renderOverviewRuler !== b.renderOverviewRuler),\n diffWordWrap: (a.diffWordWrap !== b.diffWordWrap),\n };\n}\nregisterThemingParticipant((theme, collector) => {\n const added = theme.getColor(diffInserted);\n if (added) {\n collector.addRule(`.monaco-editor .char-insert, .monaco-diff-editor .char-insert { background-color: ${added}; }`);\n }\n const lineAdded = theme.getColor(diffInsertedLine) || added;\n if (lineAdded) {\n collector.addRule(`.monaco-editor .line-insert, .monaco-diff-editor .line-insert { background-color: ${lineAdded}; }`);\n }\n const gutterAdded = theme.getColor(diffInsertedLineGutter) || lineAdded;\n if (gutterAdded) {\n collector.addRule(`.monaco-editor .inline-added-margin-view-zone { background-color: ${gutterAdded}; }`);\n collector.addRule(`.monaco-editor .gutter-insert, .monaco-diff-editor .gutter-insert { background-color: ${gutterAdded}; }`);\n }\n const removed = theme.getColor(diffRemoved);\n if (removed) {\n collector.addRule(`.monaco-editor .char-delete, .monaco-diff-editor .char-delete { background-color: ${removed}; }`);\n }\n const lineRemoved = theme.getColor(diffRemovedLine) || removed;\n if (lineRemoved) {\n collector.addRule(`.monaco-editor .line-delete, .monaco-diff-editor .line-delete { background-color: ${lineRemoved}; }`);\n }\n const gutterRemoved = theme.getColor(diffRemovedLineGutter) || lineRemoved;\n if (gutterRemoved) {\n collector.addRule(`.monaco-editor .inline-deleted-margin-view-zone { background-color: ${gutterRemoved}; }`);\n collector.addRule(`.monaco-editor .gutter-delete, .monaco-diff-editor .gutter-delete { background-color: ${gutterRemoved}; }`);\n }\n const addedOutline = theme.getColor(diffInsertedOutline);\n if (addedOutline) {\n collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${addedOutline}; }`);\n }\n const removedOutline = theme.getColor(diffRemovedOutline);\n if (removedOutline) {\n collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px ${isHighContrast(theme.type) ? 'dashed' : 'solid'} ${removedOutline}; }`);\n }\n const shadow = theme.getColor(scrollbarShadow);\n if (shadow) {\n collector.addRule(`.monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px ${shadow}; }`);\n }\n const border = theme.getColor(diffBorder);\n if (border) {\n collector.addRule(`.monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid ${border}; }`);\n }\n const scrollbarSliderBackgroundColor = theme.getColor(scrollbarSliderBackground);\n if (scrollbarSliderBackgroundColor) {\n collector.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport {\n\t\t\t\tbackground: ${scrollbarSliderBackgroundColor};\n\t\t\t}\n\t\t`);\n }\n const scrollbarSliderHoverBackgroundColor = theme.getColor(scrollbarSliderHoverBackground);\n if (scrollbarSliderHoverBackgroundColor) {\n collector.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:hover {\n\t\t\t\tbackground: ${scrollbarSliderHoverBackgroundColor};\n\t\t\t}\n\t\t`);\n }\n const scrollbarSliderActiveBackgroundColor = theme.getColor(scrollbarSliderActiveBackground);\n if (scrollbarSliderActiveBackgroundColor) {\n collector.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:active {\n\t\t\t\tbackground: ${scrollbarSliderActiveBackgroundColor};\n\t\t\t}\n\t\t`);\n }\n const diffDiagonalFillColor = theme.getColor(diffDiagonalFill);\n collector.addRule(`\n\t.monaco-editor .diagonal-fill {\n\t\tbackground-image: linear-gradient(\n\t\t\t-45deg,\n\t\t\t${diffDiagonalFillColor} 12.5%,\n\t\t\t#0000 12.5%, #0000 50%,\n\t\t\t${diffDiagonalFillColor} 50%, ${diffDiagonalFillColor} 62.5%,\n\t\t\t#0000 62.5%, #0000 100%\n\t\t);\n\t\tbackground-size: 8px 8px;\n\t}\n\t`);\n});\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\nlet AbstractCodeEditorService = class AbstractCodeEditorService extends Disposable {\n constructor(_themeService) {\n super();\n this._themeService = _themeService;\n this._onCodeEditorAdd = this._register(new Emitter());\n this.onCodeEditorAdd = this._onCodeEditorAdd.event;\n this._onCodeEditorRemove = this._register(new Emitter());\n this.onCodeEditorRemove = this._onCodeEditorRemove.event;\n this._onDiffEditorAdd = this._register(new Emitter());\n this.onDiffEditorAdd = this._onDiffEditorAdd.event;\n this._onDiffEditorRemove = this._register(new Emitter());\n this.onDiffEditorRemove = this._onDiffEditorRemove.event;\n this._decorationOptionProviders = new Map();\n this._codeEditorOpenHandlers = new LinkedList();\n this._modelProperties = new Map();\n this._codeEditors = Object.create(null);\n this._diffEditors = Object.create(null);\n this._globalStyleSheet = null;\n }\n addCodeEditor(editor) {\n this._codeEditors[editor.getId()] = editor;\n this._onCodeEditorAdd.fire(editor);\n }\n removeCodeEditor(editor) {\n if (delete this._codeEditors[editor.getId()]) {\n this._onCodeEditorRemove.fire(editor);\n }\n }\n listCodeEditors() {\n return Object.keys(this._codeEditors).map(id => this._codeEditors[id]);\n }\n addDiffEditor(editor) {\n this._diffEditors[editor.getId()] = editor;\n this._onDiffEditorAdd.fire(editor);\n }\n removeDiffEditor(editor) {\n if (delete this._diffEditors[editor.getId()]) {\n this._onDiffEditorRemove.fire(editor);\n }\n }\n listDiffEditors() {\n return Object.keys(this._diffEditors).map(id => this._diffEditors[id]);\n }\n getFocusedCodeEditor() {\n let editorWithWidgetFocus = null;\n const editors = this.listCodeEditors();\n for (const editor of editors) {\n if (editor.hasTextFocus()) {\n // bingo!\n return editor;\n }\n if (editor.hasWidgetFocus()) {\n editorWithWidgetFocus = editor;\n }\n }\n return editorWithWidgetFocus;\n }\n removeDecorationType(key) {\n const provider = this._decorationOptionProviders.get(key);\n if (provider) {\n provider.refCount--;\n if (provider.refCount <= 0) {\n this._decorationOptionProviders.delete(key);\n provider.dispose();\n this.listCodeEditors().forEach((ed) => ed.removeDecorationsByType(key));\n }\n }\n }\n setModelProperty(resource, key, value) {\n const key1 = resource.toString();\n let dest;\n if (this._modelProperties.has(key1)) {\n dest = this._modelProperties.get(key1);\n }\n else {\n dest = new Map();\n this._modelProperties.set(key1, dest);\n }\n dest.set(key, value);\n }\n getModelProperty(resource, key) {\n const key1 = resource.toString();\n if (this._modelProperties.has(key1)) {\n const innerMap = this._modelProperties.get(key1);\n return innerMap.get(key);\n }\n return undefined;\n }\n openCodeEditor(input, source, sideBySide) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const handler of this._codeEditorOpenHandlers) {\n const candidate = yield handler(input, source, sideBySide);\n if (candidate !== null) {\n return candidate;\n }\n }\n return null;\n });\n }\n registerCodeEditorOpenHandler(handler) {\n const rm = this._codeEditorOpenHandlers.unshift(handler);\n return toDisposable(rm);\n }\n};\nAbstractCodeEditorService = __decorate([\n __param(0, IThemeService)\n], AbstractCodeEditorService);\nexport { AbstractCodeEditorService };\nexport class GlobalStyleSheet {\n constructor(styleSheet) {\n this._styleSheet = styleSheet;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { windowOpenNoOpener } from '../../../base/browser/dom.js';\nimport { Schemas } from '../../../base/common/network.js';\nimport { AbstractCodeEditorService } from '../../browser/services/abstractCodeEditorService.js';\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\nlet StandaloneCodeEditorService = class StandaloneCodeEditorService extends AbstractCodeEditorService {\n constructor(contextKeyService, themeService) {\n super(themeService);\n this.onCodeEditorAdd(() => this._checkContextKey());\n this.onCodeEditorRemove(() => this._checkContextKey());\n this._editorIsOpen = contextKeyService.createKey('editorIsOpen', false);\n this._activeCodeEditor = null;\n this.registerCodeEditorOpenHandler((input, source, sideBySide) => __awaiter(this, void 0, void 0, function* () {\n if (!source) {\n return null;\n }\n return this.doOpenEditor(source, input);\n }));\n }\n _checkContextKey() {\n let hasCodeEditor = false;\n for (const editor of this.listCodeEditors()) {\n if (!editor.isSimpleWidget) {\n hasCodeEditor = true;\n break;\n }\n }\n this._editorIsOpen.set(hasCodeEditor);\n }\n setActiveCodeEditor(activeCodeEditor) {\n this._activeCodeEditor = activeCodeEditor;\n }\n getActiveCodeEditor() {\n return this._activeCodeEditor;\n }\n doOpenEditor(editor, input) {\n const model = this.findModel(editor, input.resource);\n if (!model) {\n if (input.resource) {\n const schema = input.resource.scheme;\n if (schema === Schemas.http || schema === Schemas.https) {\n // This is a fully qualified http or https URL\n windowOpenNoOpener(input.resource.toString());\n return editor;\n }\n }\n return null;\n }\n const selection = (input.options ? input.options.selection : null);\n if (selection) {\n if (typeof selection.endLineNumber === 'number' && typeof selection.endColumn === 'number') {\n editor.setSelection(selection);\n editor.revealRangeInCenter(selection, 1 /* ScrollType.Immediate */);\n }\n else {\n const pos = {\n lineNumber: selection.startLineNumber,\n column: selection.startColumn\n };\n editor.setPosition(pos);\n editor.revealPositionInCenter(pos, 1 /* ScrollType.Immediate */);\n }\n }\n return editor;\n }\n findModel(editor, resource) {\n const model = editor.getModel();\n if (model && model.uri.toString() !== resource.toString()) {\n return null;\n }\n return model;\n }\n};\nStandaloneCodeEditorService = __decorate([\n __param(0, IContextKeyService),\n __param(1, IThemeService)\n], StandaloneCodeEditorService);\nexport { StandaloneCodeEditorService };\nregisterSingleton(ICodeEditorService, StandaloneCodeEditorService);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const ILayoutService = createDecorator('layoutService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as dom from '../../../base/browser/dom.js';\nimport { Event } from '../../../base/common/event.js';\nimport { ILayoutService } from '../../../platform/layout/browser/layoutService.js';\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\nlet StandaloneLayoutService = class StandaloneLayoutService {\n constructor(_codeEditorService) {\n this._codeEditorService = _codeEditorService;\n this.onDidLayout = Event.None;\n this.offset = { top: 0, quickPickTop: 0 };\n }\n get dimension() {\n if (!this._dimension) {\n this._dimension = dom.getClientArea(window.document.body);\n }\n return this._dimension;\n }\n get hasContainer() {\n return false;\n }\n get container() {\n // On a page, multiple editors can be created. Therefore, there are multiple containers, not\n // just a single one. Please use `ICodeEditorService` to get the current focused code editor\n // and use its container if necessary. You can also instantiate `EditorScopedLayoutService`\n // which implements `ILayoutService` but is not a part of the service collection because\n // it is code editor instance specific.\n throw new Error(`ILayoutService.container is not available in the standalone editor!`);\n }\n focus() {\n var _a;\n (_a = this._codeEditorService.getFocusedCodeEditor()) === null || _a === void 0 ? void 0 : _a.focus();\n }\n};\nStandaloneLayoutService = __decorate([\n __param(0, ICodeEditorService)\n], StandaloneLayoutService);\nlet EditorScopedLayoutService = class EditorScopedLayoutService extends StandaloneLayoutService {\n constructor(_container, codeEditorService) {\n super(codeEditorService);\n this._container = _container;\n }\n get hasContainer() {\n return false;\n }\n get container() {\n return this._container;\n }\n};\nEditorScopedLayoutService = __decorate([\n __param(1, ICodeEditorService)\n], EditorScopedLayoutService);\nexport { EditorScopedLayoutService };\nregisterSingleton(ILayoutService, StandaloneLayoutService);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { onUnexpectedError } from '../../../base/common/errors.js';\nimport { Disposable, isDisposable } from '../../../base/common/lifecycle.js';\nimport { Schemas } from '../../../base/common/network.js';\nimport Severity from '../../../base/common/severity.js';\nimport * as nls from '../../../nls.js';\nimport { IDialogService } from '../../dialogs/common/dialogs.js';\nimport { registerSingleton } from '../../instantiation/common/extensions.js';\nimport { INotificationService } from '../../notification/common/notification.js';\nimport { IUndoRedoService, ResourceEditStackSnapshot, UndoRedoGroup, UndoRedoSource } from './undoRedo.js';\nconst DEBUG = false;\nfunction getResourceLabel(resource) {\n return resource.scheme === Schemas.file ? resource.fsPath : resource.path;\n}\nlet stackElementCounter = 0;\nclass ResourceStackElement {\n constructor(actual, resourceLabel, strResource, groupId, groupOrder, sourceId, sourceOrder) {\n this.id = (++stackElementCounter);\n this.type = 0 /* UndoRedoElementType.Resource */;\n this.actual = actual;\n this.label = actual.label;\n this.confirmBeforeUndo = actual.confirmBeforeUndo || false;\n this.resourceLabel = resourceLabel;\n this.strResource = strResource;\n this.resourceLabels = [this.resourceLabel];\n this.strResources = [this.strResource];\n this.groupId = groupId;\n this.groupOrder = groupOrder;\n this.sourceId = sourceId;\n this.sourceOrder = sourceOrder;\n this.isValid = true;\n }\n setValid(isValid) {\n this.isValid = isValid;\n }\n toString() {\n return `[id:${this.id}] [group:${this.groupId}] [${this.isValid ? ' VALID' : 'INVALID'}] ${this.actual.constructor.name} - ${this.actual}`;\n }\n}\nclass ResourceReasonPair {\n constructor(resourceLabel, reason) {\n this.resourceLabel = resourceLabel;\n this.reason = reason;\n }\n}\nclass RemovedResources {\n constructor() {\n this.elements = new Map();\n }\n createMessage() {\n const externalRemoval = [];\n const noParallelUniverses = [];\n for (const [, element] of this.elements) {\n const dest = (element.reason === 0 /* RemovedResourceReason.ExternalRemoval */\n ? externalRemoval\n : noParallelUniverses);\n dest.push(element.resourceLabel);\n }\n const messages = [];\n if (externalRemoval.length > 0) {\n messages.push(nls.localize({ key: 'externalRemoval', comment: ['{0} is a list of filenames'] }, \"The following files have been closed and modified on disk: {0}.\", externalRemoval.join(', ')));\n }\n if (noParallelUniverses.length > 0) {\n messages.push(nls.localize({ key: 'noParallelUniverses', comment: ['{0} is a list of filenames'] }, \"The following files have been modified in an incompatible way: {0}.\", noParallelUniverses.join(', ')));\n }\n return messages.join('\\n');\n }\n get size() {\n return this.elements.size;\n }\n has(strResource) {\n return this.elements.has(strResource);\n }\n set(strResource, value) {\n this.elements.set(strResource, value);\n }\n delete(strResource) {\n return this.elements.delete(strResource);\n }\n}\nclass WorkspaceStackElement {\n constructor(actual, resourceLabels, strResources, groupId, groupOrder, sourceId, sourceOrder) {\n this.id = (++stackElementCounter);\n this.type = 1 /* UndoRedoElementType.Workspace */;\n this.actual = actual;\n this.label = actual.label;\n this.confirmBeforeUndo = actual.confirmBeforeUndo || false;\n this.resourceLabels = resourceLabels;\n this.strResources = strResources;\n this.groupId = groupId;\n this.groupOrder = groupOrder;\n this.sourceId = sourceId;\n this.sourceOrder = sourceOrder;\n this.removedResources = null;\n this.invalidatedResources = null;\n }\n canSplit() {\n return (typeof this.actual.split === 'function');\n }\n removeResource(resourceLabel, strResource, reason) {\n if (!this.removedResources) {\n this.removedResources = new RemovedResources();\n }\n if (!this.removedResources.has(strResource)) {\n this.removedResources.set(strResource, new ResourceReasonPair(resourceLabel, reason));\n }\n }\n setValid(resourceLabel, strResource, isValid) {\n if (isValid) {\n if (this.invalidatedResources) {\n this.invalidatedResources.delete(strResource);\n if (this.invalidatedResources.size === 0) {\n this.invalidatedResources = null;\n }\n }\n }\n else {\n if (!this.invalidatedResources) {\n this.invalidatedResources = new RemovedResources();\n }\n if (!this.invalidatedResources.has(strResource)) {\n this.invalidatedResources.set(strResource, new ResourceReasonPair(resourceLabel, 0 /* RemovedResourceReason.ExternalRemoval */));\n }\n }\n }\n toString() {\n return `[id:${this.id}] [group:${this.groupId}] [${this.invalidatedResources ? 'INVALID' : ' VALID'}] ${this.actual.constructor.name} - ${this.actual}`;\n }\n}\nclass ResourceEditStack {\n constructor(resourceLabel, strResource) {\n this.resourceLabel = resourceLabel;\n this.strResource = strResource;\n this._past = [];\n this._future = [];\n this.locked = false;\n this.versionId = 1;\n }\n dispose() {\n for (const element of this._past) {\n if (element.type === 1 /* UndoRedoElementType.Workspace */) {\n element.removeResource(this.resourceLabel, this.strResource, 0 /* RemovedResourceReason.ExternalRemoval */);\n }\n }\n for (const element of this._future) {\n if (element.type === 1 /* UndoRedoElementType.Workspace */) {\n element.removeResource(this.resourceLabel, this.strResource, 0 /* RemovedResourceReason.ExternalRemoval */);\n }\n }\n this.versionId++;\n }\n toString() {\n const result = [];\n result.push(`* ${this.strResource}:`);\n for (let i = 0; i < this._past.length; i++) {\n result.push(` * [UNDO] ${this._past[i]}`);\n }\n for (let i = this._future.length - 1; i >= 0; i--) {\n result.push(` * [REDO] ${this._future[i]}`);\n }\n return result.join('\\n');\n }\n flushAllElements() {\n this._past = [];\n this._future = [];\n this.versionId++;\n }\n _setElementValidFlag(element, isValid) {\n if (element.type === 1 /* UndoRedoElementType.Workspace */) {\n element.setValid(this.resourceLabel, this.strResource, isValid);\n }\n else {\n element.setValid(isValid);\n }\n }\n setElementsValidFlag(isValid, filter) {\n for (const element of this._past) {\n if (filter(element.actual)) {\n this._setElementValidFlag(element, isValid);\n }\n }\n for (const element of this._future) {\n if (filter(element.actual)) {\n this._setElementValidFlag(element, isValid);\n }\n }\n }\n pushElement(element) {\n // remove the future\n for (const futureElement of this._future) {\n if (futureElement.type === 1 /* UndoRedoElementType.Workspace */) {\n futureElement.removeResource(this.resourceLabel, this.strResource, 1 /* RemovedResourceReason.NoParallelUniverses */);\n }\n }\n this._future = [];\n this._past.push(element);\n this.versionId++;\n }\n createSnapshot(resource) {\n const elements = [];\n for (let i = 0, len = this._past.length; i < len; i++) {\n elements.push(this._past[i].id);\n }\n for (let i = this._future.length - 1; i >= 0; i--) {\n elements.push(this._future[i].id);\n }\n return new ResourceEditStackSnapshot(resource, elements);\n }\n restoreSnapshot(snapshot) {\n const snapshotLength = snapshot.elements.length;\n let isOK = true;\n let snapshotIndex = 0;\n let removePastAfter = -1;\n for (let i = 0, len = this._past.length; i < len; i++, snapshotIndex++) {\n const element = this._past[i];\n if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) {\n isOK = false;\n removePastAfter = 0;\n }\n if (!isOK && element.type === 1 /* UndoRedoElementType.Workspace */) {\n element.removeResource(this.resourceLabel, this.strResource, 0 /* RemovedResourceReason.ExternalRemoval */);\n }\n }\n let removeFutureBefore = -1;\n for (let i = this._future.length - 1; i >= 0; i--, snapshotIndex++) {\n const element = this._future[i];\n if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) {\n isOK = false;\n removeFutureBefore = i;\n }\n if (!isOK && element.type === 1 /* UndoRedoElementType.Workspace */) {\n element.removeResource(this.resourceLabel, this.strResource, 0 /* RemovedResourceReason.ExternalRemoval */);\n }\n }\n if (removePastAfter !== -1) {\n this._past = this._past.slice(0, removePastAfter);\n }\n if (removeFutureBefore !== -1) {\n this._future = this._future.slice(removeFutureBefore + 1);\n }\n this.versionId++;\n }\n getElements() {\n const past = [];\n const future = [];\n for (const element of this._past) {\n past.push(element.actual);\n }\n for (const element of this._future) {\n future.push(element.actual);\n }\n return { past, future };\n }\n getClosestPastElement() {\n if (this._past.length === 0) {\n return null;\n }\n return this._past[this._past.length - 1];\n }\n getSecondClosestPastElement() {\n if (this._past.length < 2) {\n return null;\n }\n return this._past[this._past.length - 2];\n }\n getClosestFutureElement() {\n if (this._future.length === 0) {\n return null;\n }\n return this._future[this._future.length - 1];\n }\n hasPastElements() {\n return (this._past.length > 0);\n }\n hasFutureElements() {\n return (this._future.length > 0);\n }\n splitPastWorkspaceElement(toRemove, individualMap) {\n for (let j = this._past.length - 1; j >= 0; j--) {\n if (this._past[j] === toRemove) {\n if (individualMap.has(this.strResource)) {\n // gets replaced\n this._past[j] = individualMap.get(this.strResource);\n }\n else {\n // gets deleted\n this._past.splice(j, 1);\n }\n break;\n }\n }\n this.versionId++;\n }\n splitFutureWorkspaceElement(toRemove, individualMap) {\n for (let j = this._future.length - 1; j >= 0; j--) {\n if (this._future[j] === toRemove) {\n if (individualMap.has(this.strResource)) {\n // gets replaced\n this._future[j] = individualMap.get(this.strResource);\n }\n else {\n // gets deleted\n this._future.splice(j, 1);\n }\n break;\n }\n }\n this.versionId++;\n }\n moveBackward(element) {\n this._past.pop();\n this._future.push(element);\n this.versionId++;\n }\n moveForward(element) {\n this._future.pop();\n this._past.push(element);\n this.versionId++;\n }\n}\nclass EditStackSnapshot {\n constructor(editStacks) {\n this.editStacks = editStacks;\n this._versionIds = [];\n for (let i = 0, len = this.editStacks.length; i < len; i++) {\n this._versionIds[i] = this.editStacks[i].versionId;\n }\n }\n isValid() {\n for (let i = 0, len = this.editStacks.length; i < len; i++) {\n if (this._versionIds[i] !== this.editStacks[i].versionId) {\n return false;\n }\n }\n return true;\n }\n}\nconst missingEditStack = new ResourceEditStack('', '');\nmissingEditStack.locked = true;\nlet UndoRedoService = class UndoRedoService {\n constructor(_dialogService, _notificationService) {\n this._dialogService = _dialogService;\n this._notificationService = _notificationService;\n this._editStacks = new Map();\n this._uriComparisonKeyComputers = [];\n }\n getUriComparisonKey(resource) {\n for (const uriComparisonKeyComputer of this._uriComparisonKeyComputers) {\n if (uriComparisonKeyComputer[0] === resource.scheme) {\n return uriComparisonKeyComputer[1].getComparisonKey(resource);\n }\n }\n return resource.toString();\n }\n _print(label) {\n console.log(`------------------------------------`);\n console.log(`AFTER ${label}: `);\n const str = [];\n for (const element of this._editStacks) {\n str.push(element[1].toString());\n }\n console.log(str.join('\\n'));\n }\n pushElement(element, group = UndoRedoGroup.None, source = UndoRedoSource.None) {\n if (element.type === 0 /* UndoRedoElementType.Resource */) {\n const resourceLabel = getResourceLabel(element.resource);\n const strResource = this.getUriComparisonKey(element.resource);\n this._pushElement(new ResourceStackElement(element, resourceLabel, strResource, group.id, group.nextOrder(), source.id, source.nextOrder()));\n }\n else {\n const seen = new Set();\n const resourceLabels = [];\n const strResources = [];\n for (const resource of element.resources) {\n const resourceLabel = getResourceLabel(resource);\n const strResource = this.getUriComparisonKey(resource);\n if (seen.has(strResource)) {\n continue;\n }\n seen.add(strResource);\n resourceLabels.push(resourceLabel);\n strResources.push(strResource);\n }\n if (resourceLabels.length === 1) {\n this._pushElement(new ResourceStackElement(element, resourceLabels[0], strResources[0], group.id, group.nextOrder(), source.id, source.nextOrder()));\n }\n else {\n this._pushElement(new WorkspaceStackElement(element, resourceLabels, strResources, group.id, group.nextOrder(), source.id, source.nextOrder()));\n }\n }\n if (DEBUG) {\n this._print('pushElement');\n }\n }\n _pushElement(element) {\n for (let i = 0, len = element.strResources.length; i < len; i++) {\n const resourceLabel = element.resourceLabels[i];\n const strResource = element.strResources[i];\n let editStack;\n if (this._editStacks.has(strResource)) {\n editStack = this._editStacks.get(strResource);\n }\n else {\n editStack = new ResourceEditStack(resourceLabel, strResource);\n this._editStacks.set(strResource, editStack);\n }\n editStack.pushElement(element);\n }\n }\n getLastElement(resource) {\n const strResource = this.getUriComparisonKey(resource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n if (editStack.hasFutureElements()) {\n return null;\n }\n const closestPastElement = editStack.getClosestPastElement();\n return closestPastElement ? closestPastElement.actual : null;\n }\n return null;\n }\n _splitPastWorkspaceElement(toRemove, ignoreResources) {\n const individualArr = toRemove.actual.split();\n const individualMap = new Map();\n for (const _element of individualArr) {\n const resourceLabel = getResourceLabel(_element.resource);\n const strResource = this.getUriComparisonKey(_element.resource);\n const element = new ResourceStackElement(_element, resourceLabel, strResource, 0, 0, 0, 0);\n individualMap.set(element.strResource, element);\n }\n for (const strResource of toRemove.strResources) {\n if (ignoreResources && ignoreResources.has(strResource)) {\n continue;\n }\n const editStack = this._editStacks.get(strResource);\n editStack.splitPastWorkspaceElement(toRemove, individualMap);\n }\n }\n _splitFutureWorkspaceElement(toRemove, ignoreResources) {\n const individualArr = toRemove.actual.split();\n const individualMap = new Map();\n for (const _element of individualArr) {\n const resourceLabel = getResourceLabel(_element.resource);\n const strResource = this.getUriComparisonKey(_element.resource);\n const element = new ResourceStackElement(_element, resourceLabel, strResource, 0, 0, 0, 0);\n individualMap.set(element.strResource, element);\n }\n for (const strResource of toRemove.strResources) {\n if (ignoreResources && ignoreResources.has(strResource)) {\n continue;\n }\n const editStack = this._editStacks.get(strResource);\n editStack.splitFutureWorkspaceElement(toRemove, individualMap);\n }\n }\n removeElements(resource) {\n const strResource = typeof resource === 'string' ? resource : this.getUriComparisonKey(resource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n editStack.dispose();\n this._editStacks.delete(strResource);\n }\n if (DEBUG) {\n this._print('removeElements');\n }\n }\n setElementsValidFlag(resource, isValid, filter) {\n const strResource = this.getUriComparisonKey(resource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n editStack.setElementsValidFlag(isValid, filter);\n }\n if (DEBUG) {\n this._print('setElementsValidFlag');\n }\n }\n createSnapshot(resource) {\n const strResource = this.getUriComparisonKey(resource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n return editStack.createSnapshot(resource);\n }\n return new ResourceEditStackSnapshot(resource, []);\n }\n restoreSnapshot(snapshot) {\n const strResource = this.getUriComparisonKey(snapshot.resource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n editStack.restoreSnapshot(snapshot);\n if (!editStack.hasPastElements() && !editStack.hasFutureElements()) {\n // the edit stack is now empty, just remove it entirely\n editStack.dispose();\n this._editStacks.delete(strResource);\n }\n }\n if (DEBUG) {\n this._print('restoreSnapshot');\n }\n }\n getElements(resource) {\n const strResource = this.getUriComparisonKey(resource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n return editStack.getElements();\n }\n return { past: [], future: [] };\n }\n _findClosestUndoElementWithSource(sourceId) {\n if (!sourceId) {\n return [null, null];\n }\n // find an element with the sourceId and with the highest sourceOrder ready to be undone\n let matchedElement = null;\n let matchedStrResource = null;\n for (const [strResource, editStack] of this._editStacks) {\n const candidate = editStack.getClosestPastElement();\n if (!candidate) {\n continue;\n }\n if (candidate.sourceId === sourceId) {\n if (!matchedElement || candidate.sourceOrder > matchedElement.sourceOrder) {\n matchedElement = candidate;\n matchedStrResource = strResource;\n }\n }\n }\n return [matchedElement, matchedStrResource];\n }\n canUndo(resourceOrSource) {\n if (resourceOrSource instanceof UndoRedoSource) {\n const [, matchedStrResource] = this._findClosestUndoElementWithSource(resourceOrSource.id);\n return matchedStrResource ? true : false;\n }\n const strResource = this.getUriComparisonKey(resourceOrSource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n return editStack.hasPastElements();\n }\n return false;\n }\n _onError(err, element) {\n onUnexpectedError(err);\n // An error occurred while undoing or redoing => drop the undo/redo stack for all affected resources\n for (const strResource of element.strResources) {\n this.removeElements(strResource);\n }\n this._notificationService.error(err);\n }\n _acquireLocks(editStackSnapshot) {\n // first, check if all locks can be acquired\n for (const editStack of editStackSnapshot.editStacks) {\n if (editStack.locked) {\n throw new Error('Cannot acquire edit stack lock');\n }\n }\n // can acquire all locks\n for (const editStack of editStackSnapshot.editStacks) {\n editStack.locked = true;\n }\n return () => {\n // release all locks\n for (const editStack of editStackSnapshot.editStacks) {\n editStack.locked = false;\n }\n };\n }\n _safeInvokeWithLocks(element, invoke, editStackSnapshot, cleanup, continuation) {\n const releaseLocks = this._acquireLocks(editStackSnapshot);\n let result;\n try {\n result = invoke();\n }\n catch (err) {\n releaseLocks();\n cleanup.dispose();\n return this._onError(err, element);\n }\n if (result) {\n // result is Promise\n return result.then(() => {\n releaseLocks();\n cleanup.dispose();\n return continuation();\n }, (err) => {\n releaseLocks();\n cleanup.dispose();\n return this._onError(err, element);\n });\n }\n else {\n // result is void\n releaseLocks();\n cleanup.dispose();\n return continuation();\n }\n }\n _invokeWorkspacePrepare(element) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof element.actual.prepareUndoRedo === 'undefined') {\n return Disposable.None;\n }\n const result = element.actual.prepareUndoRedo();\n if (typeof result === 'undefined') {\n return Disposable.None;\n }\n return result;\n });\n }\n _invokeResourcePrepare(element, callback) {\n if (element.actual.type !== 1 /* UndoRedoElementType.Workspace */ || typeof element.actual.prepareUndoRedo === 'undefined') {\n // no preparation needed\n return callback(Disposable.None);\n }\n const r = element.actual.prepareUndoRedo();\n if (!r) {\n // nothing to clean up\n return callback(Disposable.None);\n }\n if (isDisposable(r)) {\n return callback(r);\n }\n return r.then((disposable) => {\n return callback(disposable);\n });\n }\n _getAffectedEditStacks(element) {\n const affectedEditStacks = [];\n for (const strResource of element.strResources) {\n affectedEditStacks.push(this._editStacks.get(strResource) || missingEditStack);\n }\n return new EditStackSnapshot(affectedEditStacks);\n }\n _tryToSplitAndUndo(strResource, element, ignoreResources, message) {\n if (element.canSplit()) {\n this._splitPastWorkspaceElement(element, ignoreResources);\n this._notificationService.warn(message);\n return new WorkspaceVerificationError(this._undo(strResource, 0, true));\n }\n else {\n // Cannot safely split this workspace element => flush all undo/redo stacks\n for (const strResource of element.strResources) {\n this.removeElements(strResource);\n }\n this._notificationService.warn(message);\n return new WorkspaceVerificationError();\n }\n }\n _checkWorkspaceUndo(strResource, element, editStackSnapshot, checkInvalidatedResources) {\n if (element.removedResources) {\n return this._tryToSplitAndUndo(strResource, element, element.removedResources, nls.localize({ key: 'cannotWorkspaceUndo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not undo '{0}' across all files. {1}\", element.label, element.removedResources.createMessage()));\n }\n if (checkInvalidatedResources && element.invalidatedResources) {\n return this._tryToSplitAndUndo(strResource, element, element.invalidatedResources, nls.localize({ key: 'cannotWorkspaceUndo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not undo '{0}' across all files. {1}\", element.label, element.invalidatedResources.createMessage()));\n }\n // this must be the last past element in all the impacted resources!\n const cannotUndoDueToResources = [];\n for (const editStack of editStackSnapshot.editStacks) {\n if (editStack.getClosestPastElement() !== element) {\n cannotUndoDueToResources.push(editStack.resourceLabel);\n }\n }\n if (cannotUndoDueToResources.length > 0) {\n return this._tryToSplitAndUndo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceUndoDueToChanges', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not undo '{0}' across all files because changes were made to {1}\", element.label, cannotUndoDueToResources.join(', ')));\n }\n const cannotLockDueToResources = [];\n for (const editStack of editStackSnapshot.editStacks) {\n if (editStack.locked) {\n cannotLockDueToResources.push(editStack.resourceLabel);\n }\n }\n if (cannotLockDueToResources.length > 0) {\n return this._tryToSplitAndUndo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceUndoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}\", element.label, cannotLockDueToResources.join(', ')));\n }\n // check if new stack elements were added in the meantime...\n if (!editStackSnapshot.isValid()) {\n return this._tryToSplitAndUndo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceUndoDueToInMeantimeUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime\", element.label));\n }\n return null;\n }\n _workspaceUndo(strResource, element, undoConfirmed) {\n const affectedEditStacks = this._getAffectedEditStacks(element);\n const verificationError = this._checkWorkspaceUndo(strResource, element, affectedEditStacks, /*invalidated resources will be checked after the prepare call*/ false);\n if (verificationError) {\n return verificationError.returnValue;\n }\n return this._confirmAndExecuteWorkspaceUndo(strResource, element, affectedEditStacks, undoConfirmed);\n }\n _isPartOfUndoGroup(element) {\n if (!element.groupId) {\n return false;\n }\n // check that there is at least another element with the same groupId ready to be undone\n for (const [, editStack] of this._editStacks) {\n const pastElement = editStack.getClosestPastElement();\n if (!pastElement) {\n continue;\n }\n if (pastElement === element) {\n const secondPastElement = editStack.getSecondClosestPastElement();\n if (secondPastElement && secondPastElement.groupId === element.groupId) {\n // there is another element with the same group id in the same stack!\n return true;\n }\n }\n if (pastElement.groupId === element.groupId) {\n // there is another element with the same group id in another stack!\n return true;\n }\n }\n return false;\n }\n _confirmAndExecuteWorkspaceUndo(strResource, element, editStackSnapshot, undoConfirmed) {\n return __awaiter(this, void 0, void 0, function* () {\n if (element.canSplit() && !this._isPartOfUndoGroup(element)) {\n // this element can be split\n const result = yield this._dialogService.show(Severity.Info, nls.localize('confirmWorkspace', \"Would you like to undo '{0}' across all files?\", element.label), [\n nls.localize({ key: 'ok', comment: ['{0} denotes a number that is > 1'] }, \"Undo in {0} Files\", editStackSnapshot.editStacks.length),\n nls.localize('nok', \"Undo this File\"),\n nls.localize('cancel', \"Cancel\"),\n ], {\n cancelId: 2\n });\n if (result.choice === 2) {\n // choice: cancel\n return;\n }\n if (result.choice === 1) {\n // choice: undo this file\n this._splitPastWorkspaceElement(element, null);\n return this._undo(strResource, 0, true);\n }\n // choice: undo in all files\n // At this point, it is possible that the element has been made invalid in the meantime (due to the confirmation await)\n const verificationError1 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*invalidated resources will be checked after the prepare call*/ false);\n if (verificationError1) {\n return verificationError1.returnValue;\n }\n undoConfirmed = true;\n }\n // prepare\n let cleanup;\n try {\n cleanup = yield this._invokeWorkspacePrepare(element);\n }\n catch (err) {\n return this._onError(err, element);\n }\n // At this point, it is possible that the element has been made invalid in the meantime (due to the prepare await)\n const verificationError2 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*now also check that there are no more invalidated resources*/ true);\n if (verificationError2) {\n cleanup.dispose();\n return verificationError2.returnValue;\n }\n for (const editStack of editStackSnapshot.editStacks) {\n editStack.moveBackward(element);\n }\n return this._safeInvokeWithLocks(element, () => element.actual.undo(), editStackSnapshot, cleanup, () => this._continueUndoInGroup(element.groupId, undoConfirmed));\n });\n }\n _resourceUndo(editStack, element, undoConfirmed) {\n if (!element.isValid) {\n // invalid element => immediately flush edit stack!\n editStack.flushAllElements();\n return;\n }\n if (editStack.locked) {\n const message = nls.localize({ key: 'cannotResourceUndoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation.'] }, \"Could not undo '{0}' because there is already an undo or redo operation running.\", element.label);\n this._notificationService.warn(message);\n return;\n }\n return this._invokeResourcePrepare(element, (cleanup) => {\n editStack.moveBackward(element);\n return this._safeInvokeWithLocks(element, () => element.actual.undo(), new EditStackSnapshot([editStack]), cleanup, () => this._continueUndoInGroup(element.groupId, undoConfirmed));\n });\n }\n _findClosestUndoElementInGroup(groupId) {\n if (!groupId) {\n return [null, null];\n }\n // find another element with the same groupId and with the highest groupOrder ready to be undone\n let matchedElement = null;\n let matchedStrResource = null;\n for (const [strResource, editStack] of this._editStacks) {\n const candidate = editStack.getClosestPastElement();\n if (!candidate) {\n continue;\n }\n if (candidate.groupId === groupId) {\n if (!matchedElement || candidate.groupOrder > matchedElement.groupOrder) {\n matchedElement = candidate;\n matchedStrResource = strResource;\n }\n }\n }\n return [matchedElement, matchedStrResource];\n }\n _continueUndoInGroup(groupId, undoConfirmed) {\n if (!groupId) {\n return;\n }\n const [, matchedStrResource] = this._findClosestUndoElementInGroup(groupId);\n if (matchedStrResource) {\n return this._undo(matchedStrResource, 0, undoConfirmed);\n }\n }\n undo(resourceOrSource) {\n if (resourceOrSource instanceof UndoRedoSource) {\n const [, matchedStrResource] = this._findClosestUndoElementWithSource(resourceOrSource.id);\n return matchedStrResource ? this._undo(matchedStrResource, resourceOrSource.id, false) : undefined;\n }\n if (typeof resourceOrSource === 'string') {\n return this._undo(resourceOrSource, 0, false);\n }\n return this._undo(this.getUriComparisonKey(resourceOrSource), 0, false);\n }\n _undo(strResource, sourceId = 0, undoConfirmed) {\n if (!this._editStacks.has(strResource)) {\n return;\n }\n const editStack = this._editStacks.get(strResource);\n const element = editStack.getClosestPastElement();\n if (!element) {\n return;\n }\n if (element.groupId) {\n // this element is a part of a group, we need to make sure undoing in a group is in order\n const [matchedElement, matchedStrResource] = this._findClosestUndoElementInGroup(element.groupId);\n if (element !== matchedElement && matchedStrResource) {\n // there is an element in the same group that should be undone before this one\n return this._undo(matchedStrResource, sourceId, undoConfirmed);\n }\n }\n const shouldPromptForConfirmation = (element.sourceId !== sourceId || element.confirmBeforeUndo);\n if (shouldPromptForConfirmation && !undoConfirmed) {\n // Hit a different source or the element asks for prompt before undo, prompt for confirmation\n return this._confirmAndContinueUndo(strResource, sourceId, element);\n }\n try {\n if (element.type === 1 /* UndoRedoElementType.Workspace */) {\n return this._workspaceUndo(strResource, element, undoConfirmed);\n }\n else {\n return this._resourceUndo(editStack, element, undoConfirmed);\n }\n }\n finally {\n if (DEBUG) {\n this._print('undo');\n }\n }\n }\n _confirmAndContinueUndo(strResource, sourceId, element) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this._dialogService.show(Severity.Info, nls.localize('confirmDifferentSource', \"Would you like to undo '{0}'?\", element.label), [\n nls.localize('confirmDifferentSource.yes', \"Yes\"),\n nls.localize('confirmDifferentSource.no', \"No\"),\n ], {\n cancelId: 1\n });\n if (result.choice === 1) {\n // choice: cancel\n return;\n }\n // choice: undo\n return this._undo(strResource, sourceId, true);\n });\n }\n _findClosestRedoElementWithSource(sourceId) {\n if (!sourceId) {\n return [null, null];\n }\n // find an element with sourceId and with the lowest sourceOrder ready to be redone\n let matchedElement = null;\n let matchedStrResource = null;\n for (const [strResource, editStack] of this._editStacks) {\n const candidate = editStack.getClosestFutureElement();\n if (!candidate) {\n continue;\n }\n if (candidate.sourceId === sourceId) {\n if (!matchedElement || candidate.sourceOrder < matchedElement.sourceOrder) {\n matchedElement = candidate;\n matchedStrResource = strResource;\n }\n }\n }\n return [matchedElement, matchedStrResource];\n }\n canRedo(resourceOrSource) {\n if (resourceOrSource instanceof UndoRedoSource) {\n const [, matchedStrResource] = this._findClosestRedoElementWithSource(resourceOrSource.id);\n return matchedStrResource ? true : false;\n }\n const strResource = this.getUriComparisonKey(resourceOrSource);\n if (this._editStacks.has(strResource)) {\n const editStack = this._editStacks.get(strResource);\n return editStack.hasFutureElements();\n }\n return false;\n }\n _tryToSplitAndRedo(strResource, element, ignoreResources, message) {\n if (element.canSplit()) {\n this._splitFutureWorkspaceElement(element, ignoreResources);\n this._notificationService.warn(message);\n return new WorkspaceVerificationError(this._redo(strResource));\n }\n else {\n // Cannot safely split this workspace element => flush all undo/redo stacks\n for (const strResource of element.strResources) {\n this.removeElements(strResource);\n }\n this._notificationService.warn(message);\n return new WorkspaceVerificationError();\n }\n }\n _checkWorkspaceRedo(strResource, element, editStackSnapshot, checkInvalidatedResources) {\n if (element.removedResources) {\n return this._tryToSplitAndRedo(strResource, element, element.removedResources, nls.localize({ key: 'cannotWorkspaceRedo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not redo '{0}' across all files. {1}\", element.label, element.removedResources.createMessage()));\n }\n if (checkInvalidatedResources && element.invalidatedResources) {\n return this._tryToSplitAndRedo(strResource, element, element.invalidatedResources, nls.localize({ key: 'cannotWorkspaceRedo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not redo '{0}' across all files. {1}\", element.label, element.invalidatedResources.createMessage()));\n }\n // this must be the last future element in all the impacted resources!\n const cannotRedoDueToResources = [];\n for (const editStack of editStackSnapshot.editStacks) {\n if (editStack.getClosestFutureElement() !== element) {\n cannotRedoDueToResources.push(editStack.resourceLabel);\n }\n }\n if (cannotRedoDueToResources.length > 0) {\n return this._tryToSplitAndRedo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceRedoDueToChanges', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not redo '{0}' across all files because changes were made to {1}\", element.label, cannotRedoDueToResources.join(', ')));\n }\n const cannotLockDueToResources = [];\n for (const editStack of editStackSnapshot.editStacks) {\n if (editStack.locked) {\n cannotLockDueToResources.push(editStack.resourceLabel);\n }\n }\n if (cannotLockDueToResources.length > 0) {\n return this._tryToSplitAndRedo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceRedoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}\", element.label, cannotLockDueToResources.join(', ')));\n }\n // check if new stack elements were added in the meantime...\n if (!editStackSnapshot.isValid()) {\n return this._tryToSplitAndRedo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceRedoDueToInMeantimeUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime\", element.label));\n }\n return null;\n }\n _workspaceRedo(strResource, element) {\n const affectedEditStacks = this._getAffectedEditStacks(element);\n const verificationError = this._checkWorkspaceRedo(strResource, element, affectedEditStacks, /*invalidated resources will be checked after the prepare call*/ false);\n if (verificationError) {\n return verificationError.returnValue;\n }\n return this._executeWorkspaceRedo(strResource, element, affectedEditStacks);\n }\n _executeWorkspaceRedo(strResource, element, editStackSnapshot) {\n return __awaiter(this, void 0, void 0, function* () {\n // prepare\n let cleanup;\n try {\n cleanup = yield this._invokeWorkspacePrepare(element);\n }\n catch (err) {\n return this._onError(err, element);\n }\n // At this point, it is possible that the element has been made invalid in the meantime (due to the prepare await)\n const verificationError = this._checkWorkspaceRedo(strResource, element, editStackSnapshot, /*now also check that there are no more invalidated resources*/ true);\n if (verificationError) {\n cleanup.dispose();\n return verificationError.returnValue;\n }\n for (const editStack of editStackSnapshot.editStacks) {\n editStack.moveForward(element);\n }\n return this._safeInvokeWithLocks(element, () => element.actual.redo(), editStackSnapshot, cleanup, () => this._continueRedoInGroup(element.groupId));\n });\n }\n _resourceRedo(editStack, element) {\n if (!element.isValid) {\n // invalid element => immediately flush edit stack!\n editStack.flushAllElements();\n return;\n }\n if (editStack.locked) {\n const message = nls.localize({ key: 'cannotResourceRedoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation.'] }, \"Could not redo '{0}' because there is already an undo or redo operation running.\", element.label);\n this._notificationService.warn(message);\n return;\n }\n return this._invokeResourcePrepare(element, (cleanup) => {\n editStack.moveForward(element);\n return this._safeInvokeWithLocks(element, () => element.actual.redo(), new EditStackSnapshot([editStack]), cleanup, () => this._continueRedoInGroup(element.groupId));\n });\n }\n _findClosestRedoElementInGroup(groupId) {\n if (!groupId) {\n return [null, null];\n }\n // find another element with the same groupId and with the lowest groupOrder ready to be redone\n let matchedElement = null;\n let matchedStrResource = null;\n for (const [strResource, editStack] of this._editStacks) {\n const candidate = editStack.getClosestFutureElement();\n if (!candidate) {\n continue;\n }\n if (candidate.groupId === groupId) {\n if (!matchedElement || candidate.groupOrder < matchedElement.groupOrder) {\n matchedElement = candidate;\n matchedStrResource = strResource;\n }\n }\n }\n return [matchedElement, matchedStrResource];\n }\n _continueRedoInGroup(groupId) {\n if (!groupId) {\n return;\n }\n const [, matchedStrResource] = this._findClosestRedoElementInGroup(groupId);\n if (matchedStrResource) {\n return this._redo(matchedStrResource);\n }\n }\n redo(resourceOrSource) {\n if (resourceOrSource instanceof UndoRedoSource) {\n const [, matchedStrResource] = this._findClosestRedoElementWithSource(resourceOrSource.id);\n return matchedStrResource ? this._redo(matchedStrResource) : undefined;\n }\n if (typeof resourceOrSource === 'string') {\n return this._redo(resourceOrSource);\n }\n return this._redo(this.getUriComparisonKey(resourceOrSource));\n }\n _redo(strResource) {\n if (!this._editStacks.has(strResource)) {\n return;\n }\n const editStack = this._editStacks.get(strResource);\n const element = editStack.getClosestFutureElement();\n if (!element) {\n return;\n }\n if (element.groupId) {\n // this element is a part of a group, we need to make sure redoing in a group is in order\n const [matchedElement, matchedStrResource] = this._findClosestRedoElementInGroup(element.groupId);\n if (element !== matchedElement && matchedStrResource) {\n // there is an element in the same group that should be redone before this one\n return this._redo(matchedStrResource);\n }\n }\n try {\n if (element.type === 1 /* UndoRedoElementType.Workspace */) {\n return this._workspaceRedo(strResource, element);\n }\n else {\n return this._resourceRedo(editStack, element);\n }\n }\n finally {\n if (DEBUG) {\n this._print('redo');\n }\n }\n }\n};\nUndoRedoService = __decorate([\n __param(0, IDialogService),\n __param(1, INotificationService)\n], UndoRedoService);\nexport { UndoRedoService };\nclass WorkspaceVerificationError {\n constructor(returnValue) {\n this.returnValue = returnValue;\n }\n}\nregisterSingleton(IUndoRedoService, UndoRedoService);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as arrays from '../../../base/common/arrays.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport * as objects from '../../../base/common/objects.js';\nimport * as types from '../../../base/common/types.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { addToValueTree, getConfigurationValue, removeFromValueTree, toValuesTree } from './configuration.js';\nexport class ConfigurationModel {\n constructor(_contents = {}, _keys = [], _overrides = []) {\n this._contents = _contents;\n this._keys = _keys;\n this._overrides = _overrides;\n this.frozen = false;\n this.overrideConfigurations = new Map();\n }\n get contents() {\n return this.checkAndFreeze(this._contents);\n }\n get overrides() {\n return this.checkAndFreeze(this._overrides);\n }\n get keys() {\n return this.checkAndFreeze(this._keys);\n }\n isEmpty() {\n return this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\n }\n getValue(section) {\n return section ? getConfigurationValue(this.contents, section) : this.contents;\n }\n getOverrideValue(section, overrideIdentifier) {\n const overrideContents = this.getContentsForOverrideIdentifer(overrideIdentifier);\n return overrideContents\n ? section ? getConfigurationValue(overrideContents, section) : overrideContents\n : undefined;\n }\n override(identifier) {\n let overrideConfigurationModel = this.overrideConfigurations.get(identifier);\n if (!overrideConfigurationModel) {\n overrideConfigurationModel = this.createOverrideConfigurationModel(identifier);\n this.overrideConfigurations.set(identifier, overrideConfigurationModel);\n }\n return overrideConfigurationModel;\n }\n merge(...others) {\n const contents = objects.deepClone(this.contents);\n const overrides = objects.deepClone(this.overrides);\n const keys = [...this.keys];\n for (const other of others) {\n if (other.isEmpty()) {\n continue;\n }\n this.mergeContents(contents, other.contents);\n for (const otherOverride of other.overrides) {\n const [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\n if (override) {\n this.mergeContents(override.contents, otherOverride.contents);\n override.keys.push(...otherOverride.keys);\n override.keys = arrays.distinct(override.keys);\n }\n else {\n overrides.push(objects.deepClone(otherOverride));\n }\n }\n for (const key of other.keys) {\n if (keys.indexOf(key) === -1) {\n keys.push(key);\n }\n }\n }\n return new ConfigurationModel(contents, keys, overrides);\n }\n freeze() {\n this.frozen = true;\n return this;\n }\n createOverrideConfigurationModel(identifier) {\n const overrideContents = this.getContentsForOverrideIdentifer(identifier);\n if (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\n // If there are no valid overrides, return self\n return this;\n }\n const contents = {};\n for (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\n let contentsForKey = this.contents[key];\n const overrideContentsForKey = overrideContents[key];\n // If there are override contents for the key, clone and merge otherwise use base contents\n if (overrideContentsForKey) {\n // Clone and merge only if base contents and override contents are of type object otherwise just override\n if (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\n contentsForKey = objects.deepClone(contentsForKey);\n this.mergeContents(contentsForKey, overrideContentsForKey);\n }\n else {\n contentsForKey = overrideContentsForKey;\n }\n }\n contents[key] = contentsForKey;\n }\n return new ConfigurationModel(contents, this.keys, this.overrides);\n }\n mergeContents(source, target) {\n for (const key of Object.keys(target)) {\n if (key in source) {\n if (types.isObject(source[key]) && types.isObject(target[key])) {\n this.mergeContents(source[key], target[key]);\n continue;\n }\n }\n source[key] = objects.deepClone(target[key]);\n }\n }\n checkAndFreeze(data) {\n if (this.frozen && !Object.isFrozen(data)) {\n return objects.deepFreeze(data);\n }\n return data;\n }\n getContentsForOverrideIdentifer(identifier) {\n let contentsForIdentifierOnly = null;\n let contents = null;\n const mergeContents = (contentsToMerge) => {\n if (contentsToMerge) {\n if (contents) {\n this.mergeContents(contents, contentsToMerge);\n }\n else {\n contents = objects.deepClone(contentsToMerge);\n }\n }\n };\n for (const override of this.overrides) {\n if (arrays.equals(override.identifiers, [identifier])) {\n contentsForIdentifierOnly = override.contents;\n }\n else if (override.identifiers.includes(identifier)) {\n mergeContents(override.contents);\n }\n }\n // Merge contents of the identifier only at the end to take precedence.\n mergeContents(contentsForIdentifierOnly);\n return contents;\n }\n toJSON() {\n return {\n contents: this.contents,\n overrides: this.overrides,\n keys: this.keys\n };\n }\n // Update methods\n setValue(key, value) {\n this.addKey(key);\n addToValueTree(this.contents, key, value, e => { throw new Error(e); });\n }\n removeValue(key) {\n if (this.removeKey(key)) {\n removeFromValueTree(this.contents, key);\n }\n }\n addKey(key) {\n let index = this.keys.length;\n for (let i = 0; i < index; i++) {\n if (key.indexOf(this.keys[i]) === 0) {\n index = i;\n }\n }\n this.keys.splice(index, 1, key);\n }\n removeKey(key) {\n const index = this.keys.indexOf(key);\n if (index !== -1) {\n this.keys.splice(index, 1);\n return true;\n }\n return false;\n }\n}\nexport class Configuration {\n constructor(_defaultConfiguration, _policyConfiguration, _applicationConfiguration, _localUserConfiguration, _remoteUserConfiguration = new ConfigurationModel(), _workspaceConfiguration = new ConfigurationModel(), _folderConfigurations = new ResourceMap(), _memoryConfiguration = new ConfigurationModel(), _memoryConfigurationByResource = new ResourceMap(), _freeze = true) {\n this._defaultConfiguration = _defaultConfiguration;\n this._policyConfiguration = _policyConfiguration;\n this._applicationConfiguration = _applicationConfiguration;\n this._localUserConfiguration = _localUserConfiguration;\n this._remoteUserConfiguration = _remoteUserConfiguration;\n this._workspaceConfiguration = _workspaceConfiguration;\n this._folderConfigurations = _folderConfigurations;\n this._memoryConfiguration = _memoryConfiguration;\n this._memoryConfigurationByResource = _memoryConfigurationByResource;\n this._freeze = _freeze;\n this._workspaceConsolidatedConfiguration = null;\n this._foldersConsolidatedConfigurations = new ResourceMap();\n this._userConfiguration = null;\n }\n getValue(section, overrides, workspace) {\n const consolidateConfigurationModel = this.getConsolidatedConfigurationModel(section, overrides, workspace);\n return consolidateConfigurationModel.getValue(section);\n }\n updateValue(key, value, overrides = {}) {\n let memoryConfiguration;\n if (overrides.resource) {\n memoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\n if (!memoryConfiguration) {\n memoryConfiguration = new ConfigurationModel();\n this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\n }\n }\n else {\n memoryConfiguration = this._memoryConfiguration;\n }\n if (value === undefined) {\n memoryConfiguration.removeValue(key);\n }\n else {\n memoryConfiguration.setValue(key, value);\n }\n if (!overrides.resource) {\n this._workspaceConsolidatedConfiguration = null;\n }\n }\n inspect(key, overrides, workspace) {\n const consolidateConfigurationModel = this.getConsolidatedConfigurationModel(key, overrides, workspace);\n const folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource, workspace);\n const memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration;\n const defaultValue = overrides.overrideIdentifier ? this._defaultConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this._defaultConfiguration.freeze().getValue(key);\n const policyValue = this._policyConfiguration.isEmpty() ? undefined : this._policyConfiguration.freeze().getValue(key);\n const applicationValue = this.applicationConfiguration.isEmpty() ? undefined : this.applicationConfiguration.freeze().getValue(key);\n const userValue = overrides.overrideIdentifier ? this.userConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this.userConfiguration.freeze().getValue(key);\n const userLocalValue = overrides.overrideIdentifier ? this.localUserConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this.localUserConfiguration.freeze().getValue(key);\n const userRemoteValue = overrides.overrideIdentifier ? this.remoteUserConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this.remoteUserConfiguration.freeze().getValue(key);\n const workspaceValue = workspace ? overrides.overrideIdentifier ? this._workspaceConfiguration.freeze().override(overrides.overrideIdentifier).getValue(key) : this._workspaceConfiguration.freeze().getValue(key) : undefined; //Check on workspace exists or not because _workspaceConfiguration is never null\n const workspaceFolderValue = folderConfigurationModel ? overrides.overrideIdentifier ? folderConfigurationModel.freeze().override(overrides.overrideIdentifier).getValue(key) : folderConfigurationModel.freeze().getValue(key) : undefined;\n const memoryValue = overrides.overrideIdentifier ? memoryConfigurationModel.override(overrides.overrideIdentifier).getValue(key) : memoryConfigurationModel.getValue(key);\n const value = consolidateConfigurationModel.getValue(key);\n const overrideIdentifiers = arrays.distinct(consolidateConfigurationModel.overrides.map(override => override.identifiers).flat()).filter(overrideIdentifier => consolidateConfigurationModel.getOverrideValue(key, overrideIdentifier) !== undefined);\n return {\n defaultValue,\n policyValue,\n applicationValue,\n userValue,\n userLocalValue,\n userRemoteValue,\n workspaceValue,\n workspaceFolderValue,\n memoryValue,\n value,\n default: defaultValue !== undefined ? { value: this._defaultConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this._defaultConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n policy: policyValue !== undefined ? { value: policyValue } : undefined,\n application: applicationValue !== undefined ? { value: applicationValue, override: overrides.overrideIdentifier ? this.applicationConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n user: userValue !== undefined ? { value: this.userConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this.userConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n userLocal: userLocalValue !== undefined ? { value: this.localUserConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this.localUserConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n userRemote: userRemoteValue !== undefined ? { value: this.remoteUserConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this.remoteUserConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n workspace: workspaceValue !== undefined ? { value: this._workspaceConfiguration.freeze().getValue(key), override: overrides.overrideIdentifier ? this._workspaceConfiguration.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n workspaceFolder: workspaceFolderValue !== undefined ? { value: folderConfigurationModel === null || folderConfigurationModel === void 0 ? void 0 : folderConfigurationModel.freeze().getValue(key), override: overrides.overrideIdentifier ? folderConfigurationModel === null || folderConfigurationModel === void 0 ? void 0 : folderConfigurationModel.freeze().getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n memory: memoryValue !== undefined ? { value: memoryConfigurationModel.getValue(key), override: overrides.overrideIdentifier ? memoryConfigurationModel.getOverrideValue(key, overrides.overrideIdentifier) : undefined } : undefined,\n overrideIdentifiers: overrideIdentifiers.length ? overrideIdentifiers : undefined\n };\n }\n get applicationConfiguration() {\n return this._applicationConfiguration;\n }\n get userConfiguration() {\n if (!this._userConfiguration) {\n this._userConfiguration = this._remoteUserConfiguration.isEmpty() ? this._localUserConfiguration : this._localUserConfiguration.merge(this._remoteUserConfiguration);\n if (this._freeze) {\n this._userConfiguration.freeze();\n }\n }\n return this._userConfiguration;\n }\n get localUserConfiguration() {\n return this._localUserConfiguration;\n }\n get remoteUserConfiguration() {\n return this._remoteUserConfiguration;\n }\n getConsolidatedConfigurationModel(section, overrides, workspace) {\n let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\n if (overrides.overrideIdentifier) {\n configurationModel = configurationModel.override(overrides.overrideIdentifier);\n }\n if (!this._policyConfiguration.isEmpty() && this._policyConfiguration.getValue(section) !== undefined) {\n configurationModel = configurationModel.merge(this._policyConfiguration);\n }\n return configurationModel;\n }\n getConsolidatedConfigurationModelForResource({ resource }, workspace) {\n let consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n if (workspace && resource) {\n const root = workspace.getFolder(resource);\n if (root) {\n consolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\n }\n const memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\n if (memoryConfigurationForResource) {\n consolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\n }\n }\n return consolidateConfiguration;\n }\n getWorkspaceConsolidatedConfiguration() {\n if (!this._workspaceConsolidatedConfiguration) {\n this._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.applicationConfiguration, this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\n if (this._freeze) {\n this._workspaceConfiguration = this._workspaceConfiguration.freeze();\n }\n }\n return this._workspaceConsolidatedConfiguration;\n }\n getFolderConsolidatedConfiguration(folder) {\n let folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\n if (!folderConsolidatedConfiguration) {\n const workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n const folderConfiguration = this._folderConfigurations.get(folder);\n if (folderConfiguration) {\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\n if (this._freeze) {\n folderConsolidatedConfiguration = folderConsolidatedConfiguration.freeze();\n }\n this._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\n }\n else {\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration;\n }\n }\n return folderConsolidatedConfiguration;\n }\n getFolderConfigurationModelForResource(resource, workspace) {\n if (workspace && resource) {\n const root = workspace.getFolder(resource);\n if (root) {\n return this._folderConfigurations.get(root.uri);\n }\n }\n return undefined;\n }\n toData() {\n return {\n defaults: {\n contents: this._defaultConfiguration.contents,\n overrides: this._defaultConfiguration.overrides,\n keys: this._defaultConfiguration.keys\n },\n policy: {\n contents: this._policyConfiguration.contents,\n overrides: this._policyConfiguration.overrides,\n keys: this._policyConfiguration.keys\n },\n application: {\n contents: this.applicationConfiguration.contents,\n overrides: this.applicationConfiguration.overrides,\n keys: this.applicationConfiguration.keys\n },\n user: {\n contents: this.userConfiguration.contents,\n overrides: this.userConfiguration.overrides,\n keys: this.userConfiguration.keys\n },\n workspace: {\n contents: this._workspaceConfiguration.contents,\n overrides: this._workspaceConfiguration.overrides,\n keys: this._workspaceConfiguration.keys\n },\n folders: [...this._folderConfigurations.keys()].reduce((result, folder) => {\n const { contents, overrides, keys } = this._folderConfigurations.get(folder);\n result.push([folder, { contents, overrides, keys }]);\n return result;\n }, [])\n };\n }\n static parse(data) {\n const defaultConfiguration = this.parseConfigurationModel(data.defaults);\n const policyConfiguration = this.parseConfigurationModel(data.policy);\n const applicationConfiguration = this.parseConfigurationModel(data.application);\n const userConfiguration = this.parseConfigurationModel(data.user);\n const workspaceConfiguration = this.parseConfigurationModel(data.workspace);\n const folders = data.folders.reduce((result, value) => {\n result.set(URI.revive(value[0]), this.parseConfigurationModel(value[1]));\n return result;\n }, new ResourceMap());\n return new Configuration(defaultConfiguration, policyConfiguration, applicationConfiguration, userConfiguration, new ConfigurationModel(), workspaceConfiguration, folders, new ConfigurationModel(), new ResourceMap(), false);\n }\n static parseConfigurationModel(model) {\n return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze();\n }\n}\nexport class ConfigurationChangeEvent {\n constructor(change, previous, currentConfiguraiton, currentWorkspace) {\n this.change = change;\n this.previous = previous;\n this.currentConfiguraiton = currentConfiguraiton;\n this.currentWorkspace = currentWorkspace;\n this._previousConfiguration = undefined;\n const keysSet = new Set();\n change.keys.forEach(key => keysSet.add(key));\n change.overrides.forEach(([, keys]) => keys.forEach(key => keysSet.add(key)));\n this.affectedKeys = [...keysSet.values()];\n const configurationModel = new ConfigurationModel();\n this.affectedKeys.forEach(key => configurationModel.setValue(key, {}));\n this.affectedKeysTree = configurationModel.contents;\n }\n get previousConfiguration() {\n if (!this._previousConfiguration && this.previous) {\n this._previousConfiguration = Configuration.parse(this.previous.data);\n }\n return this._previousConfiguration;\n }\n affectsConfiguration(section, overrides) {\n var _a;\n if (this.doesAffectedKeysTreeContains(this.affectedKeysTree, section)) {\n if (overrides) {\n const value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, (_a = this.previous) === null || _a === void 0 ? void 0 : _a.workspace) : undefined;\n const value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\n return !objects.equals(value1, value2);\n }\n return true;\n }\n return false;\n }\n doesAffectedKeysTreeContains(affectedKeysTree, section) {\n let requestedTree = toValuesTree({ [section]: true }, () => { });\n let key;\n while (typeof requestedTree === 'object' && (key = Object.keys(requestedTree)[0])) { // Only one key should present, since we added only one property\n affectedKeysTree = affectedKeysTree[key];\n if (!affectedKeysTree) {\n return false; // Requested tree is not found\n }\n requestedTree = requestedTree[key];\n }\n return true;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IntervalTimer, TimeoutTimer } from '../../../base/common/async.js';\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport * as nls from '../../../nls.js';\nconst HIGH_FREQ_COMMANDS = /^(cursor|delete)/;\nexport class AbstractKeybindingService extends Disposable {\n constructor(_contextKeyService, _commandService, _telemetryService, _notificationService, _logService) {\n super();\n this._contextKeyService = _contextKeyService;\n this._commandService = _commandService;\n this._telemetryService = _telemetryService;\n this._notificationService = _notificationService;\n this._logService = _logService;\n this._onDidUpdateKeybindings = this._register(new Emitter());\n this._currentChord = null;\n this._currentChordChecker = new IntervalTimer();\n this._currentChordStatusMessage = null;\n this._ignoreSingleModifiers = KeybindingModifierSet.EMPTY;\n this._currentSingleModifier = null;\n this._currentSingleModifierClearTimeout = new TimeoutTimer();\n this._logging = false;\n }\n get onDidUpdateKeybindings() {\n return this._onDidUpdateKeybindings ? this._onDidUpdateKeybindings.event : Event.None; // Sinon stubbing walks properties on prototype\n }\n dispose() {\n super.dispose();\n }\n _log(str) {\n if (this._logging) {\n this._logService.info(`[KeybindingService]: ${str}`);\n }\n }\n getKeybindings() {\n return this._getResolver().getKeybindings();\n }\n lookupKeybinding(commandId, context) {\n const result = this._getResolver().lookupPrimaryKeybinding(commandId, context || this._contextKeyService);\n if (!result) {\n return undefined;\n }\n return result.resolvedKeybinding;\n }\n dispatchEvent(e, target) {\n return this._dispatch(e, target);\n }\n softDispatch(e, target) {\n this._log(`/ Soft dispatching keyboard event`);\n const keybinding = this.resolveKeyboardEvent(e);\n if (keybinding.isChord()) {\n console.warn('Unexpected keyboard event mapped to a chord');\n return null;\n }\n const [firstPart,] = keybinding.getDispatchParts();\n if (firstPart === null) {\n // cannot be dispatched, probably only modifier keys\n this._log(`\\\\ Keyboard event cannot be dispatched`);\n return null;\n }\n const contextValue = this._contextKeyService.getContext(target);\n const currentChord = this._currentChord ? this._currentChord.keypress : null;\n return this._getResolver().resolve(contextValue, currentChord, firstPart);\n }\n _enterChordMode(firstPart, keypressLabel) {\n this._currentChord = {\n keypress: firstPart,\n label: keypressLabel\n };\n this._currentChordStatusMessage = this._notificationService.status(nls.localize('first.chord', \"({0}) was pressed. Waiting for second key of chord...\", keypressLabel));\n const chordEnterTime = Date.now();\n this._currentChordChecker.cancelAndSet(() => {\n if (!this._documentHasFocus()) {\n // Focus has been lost => leave chord mode\n this._leaveChordMode();\n return;\n }\n if (Date.now() - chordEnterTime > 5000) {\n // 5 seconds elapsed => leave chord mode\n this._leaveChordMode();\n }\n }, 500);\n }\n _leaveChordMode() {\n if (this._currentChordStatusMessage) {\n this._currentChordStatusMessage.dispose();\n this._currentChordStatusMessage = null;\n }\n this._currentChordChecker.cancel();\n this._currentChord = null;\n }\n _dispatch(e, target) {\n return this._doDispatch(this.resolveKeyboardEvent(e), target, /*isSingleModiferChord*/ false);\n }\n _singleModifierDispatch(e, target) {\n const keybinding = this.resolveKeyboardEvent(e);\n const [singleModifier,] = keybinding.getSingleModifierDispatchParts();\n if (singleModifier) {\n if (this._ignoreSingleModifiers.has(singleModifier)) {\n this._log(`+ Ignoring single modifier ${singleModifier} due to it being pressed together with other keys.`);\n this._ignoreSingleModifiers = KeybindingModifierSet.EMPTY;\n this._currentSingleModifierClearTimeout.cancel();\n this._currentSingleModifier = null;\n return false;\n }\n this._ignoreSingleModifiers = KeybindingModifierSet.EMPTY;\n if (this._currentSingleModifier === null) {\n // we have a valid `singleModifier`, store it for the next keyup, but clear it in 300ms\n this._log(`+ Storing single modifier for possible chord ${singleModifier}.`);\n this._currentSingleModifier = singleModifier;\n this._currentSingleModifierClearTimeout.cancelAndSet(() => {\n this._log(`+ Clearing single modifier due to 300ms elapsed.`);\n this._currentSingleModifier = null;\n }, 300);\n return false;\n }\n if (singleModifier === this._currentSingleModifier) {\n // bingo!\n this._log(`/ Dispatching single modifier chord ${singleModifier} ${singleModifier}`);\n this._currentSingleModifierClearTimeout.cancel();\n this._currentSingleModifier = null;\n return this._doDispatch(keybinding, target, /*isSingleModiferChord*/ true);\n }\n this._log(`+ Clearing single modifier due to modifier mismatch: ${this._currentSingleModifier} ${singleModifier}`);\n this._currentSingleModifierClearTimeout.cancel();\n this._currentSingleModifier = null;\n return false;\n }\n // When pressing a modifier and holding it pressed with any other modifier or key combination,\n // the pressed modifiers should no longer be considered for single modifier dispatch.\n const [firstPart,] = keybinding.getParts();\n this._ignoreSingleModifiers = new KeybindingModifierSet(firstPart);\n if (this._currentSingleModifier !== null) {\n this._log(`+ Clearing single modifier due to other key up.`);\n }\n this._currentSingleModifierClearTimeout.cancel();\n this._currentSingleModifier = null;\n return false;\n }\n _doDispatch(keybinding, target, isSingleModiferChord = false) {\n let shouldPreventDefault = false;\n if (keybinding.isChord()) {\n console.warn('Unexpected keyboard event mapped to a chord');\n return false;\n }\n let firstPart = null; // the first keybinding i.e. Ctrl+K\n let currentChord = null; // the \"second\" keybinding i.e. Ctrl+K \"Ctrl+D\"\n if (isSingleModiferChord) {\n const [dispatchKeyname,] = keybinding.getSingleModifierDispatchParts();\n firstPart = dispatchKeyname;\n currentChord = dispatchKeyname;\n }\n else {\n [firstPart,] = keybinding.getDispatchParts();\n currentChord = this._currentChord ? this._currentChord.keypress : null;\n }\n if (firstPart === null) {\n this._log(`\\\\ Keyboard event cannot be dispatched in keydown phase.`);\n // cannot be dispatched, probably only modifier keys\n return shouldPreventDefault;\n }\n const contextValue = this._contextKeyService.getContext(target);\n const keypressLabel = keybinding.getLabel();\n const resolveResult = this._getResolver().resolve(contextValue, currentChord, firstPart);\n this._logService.trace('KeybindingService#dispatch', keypressLabel, resolveResult === null || resolveResult === void 0 ? void 0 : resolveResult.commandId);\n if (resolveResult && resolveResult.enterChord) {\n shouldPreventDefault = true;\n this._enterChordMode(firstPart, keypressLabel);\n this._log(`+ Entering chord mode...`);\n return shouldPreventDefault;\n }\n if (this._currentChord) {\n if (!resolveResult || !resolveResult.commandId) {\n this._log(`+ Leaving chord mode: Nothing bound to \"${this._currentChord.label} ${keypressLabel}\".`);\n this._notificationService.status(nls.localize('missing.chord', \"The key combination ({0}, {1}) is not a command.\", this._currentChord.label, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });\n shouldPreventDefault = true;\n }\n }\n this._leaveChordMode();\n if (resolveResult && resolveResult.commandId) {\n if (!resolveResult.bubble) {\n shouldPreventDefault = true;\n }\n this._log(`+ Invoking command ${resolveResult.commandId}.`);\n if (typeof resolveResult.commandArgs === 'undefined') {\n this._commandService.executeCommand(resolveResult.commandId).then(undefined, err => this._notificationService.warn(err));\n }\n else {\n this._commandService.executeCommand(resolveResult.commandId, resolveResult.commandArgs).then(undefined, err => this._notificationService.warn(err));\n }\n if (!HIGH_FREQ_COMMANDS.test(resolveResult.commandId)) {\n this._telemetryService.publicLog2('workbenchActionExecuted', { id: resolveResult.commandId, from: 'keybinding' });\n }\n }\n return shouldPreventDefault;\n }\n mightProducePrintableCharacter(event) {\n if (event.ctrlKey || event.metaKey) {\n // ignore ctrl/cmd-combination but not shift/alt-combinatios\n return false;\n }\n // weak check for certain ranges. this is properly implemented in a subclass\n // with access to the KeyboardMapperFactory.\n if ((event.keyCode >= 31 /* KeyCode.KeyA */ && event.keyCode <= 56 /* KeyCode.KeyZ */)\n || (event.keyCode >= 21 /* KeyCode.Digit0 */ && event.keyCode <= 30 /* KeyCode.Digit9 */)) {\n return true;\n }\n return false;\n }\n}\nclass KeybindingModifierSet {\n constructor(source) {\n this._ctrlKey = source ? source.ctrlKey : false;\n this._shiftKey = source ? source.shiftKey : false;\n this._altKey = source ? source.altKey : false;\n this._metaKey = source ? source.metaKey : false;\n }\n has(modifier) {\n switch (modifier) {\n case 'ctrl': return this._ctrlKey;\n case 'shift': return this._shiftKey;\n case 'alt': return this._altKey;\n case 'meta': return this._metaKey;\n }\n }\n}\nKeybindingModifierSet.EMPTY = new KeybindingModifierSet(null);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { implies, expressionsAreEqualWithConstantSubstitution } from '../../contextkey/common/contextkey.js';\nexport class KeybindingResolver {\n constructor(defaultKeybindings, overrides, log) {\n this._log = log;\n this._defaultKeybindings = defaultKeybindings;\n this._defaultBoundCommands = new Map();\n for (const defaultKeybinding of defaultKeybindings) {\n const command = defaultKeybinding.command;\n if (command && command.charAt(0) !== '-') {\n this._defaultBoundCommands.set(command, true);\n }\n }\n this._map = new Map();\n this._lookupMap = new Map();\n this._keybindings = KeybindingResolver.handleRemovals([].concat(defaultKeybindings).concat(overrides));\n for (let i = 0, len = this._keybindings.length; i < len; i++) {\n const k = this._keybindings[i];\n if (k.keypressParts.length === 0) {\n // unbound\n continue;\n }\n if (k.when && k.when.type === 0 /* ContextKeyExprType.False */) {\n // when condition is false\n continue;\n }\n // TODO@chords\n this._addKeyPress(k.keypressParts[0], k);\n }\n }\n static _isTargetedForRemoval(defaultKb, keypressFirstPart, keypressChordPart, when) {\n // TODO@chords\n if (keypressFirstPart && defaultKb.keypressParts[0] !== keypressFirstPart) {\n return false;\n }\n // TODO@chords\n if (keypressChordPart && defaultKb.keypressParts[1] !== keypressChordPart) {\n return false;\n }\n if (when) {\n if (!defaultKb.when) {\n return false;\n }\n if (!expressionsAreEqualWithConstantSubstitution(when, defaultKb.when)) {\n return false;\n }\n }\n return true;\n }\n /**\n * Looks for rules containing \"-commandId\" and removes them.\n */\n static handleRemovals(rules) {\n // Do a first pass and construct a hash-map for removals\n const removals = new Map();\n for (let i = 0, len = rules.length; i < len; i++) {\n const rule = rules[i];\n if (rule.command && rule.command.charAt(0) === '-') {\n const command = rule.command.substring(1);\n if (!removals.has(command)) {\n removals.set(command, [rule]);\n }\n else {\n removals.get(command).push(rule);\n }\n }\n }\n if (removals.size === 0) {\n // There are no removals\n return rules;\n }\n // Do a second pass and keep only non-removed keybindings\n const result = [];\n for (let i = 0, len = rules.length; i < len; i++) {\n const rule = rules[i];\n if (!rule.command || rule.command.length === 0) {\n result.push(rule);\n continue;\n }\n if (rule.command.charAt(0) === '-') {\n continue;\n }\n const commandRemovals = removals.get(rule.command);\n if (!commandRemovals || !rule.isDefault) {\n result.push(rule);\n continue;\n }\n let isRemoved = false;\n for (const commandRemoval of commandRemovals) {\n // TODO@chords\n const keypressFirstPart = commandRemoval.keypressParts[0];\n const keypressChordPart = commandRemoval.keypressParts[1];\n const when = commandRemoval.when;\n if (this._isTargetedForRemoval(rule, keypressFirstPart, keypressChordPart, when)) {\n isRemoved = true;\n break;\n }\n }\n if (!isRemoved) {\n result.push(rule);\n continue;\n }\n }\n return result;\n }\n _addKeyPress(keypress, item) {\n const conflicts = this._map.get(keypress);\n if (typeof conflicts === 'undefined') {\n // There is no conflict so far\n this._map.set(keypress, [item]);\n this._addToLookupMap(item);\n return;\n }\n for (let i = conflicts.length - 1; i >= 0; i--) {\n const conflict = conflicts[i];\n if (conflict.command === item.command) {\n continue;\n }\n const conflictIsChord = (conflict.keypressParts.length > 1);\n const itemIsChord = (item.keypressParts.length > 1);\n // TODO@chords\n if (conflictIsChord && itemIsChord && conflict.keypressParts[1] !== item.keypressParts[1]) {\n // The conflict only shares the chord start with this command\n continue;\n }\n if (KeybindingResolver.whenIsEntirelyIncluded(conflict.when, item.when)) {\n // `item` completely overwrites `conflict`\n // Remove conflict from the lookupMap\n this._removeFromLookupMap(conflict);\n }\n }\n conflicts.push(item);\n this._addToLookupMap(item);\n }\n _addToLookupMap(item) {\n if (!item.command) {\n return;\n }\n let arr = this._lookupMap.get(item.command);\n if (typeof arr === 'undefined') {\n arr = [item];\n this._lookupMap.set(item.command, arr);\n }\n else {\n arr.push(item);\n }\n }\n _removeFromLookupMap(item) {\n if (!item.command) {\n return;\n }\n const arr = this._lookupMap.get(item.command);\n if (typeof arr === 'undefined') {\n return;\n }\n for (let i = 0, len = arr.length; i < len; i++) {\n if (arr[i] === item) {\n arr.splice(i, 1);\n return;\n }\n }\n }\n /**\n * Returns true if it is provable `a` implies `b`.\n */\n static whenIsEntirelyIncluded(a, b) {\n if (!b || b.type === 1 /* ContextKeyExprType.True */) {\n return true;\n }\n if (!a || a.type === 1 /* ContextKeyExprType.True */) {\n return false;\n }\n return implies(a, b);\n }\n getKeybindings() {\n return this._keybindings;\n }\n lookupPrimaryKeybinding(commandId, context) {\n const items = this._lookupMap.get(commandId);\n if (typeof items === 'undefined' || items.length === 0) {\n return null;\n }\n if (items.length === 1) {\n return items[0];\n }\n for (let i = items.length - 1; i >= 0; i--) {\n const item = items[i];\n if (context.contextMatchesRules(item.when)) {\n return item;\n }\n }\n return items[items.length - 1];\n }\n resolve(context, currentChord, keypress) {\n this._log(`| Resolving ${keypress}${currentChord ? ` chorded from ${currentChord}` : ``}`);\n let lookupMap = null;\n if (currentChord !== null) {\n // Fetch all chord bindings for `currentChord`\n const candidates = this._map.get(currentChord);\n if (typeof candidates === 'undefined') {\n // No chords starting with `currentChord`\n this._log(`\\\\ No keybinding entries.`);\n return null;\n }\n lookupMap = [];\n for (let i = 0, len = candidates.length; i < len; i++) {\n const candidate = candidates[i];\n // TODO@chords\n if (candidate.keypressParts[1] === keypress) {\n lookupMap.push(candidate);\n }\n }\n }\n else {\n const candidates = this._map.get(keypress);\n if (typeof candidates === 'undefined') {\n // No bindings with `keypress`\n this._log(`\\\\ No keybinding entries.`);\n return null;\n }\n lookupMap = candidates;\n }\n const result = this._findCommand(context, lookupMap);\n if (!result) {\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, no when clauses matched the context.`);\n return null;\n }\n // TODO@chords\n if (currentChord === null && result.keypressParts.length > 1 && result.keypressParts[1] !== null) {\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched chord, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\n return {\n enterChord: true,\n leaveChord: false,\n commandId: null,\n commandArgs: null,\n bubble: false\n };\n }\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched ${result.command}, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\n return {\n enterChord: false,\n leaveChord: result.keypressParts.length > 1,\n commandId: result.command,\n commandArgs: result.commandArgs,\n bubble: result.bubble\n };\n }\n _findCommand(context, matches) {\n for (let i = matches.length - 1; i >= 0; i--) {\n const k = matches[i];\n if (!KeybindingResolver._contextMatchesRules(context, k.when)) {\n continue;\n }\n return k;\n }\n return null;\n }\n static _contextMatchesRules(context, rules) {\n if (!rules) {\n return true;\n }\n return rules.evaluate(context);\n }\n}\nfunction printWhenExplanation(when) {\n if (!when) {\n return `no when condition`;\n }\n return `${when.serialize()}`;\n}\nfunction printSourceExplanation(kb) {\n return (kb.extensionId\n ? (kb.isBuiltinExtension ? `built-in extension ${kb.extensionId}` : `user extension ${kb.extensionId}`)\n : (kb.isDefault ? `built-in` : `user`));\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class ResolvedKeybindingItem {\n constructor(resolvedKeybinding, command, commandArgs, when, isDefault, extensionId, isBuiltinExtension) {\n this._resolvedKeybindingItemBrand = undefined;\n this.resolvedKeybinding = resolvedKeybinding;\n this.keypressParts = resolvedKeybinding ? removeElementsAfterNulls(resolvedKeybinding.getDispatchParts()) : [];\n if (resolvedKeybinding && this.keypressParts.length === 0) {\n // handle possible single modifier chord keybindings\n this.keypressParts = removeElementsAfterNulls(resolvedKeybinding.getSingleModifierDispatchParts());\n }\n this.bubble = (command ? command.charCodeAt(0) === 94 /* CharCode.Caret */ : false);\n this.command = this.bubble ? command.substr(1) : command;\n this.commandArgs = commandArgs;\n this.when = when;\n this.isDefault = isDefault;\n this.extensionId = extensionId;\n this.isBuiltinExtension = isBuiltinExtension;\n }\n}\nexport function removeElementsAfterNulls(arr) {\n const result = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n const element = arr[i];\n if (!element) {\n // stop processing at first encountered null\n return result;\n }\n result.push(element);\n }\n return result;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { illegalArgument } from '../../../base/common/errors.js';\nimport { AriaLabelProvider, ElectronAcceleratorLabelProvider, UILabelProvider } from '../../../base/common/keybindingLabels.js';\nimport { ResolvedKeybinding, ResolvedKeybindingPart } from '../../../base/common/keybindings.js';\nexport class BaseResolvedKeybinding extends ResolvedKeybinding {\n constructor(os, parts) {\n super();\n if (parts.length === 0) {\n throw illegalArgument(`parts`);\n }\n this._os = os;\n this._parts = parts;\n }\n getLabel() {\n return UILabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getLabel(keybinding));\n }\n getAriaLabel() {\n return AriaLabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getAriaLabel(keybinding));\n }\n getElectronAccelerator() {\n if (this._parts.length > 1) {\n // [Electron Accelerators] Electron cannot handle chords\n return null;\n }\n if (this._parts[0].isDuplicateModifierCase()) {\n // [Electron Accelerators] Electron cannot handle modifier only keybindings\n // e.g. \"shift shift\"\n return null;\n }\n return ElectronAcceleratorLabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getElectronAccelerator(keybinding));\n }\n isChord() {\n return (this._parts.length > 1);\n }\n getParts() {\n return this._parts.map((keybinding) => this._getPart(keybinding));\n }\n _getPart(keybinding) {\n return new ResolvedKeybindingPart(keybinding.ctrlKey, keybinding.shiftKey, keybinding.altKey, keybinding.metaKey, this._getLabel(keybinding), this._getAriaLabel(keybinding));\n }\n getDispatchParts() {\n return this._parts.map((keybinding) => this._getDispatchPart(keybinding));\n }\n getSingleModifierDispatchParts() {\n return this._parts.map((keybinding) => this._getSingleModifierDispatchPart(keybinding));\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { KeyCodeUtils, IMMUTABLE_CODE_TO_KEY_CODE } from '../../../base/common/keyCodes.js';\nimport { ChordKeybinding, SimpleKeybinding } from '../../../base/common/keybindings.js';\nimport { BaseResolvedKeybinding } from './baseResolvedKeybinding.js';\nimport { removeElementsAfterNulls } from './resolvedKeybindingItem.js';\n/**\n * Do not instantiate. Use KeybindingService to get a ResolvedKeybinding seeded with information about the current kb layout.\n */\nexport class USLayoutResolvedKeybinding extends BaseResolvedKeybinding {\n constructor(actual, os) {\n super(os, actual.parts);\n }\n _keyCodeToUILabel(keyCode) {\n if (this._os === 2 /* OperatingSystem.Macintosh */) {\n switch (keyCode) {\n case 15 /* KeyCode.LeftArrow */:\n return '←';\n case 16 /* KeyCode.UpArrow */:\n return '↑';\n case 17 /* KeyCode.RightArrow */:\n return '→';\n case 18 /* KeyCode.DownArrow */:\n return '↓';\n }\n }\n return KeyCodeUtils.toString(keyCode);\n }\n _getLabel(keybinding) {\n if (keybinding.isDuplicateModifierCase()) {\n return '';\n }\n return this._keyCodeToUILabel(keybinding.keyCode);\n }\n _getAriaLabel(keybinding) {\n if (keybinding.isDuplicateModifierCase()) {\n return '';\n }\n return KeyCodeUtils.toString(keybinding.keyCode);\n }\n _getElectronAccelerator(keybinding) {\n return KeyCodeUtils.toElectronAccelerator(keybinding.keyCode);\n }\n _getDispatchPart(keybinding) {\n return USLayoutResolvedKeybinding.getDispatchStr(keybinding);\n }\n static getDispatchStr(keybinding) {\n if (keybinding.isModifierKey()) {\n return null;\n }\n let result = '';\n if (keybinding.ctrlKey) {\n result += 'ctrl+';\n }\n if (keybinding.shiftKey) {\n result += 'shift+';\n }\n if (keybinding.altKey) {\n result += 'alt+';\n }\n if (keybinding.metaKey) {\n result += 'meta+';\n }\n result += KeyCodeUtils.toString(keybinding.keyCode);\n return result;\n }\n _getSingleModifierDispatchPart(keybinding) {\n if (keybinding.keyCode === 5 /* KeyCode.Ctrl */ && !keybinding.shiftKey && !keybinding.altKey && !keybinding.metaKey) {\n return 'ctrl';\n }\n if (keybinding.keyCode === 4 /* KeyCode.Shift */ && !keybinding.ctrlKey && !keybinding.altKey && !keybinding.metaKey) {\n return 'shift';\n }\n if (keybinding.keyCode === 6 /* KeyCode.Alt */ && !keybinding.ctrlKey && !keybinding.shiftKey && !keybinding.metaKey) {\n return 'alt';\n }\n if (keybinding.keyCode === 57 /* KeyCode.Meta */ && !keybinding.ctrlKey && !keybinding.shiftKey && !keybinding.altKey) {\n return 'meta';\n }\n return null;\n }\n /**\n * *NOTE*: Check return value for `KeyCode.Unknown`.\n */\n static _scanCodeToKeyCode(scanCode) {\n const immutableKeyCode = IMMUTABLE_CODE_TO_KEY_CODE[scanCode];\n if (immutableKeyCode !== -1 /* KeyCode.DependsOnKbLayout */) {\n return immutableKeyCode;\n }\n switch (scanCode) {\n case 10 /* ScanCode.KeyA */: return 31 /* KeyCode.KeyA */;\n case 11 /* ScanCode.KeyB */: return 32 /* KeyCode.KeyB */;\n case 12 /* ScanCode.KeyC */: return 33 /* KeyCode.KeyC */;\n case 13 /* ScanCode.KeyD */: return 34 /* KeyCode.KeyD */;\n case 14 /* ScanCode.KeyE */: return 35 /* KeyCode.KeyE */;\n case 15 /* ScanCode.KeyF */: return 36 /* KeyCode.KeyF */;\n case 16 /* ScanCode.KeyG */: return 37 /* KeyCode.KeyG */;\n case 17 /* ScanCode.KeyH */: return 38 /* KeyCode.KeyH */;\n case 18 /* ScanCode.KeyI */: return 39 /* KeyCode.KeyI */;\n case 19 /* ScanCode.KeyJ */: return 40 /* KeyCode.KeyJ */;\n case 20 /* ScanCode.KeyK */: return 41 /* KeyCode.KeyK */;\n case 21 /* ScanCode.KeyL */: return 42 /* KeyCode.KeyL */;\n case 22 /* ScanCode.KeyM */: return 43 /* KeyCode.KeyM */;\n case 23 /* ScanCode.KeyN */: return 44 /* KeyCode.KeyN */;\n case 24 /* ScanCode.KeyO */: return 45 /* KeyCode.KeyO */;\n case 25 /* ScanCode.KeyP */: return 46 /* KeyCode.KeyP */;\n case 26 /* ScanCode.KeyQ */: return 47 /* KeyCode.KeyQ */;\n case 27 /* ScanCode.KeyR */: return 48 /* KeyCode.KeyR */;\n case 28 /* ScanCode.KeyS */: return 49 /* KeyCode.KeyS */;\n case 29 /* ScanCode.KeyT */: return 50 /* KeyCode.KeyT */;\n case 30 /* ScanCode.KeyU */: return 51 /* KeyCode.KeyU */;\n case 31 /* ScanCode.KeyV */: return 52 /* KeyCode.KeyV */;\n case 32 /* ScanCode.KeyW */: return 53 /* KeyCode.KeyW */;\n case 33 /* ScanCode.KeyX */: return 54 /* KeyCode.KeyX */;\n case 34 /* ScanCode.KeyY */: return 55 /* KeyCode.KeyY */;\n case 35 /* ScanCode.KeyZ */: return 56 /* KeyCode.KeyZ */;\n case 36 /* ScanCode.Digit1 */: return 22 /* KeyCode.Digit1 */;\n case 37 /* ScanCode.Digit2 */: return 23 /* KeyCode.Digit2 */;\n case 38 /* ScanCode.Digit3 */: return 24 /* KeyCode.Digit3 */;\n case 39 /* ScanCode.Digit4 */: return 25 /* KeyCode.Digit4 */;\n case 40 /* ScanCode.Digit5 */: return 26 /* KeyCode.Digit5 */;\n case 41 /* ScanCode.Digit6 */: return 27 /* KeyCode.Digit6 */;\n case 42 /* ScanCode.Digit7 */: return 28 /* KeyCode.Digit7 */;\n case 43 /* ScanCode.Digit8 */: return 29 /* KeyCode.Digit8 */;\n case 44 /* ScanCode.Digit9 */: return 30 /* KeyCode.Digit9 */;\n case 45 /* ScanCode.Digit0 */: return 21 /* KeyCode.Digit0 */;\n case 51 /* ScanCode.Minus */: return 83 /* KeyCode.Minus */;\n case 52 /* ScanCode.Equal */: return 81 /* KeyCode.Equal */;\n case 53 /* ScanCode.BracketLeft */: return 87 /* KeyCode.BracketLeft */;\n case 54 /* ScanCode.BracketRight */: return 89 /* KeyCode.BracketRight */;\n case 55 /* ScanCode.Backslash */: return 88 /* KeyCode.Backslash */;\n case 56 /* ScanCode.IntlHash */: return 0 /* KeyCode.Unknown */; // missing\n case 57 /* ScanCode.Semicolon */: return 80 /* KeyCode.Semicolon */;\n case 58 /* ScanCode.Quote */: return 90 /* KeyCode.Quote */;\n case 59 /* ScanCode.Backquote */: return 86 /* KeyCode.Backquote */;\n case 60 /* ScanCode.Comma */: return 82 /* KeyCode.Comma */;\n case 61 /* ScanCode.Period */: return 84 /* KeyCode.Period */;\n case 62 /* ScanCode.Slash */: return 85 /* KeyCode.Slash */;\n case 106 /* ScanCode.IntlBackslash */: return 92 /* KeyCode.IntlBackslash */;\n }\n return 0 /* KeyCode.Unknown */;\n }\n static _resolveSimpleUserBinding(binding) {\n if (!binding) {\n return null;\n }\n if (binding instanceof SimpleKeybinding) {\n return binding;\n }\n const keyCode = this._scanCodeToKeyCode(binding.scanCode);\n if (keyCode === 0 /* KeyCode.Unknown */) {\n return null;\n }\n return new SimpleKeybinding(binding.ctrlKey, binding.shiftKey, binding.altKey, binding.metaKey, keyCode);\n }\n static resolveUserBinding(input, os) {\n const parts = removeElementsAfterNulls(input.map(keybinding => this._resolveSimpleUserBinding(keybinding)));\n if (parts.length > 0) {\n return [new USLayoutResolvedKeybinding(new ChordKeybinding(parts), os)];\n }\n return [];\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { BrowserFeatures } from '../../canIUse.js';\nimport * as DOM from '../../dom.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../common/lifecycle.js';\nimport * as platform from '../../../common/platform.js';\nimport { Range } from '../../../common/range.js';\nimport './contextview.css';\nexport var LayoutAnchorMode;\n(function (LayoutAnchorMode) {\n LayoutAnchorMode[LayoutAnchorMode[\"AVOID\"] = 0] = \"AVOID\";\n LayoutAnchorMode[LayoutAnchorMode[\"ALIGN\"] = 1] = \"ALIGN\";\n})(LayoutAnchorMode || (LayoutAnchorMode = {}));\n/**\n * Lays out a one dimensional view next to an anchor in a viewport.\n *\n * @returns The view offset within the viewport.\n */\nexport function layout(viewportSize, viewSize, anchor) {\n const layoutAfterAnchorBoundary = anchor.mode === LayoutAnchorMode.ALIGN ? anchor.offset : anchor.offset + anchor.size;\n const layoutBeforeAnchorBoundary = anchor.mode === LayoutAnchorMode.ALIGN ? anchor.offset + anchor.size : anchor.offset;\n if (anchor.position === 0 /* LayoutAnchorPosition.Before */) {\n if (viewSize <= viewportSize - layoutAfterAnchorBoundary) {\n return layoutAfterAnchorBoundary; // happy case, lay it out after the anchor\n }\n if (viewSize <= layoutBeforeAnchorBoundary) {\n return layoutBeforeAnchorBoundary - viewSize; // ok case, lay it out before the anchor\n }\n return Math.max(viewportSize - viewSize, 0); // sad case, lay it over the anchor\n }\n else {\n if (viewSize <= layoutBeforeAnchorBoundary) {\n return layoutBeforeAnchorBoundary - viewSize; // happy case, lay it out before the anchor\n }\n if (viewSize <= viewportSize - layoutAfterAnchorBoundary) {\n return layoutAfterAnchorBoundary; // ok case, lay it out after the anchor\n }\n return 0; // sad case, lay it over the anchor\n }\n}\nexport class ContextView extends Disposable {\n constructor(container, domPosition) {\n super();\n this.container = null;\n this.delegate = null;\n this.toDisposeOnClean = Disposable.None;\n this.toDisposeOnSetContainer = Disposable.None;\n this.shadowRoot = null;\n this.shadowRootHostElement = null;\n this.view = DOM.$('.context-view');\n this.useFixedPosition = false;\n this.useShadowDOM = false;\n DOM.hide(this.view);\n this.setContainer(container, domPosition);\n this._register(toDisposable(() => this.setContainer(null, 1 /* ContextViewDOMPosition.ABSOLUTE */)));\n }\n setContainer(container, domPosition) {\n var _a;\n if (this.container) {\n this.toDisposeOnSetContainer.dispose();\n if (this.shadowRoot) {\n this.shadowRoot.removeChild(this.view);\n this.shadowRoot = null;\n (_a = this.shadowRootHostElement) === null || _a === void 0 ? void 0 : _a.remove();\n this.shadowRootHostElement = null;\n }\n else {\n this.container.removeChild(this.view);\n }\n this.container = null;\n }\n if (container) {\n this.container = container;\n this.useFixedPosition = domPosition !== 1 /* ContextViewDOMPosition.ABSOLUTE */;\n this.useShadowDOM = domPosition === 3 /* ContextViewDOMPosition.FIXED_SHADOW */;\n if (this.useShadowDOM) {\n this.shadowRootHostElement = DOM.$('.shadow-root-host');\n this.container.appendChild(this.shadowRootHostElement);\n this.shadowRoot = this.shadowRootHostElement.attachShadow({ mode: 'open' });\n const style = document.createElement('style');\n style.textContent = SHADOW_ROOT_CSS;\n this.shadowRoot.appendChild(style);\n this.shadowRoot.appendChild(this.view);\n this.shadowRoot.appendChild(DOM.$('slot'));\n }\n else {\n this.container.appendChild(this.view);\n }\n const toDisposeOnSetContainer = new DisposableStore();\n ContextView.BUBBLE_UP_EVENTS.forEach(event => {\n toDisposeOnSetContainer.add(DOM.addStandardDisposableListener(this.container, event, (e) => {\n this.onDOMEvent(e, false);\n }));\n });\n ContextView.BUBBLE_DOWN_EVENTS.forEach(event => {\n toDisposeOnSetContainer.add(DOM.addStandardDisposableListener(this.container, event, (e) => {\n this.onDOMEvent(e, true);\n }, true));\n });\n this.toDisposeOnSetContainer = toDisposeOnSetContainer;\n }\n }\n show(delegate) {\n var _a, _b;\n if (this.isVisible()) {\n this.hide();\n }\n // Show static box\n DOM.clearNode(this.view);\n this.view.className = 'context-view';\n this.view.style.top = '0px';\n this.view.style.left = '0px';\n this.view.style.zIndex = '2575';\n this.view.style.position = this.useFixedPosition ? 'fixed' : 'absolute';\n DOM.show(this.view);\n // Render content\n this.toDisposeOnClean = delegate.render(this.view) || Disposable.None;\n // Set active delegate\n this.delegate = delegate;\n // Layout\n this.doLayout();\n // Focus\n (_b = (_a = this.delegate).focus) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n getViewElement() {\n return this.view;\n }\n layout() {\n if (!this.isVisible()) {\n return;\n }\n if (this.delegate.canRelayout === false && !(platform.isIOS && BrowserFeatures.pointerEvents)) {\n this.hide();\n return;\n }\n if (this.delegate.layout) {\n this.delegate.layout();\n }\n this.doLayout();\n }\n doLayout() {\n // Check that we still have a delegate - this.delegate.layout may have hidden\n if (!this.isVisible()) {\n return;\n }\n // Get anchor\n const anchor = this.delegate.getAnchor();\n // Compute around\n let around;\n // Get the element's position and size (to anchor the view)\n if (DOM.isHTMLElement(anchor)) {\n const elementPosition = DOM.getDomNodePagePosition(anchor);\n // In areas where zoom is applied to the element or its ancestors, we need to adjust the size of the element\n // e.g. The title bar has counter zoom behavior meaning it applies the inverse of zoom level.\n // Window Zoom Level: 1.5, Title Bar Zoom: 1/1.5, Size Multiplier: 1.5\n const zoom = DOM.getDomNodeZoomLevel(anchor);\n around = {\n top: elementPosition.top * zoom,\n left: elementPosition.left * zoom,\n width: elementPosition.width * zoom,\n height: elementPosition.height * zoom\n };\n }\n else {\n around = {\n top: anchor.y,\n left: anchor.x,\n width: anchor.width || 1,\n height: anchor.height || 2\n };\n }\n const viewSizeWidth = DOM.getTotalWidth(this.view);\n const viewSizeHeight = DOM.getTotalHeight(this.view);\n const anchorPosition = this.delegate.anchorPosition || 0 /* AnchorPosition.BELOW */;\n const anchorAlignment = this.delegate.anchorAlignment || 0 /* AnchorAlignment.LEFT */;\n const anchorAxisAlignment = this.delegate.anchorAxisAlignment || 0 /* AnchorAxisAlignment.VERTICAL */;\n let top;\n let left;\n if (anchorAxisAlignment === 0 /* AnchorAxisAlignment.VERTICAL */) {\n const verticalAnchor = { offset: around.top - window.pageYOffset, size: around.height, position: anchorPosition === 0 /* AnchorPosition.BELOW */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */ };\n const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* AnchorAlignment.LEFT */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */, mode: LayoutAnchorMode.ALIGN };\n top = layout(window.innerHeight, viewSizeHeight, verticalAnchor) + window.pageYOffset;\n // if view intersects vertically with anchor, we must avoid the anchor\n if (Range.intersects({ start: top, end: top + viewSizeHeight }, { start: verticalAnchor.offset, end: verticalAnchor.offset + verticalAnchor.size })) {\n horizontalAnchor.mode = LayoutAnchorMode.AVOID;\n }\n left = layout(window.innerWidth, viewSizeWidth, horizontalAnchor);\n }\n else {\n const horizontalAnchor = { offset: around.left, size: around.width, position: anchorAlignment === 0 /* AnchorAlignment.LEFT */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */ };\n const verticalAnchor = { offset: around.top, size: around.height, position: anchorPosition === 0 /* AnchorPosition.BELOW */ ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */, mode: LayoutAnchorMode.ALIGN };\n left = layout(window.innerWidth, viewSizeWidth, horizontalAnchor);\n // if view intersects horizontally with anchor, we must avoid the anchor\n if (Range.intersects({ start: left, end: left + viewSizeWidth }, { start: horizontalAnchor.offset, end: horizontalAnchor.offset + horizontalAnchor.size })) {\n verticalAnchor.mode = LayoutAnchorMode.AVOID;\n }\n top = layout(window.innerHeight, viewSizeHeight, verticalAnchor) + window.pageYOffset;\n }\n this.view.classList.remove('top', 'bottom', 'left', 'right');\n this.view.classList.add(anchorPosition === 0 /* AnchorPosition.BELOW */ ? 'bottom' : 'top');\n this.view.classList.add(anchorAlignment === 0 /* AnchorAlignment.LEFT */ ? 'left' : 'right');\n this.view.classList.toggle('fixed', this.useFixedPosition);\n const containerPosition = DOM.getDomNodePagePosition(this.container);\n this.view.style.top = `${top - (this.useFixedPosition ? DOM.getDomNodePagePosition(this.view).top : containerPosition.top)}px`;\n this.view.style.left = `${left - (this.useFixedPosition ? DOM.getDomNodePagePosition(this.view).left : containerPosition.left)}px`;\n this.view.style.width = 'initial';\n }\n hide(data) {\n const delegate = this.delegate;\n this.delegate = null;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.onHide) {\n delegate.onHide(data);\n }\n this.toDisposeOnClean.dispose();\n DOM.hide(this.view);\n }\n isVisible() {\n return !!this.delegate;\n }\n onDOMEvent(e, onCapture) {\n if (this.delegate) {\n if (this.delegate.onDOMEvent) {\n this.delegate.onDOMEvent(e, document.activeElement);\n }\n else if (onCapture && !DOM.isAncestor(e.target, this.container)) {\n this.hide();\n }\n }\n }\n dispose() {\n this.hide();\n super.dispose();\n }\n}\nContextView.BUBBLE_UP_EVENTS = ['click', 'keydown', 'focus', 'blur'];\nContextView.BUBBLE_DOWN_EVENTS = ['click'];\nconst SHADOW_ROOT_CSS = /* css */ `\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t@font-face {\n\t\tfont-family: \"codicon\";\n\t\tfont-display: block;\n\t\tsrc: url(\"./codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6\") format(\"truetype\");\n\t}\n\n\t.codicon[class*='codicon-'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe WPC\", \"Segoe UI\", \"HelveticaNeue-Light\", system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Hiragino Sans GB\", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang TC\", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, \"Hiragino Kaku Gothic Pro\", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, \"Nanum Gothic\", \"Apple SD Gothic Neo\", \"AppleGothic\", sans-serif; }\n\n\t:host-context(.windows) { font-family: \"Segoe WPC\", \"Segoe UI\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft YaHei\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft Jhenghei\", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Yu Gothic UI\", \"Meiryo UI\", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Malgun Gothic\", \"Dotom\", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans SC\", \"Source Han Sans CN\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans TC\", \"Source Han Sans TW\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans J\", \"Source Han Sans JP\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans K\", \"Source Han Sans JR\", \"Source Han Sans\", \"UnDotum\", \"FBaekmuk Gulim\", sans-serif; }\n`;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { ContextView } from '../../../base/browser/ui/contextview/contextview.js';\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\nlet ContextViewService = class ContextViewService extends Disposable {\n constructor(layoutService) {\n super();\n this.layoutService = layoutService;\n this.currentViewDisposable = Disposable.None;\n this.container = layoutService.hasContainer ? layoutService.container : null;\n this.contextView = this._register(new ContextView(this.container, 1 /* ContextViewDOMPosition.ABSOLUTE */));\n this.layout();\n this._register(layoutService.onDidLayout(() => this.layout()));\n }\n // ContextView\n setContainer(container, domPosition) {\n this.contextView.setContainer(container, domPosition || 1 /* ContextViewDOMPosition.ABSOLUTE */);\n }\n showContextView(delegate, container, shadowRoot) {\n if (container) {\n if (container !== this.container || this.shadowRoot !== shadowRoot) {\n this.container = container;\n this.setContainer(container, shadowRoot ? 3 /* ContextViewDOMPosition.FIXED_SHADOW */ : 2 /* ContextViewDOMPosition.FIXED */);\n }\n }\n else {\n if (this.layoutService.hasContainer && this.container !== this.layoutService.container) {\n this.container = this.layoutService.container;\n this.setContainer(this.container, 1 /* ContextViewDOMPosition.ABSOLUTE */);\n }\n }\n this.shadowRoot = shadowRoot;\n this.contextView.show(delegate);\n const disposable = toDisposable(() => {\n if (this.currentViewDisposable === disposable) {\n this.hideContextView();\n }\n });\n this.currentViewDisposable = disposable;\n return disposable;\n }\n getContextViewElement() {\n return this.contextView.getViewElement();\n }\n layout() {\n this.contextView.layout();\n }\n hideContextView(data) {\n this.contextView.hide(data);\n }\n};\nContextViewService = __decorate([\n __param(0, ILayoutService)\n], ContextViewService);\nexport { ContextViewService };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { isThenable } from './async.js';\nimport { isEqualOrParent } from './extpath.js';\nimport { LRUCache } from './map.js';\nimport { basename, extname, posix, sep } from './path.js';\nimport { isLinux } from './platform.js';\nimport { escapeRegExpCharacters } from './strings.js';\nexport const GLOBSTAR = '**';\nexport const GLOB_SPLIT = '/';\nconst PATH_REGEX = '[/\\\\\\\\]'; // any slash or backslash\nconst NO_PATH_REGEX = '[^/\\\\\\\\]'; // any non-slash and non-backslash\nconst ALL_FORWARD_SLASHES = /\\//g;\nfunction starsToRegExp(starCount, isLastPattern) {\n switch (starCount) {\n case 0:\n return '';\n case 1:\n return `${NO_PATH_REGEX}*?`; // 1 star matches any number of characters except path separator (/ and \\) - non greedy (?)\n default:\n // Matches: (Path Sep OR Path Val followed by Path Sep) 0-many times except when it's the last pattern\n // in which case also matches (Path Sep followed by Path Val)\n // Group is non capturing because we don't need to capture at all (?:...)\n // Overall we use non-greedy matching because it could be that we match too much\n return `(?:${PATH_REGEX}|${NO_PATH_REGEX}+${PATH_REGEX}${isLastPattern ? `|${PATH_REGEX}${NO_PATH_REGEX}+` : ''})*?`;\n }\n}\nexport function splitGlobAware(pattern, splitChar) {\n if (!pattern) {\n return [];\n }\n const segments = [];\n let inBraces = false;\n let inBrackets = false;\n let curVal = '';\n for (const char of pattern) {\n switch (char) {\n case splitChar:\n if (!inBraces && !inBrackets) {\n segments.push(curVal);\n curVal = '';\n continue;\n }\n break;\n case '{':\n inBraces = true;\n break;\n case '}':\n inBraces = false;\n break;\n case '[':\n inBrackets = true;\n break;\n case ']':\n inBrackets = false;\n break;\n }\n curVal += char;\n }\n // Tail\n if (curVal) {\n segments.push(curVal);\n }\n return segments;\n}\nfunction parseRegExp(pattern) {\n if (!pattern) {\n return '';\n }\n let regEx = '';\n // Split up into segments for each slash found\n const segments = splitGlobAware(pattern, GLOB_SPLIT);\n // Special case where we only have globstars\n if (segments.every(segment => segment === GLOBSTAR)) {\n regEx = '.*';\n }\n // Build regex over segments\n else {\n let previousSegmentWasGlobStar = false;\n segments.forEach((segment, index) => {\n // Treat globstar specially\n if (segment === GLOBSTAR) {\n // if we have more than one globstar after another, just ignore it\n if (previousSegmentWasGlobStar) {\n return;\n }\n regEx += starsToRegExp(2, index === segments.length - 1);\n }\n // Anything else, not globstar\n else {\n // States\n let inBraces = false;\n let braceVal = '';\n let inBrackets = false;\n let bracketVal = '';\n for (const char of segment) {\n // Support brace expansion\n if (char !== '}' && inBraces) {\n braceVal += char;\n continue;\n }\n // Support brackets\n if (inBrackets && (char !== ']' || !bracketVal) /* ] is literally only allowed as first character in brackets to match it */) {\n let res;\n // range operator\n if (char === '-') {\n res = char;\n }\n // negation operator (only valid on first index in bracket)\n else if ((char === '^' || char === '!') && !bracketVal) {\n res = '^';\n }\n // glob split matching is not allowed within character ranges\n // see http://man7.org/linux/man-pages/man7/glob.7.html\n else if (char === GLOB_SPLIT) {\n res = '';\n }\n // anything else gets escaped\n else {\n res = escapeRegExpCharacters(char);\n }\n bracketVal += res;\n continue;\n }\n switch (char) {\n case '{':\n inBraces = true;\n continue;\n case '[':\n inBrackets = true;\n continue;\n case '}': {\n const choices = splitGlobAware(braceVal, ',');\n // Converts {foo,bar} => [foo|bar]\n const braceRegExp = `(?:${choices.map(choice => parseRegExp(choice)).join('|')})`;\n regEx += braceRegExp;\n inBraces = false;\n braceVal = '';\n break;\n }\n case ']': {\n regEx += ('[' + bracketVal + ']');\n inBrackets = false;\n bracketVal = '';\n break;\n }\n case '?':\n regEx += NO_PATH_REGEX; // 1 ? matches any single character except path separator (/ and \\)\n continue;\n case '*':\n regEx += starsToRegExp(1);\n continue;\n default:\n regEx += escapeRegExpCharacters(char);\n }\n }\n // Tail: Add the slash we had split on if there is more to\n // come and the remaining pattern is not a globstar\n // For example if pattern: some/**/*.js we want the \"/\" after\n // some to be included in the RegEx to prevent a folder called\n // \"something\" to match as well.\n if (index < segments.length - 1 && // more segments to come after this\n (segments[index + 1] !== GLOBSTAR || // next segment is not **, or...\n index + 2 < segments.length // ...next segment is ** but there is more segments after that\n )) {\n regEx += PATH_REGEX;\n }\n }\n // update globstar state\n previousSegmentWasGlobStar = (segment === GLOBSTAR);\n });\n }\n return regEx;\n}\n// regexes to check for trivial glob patterns that just check for String#endsWith\nconst T1 = /^\\*\\*\\/\\*\\.[\\w\\.-]+$/; // **/*.something\nconst T2 = /^\\*\\*\\/([\\w\\.-]+)\\/?$/; // **/something\nconst T3 = /^{\\*\\*\\/\\*?[\\w\\.-]+\\/?(,\\*\\*\\/\\*?[\\w\\.-]+\\/?)*}$/; // {**/*.something,**/*.else} or {**/package.json,**/project.json}\nconst T3_2 = /^{\\*\\*\\/\\*?[\\w\\.-]+(\\/(\\*\\*)?)?(,\\*\\*\\/\\*?[\\w\\.-]+(\\/(\\*\\*)?)?)*}$/; // Like T3, with optional trailing /**\nconst T4 = /^\\*\\*((\\/[\\w\\.-]+)+)\\/?$/; // **/something/else\nconst T5 = /^([\\w\\.-]+(\\/[\\w\\.-]+)*)\\/?$/; // something/else\nconst CACHE = new LRUCache(10000); // bounded to 10000 elements\nconst FALSE = function () {\n return false;\n};\nconst NULL = function () {\n return null;\n};\nfunction parsePattern(arg1, options) {\n if (!arg1) {\n return NULL;\n }\n // Handle relative patterns\n let pattern;\n if (typeof arg1 !== 'string') {\n pattern = arg1.pattern;\n }\n else {\n pattern = arg1;\n }\n // Whitespace trimming\n pattern = pattern.trim();\n // Check cache\n const patternKey = `${pattern}_${!!options.trimForExclusions}`;\n let parsedPattern = CACHE.get(patternKey);\n if (parsedPattern) {\n return wrapRelativePattern(parsedPattern, arg1);\n }\n // Check for Trivials\n let match;\n if (T1.test(pattern)) {\n parsedPattern = trivia1(pattern.substr(4), pattern); // common pattern: **/*.txt just need endsWith check\n }\n else if (match = T2.exec(trimForExclusions(pattern, options))) { // common pattern: **/some.txt just need basename check\n parsedPattern = trivia2(match[1], pattern);\n }\n else if ((options.trimForExclusions ? T3_2 : T3).test(pattern)) { // repetition of common patterns (see above) {**/*.txt,**/*.png}\n parsedPattern = trivia3(pattern, options);\n }\n else if (match = T4.exec(trimForExclusions(pattern, options))) { // common pattern: **/something/else just need endsWith check\n parsedPattern = trivia4and5(match[1].substr(1), pattern, true);\n }\n else if (match = T5.exec(trimForExclusions(pattern, options))) { // common pattern: something/else just need equals check\n parsedPattern = trivia4and5(match[1], pattern, false);\n }\n // Otherwise convert to pattern\n else {\n parsedPattern = toRegExp(pattern);\n }\n // Cache\n CACHE.set(patternKey, parsedPattern);\n return wrapRelativePattern(parsedPattern, arg1);\n}\nfunction wrapRelativePattern(parsedPattern, arg2) {\n if (typeof arg2 === 'string') {\n return parsedPattern;\n }\n const wrappedPattern = function (path, basename) {\n if (!isEqualOrParent(path, arg2.base, !isLinux)) {\n // skip glob matching if `base` is not a parent of `path`\n return null;\n }\n // Given we have checked `base` being a parent of `path`,\n // we can now remove the `base` portion of the `path`\n // and only match on the remaining path components\n return parsedPattern(path.substr(arg2.base.length + 1), basename);\n };\n // Make sure to preserve associated metadata\n wrappedPattern.allBasenames = parsedPattern.allBasenames;\n wrappedPattern.allPaths = parsedPattern.allPaths;\n wrappedPattern.basenames = parsedPattern.basenames;\n wrappedPattern.patterns = parsedPattern.patterns;\n return wrappedPattern;\n}\nfunction trimForExclusions(pattern, options) {\n return options.trimForExclusions && pattern.endsWith('/**') ? pattern.substr(0, pattern.length - 2) : pattern; // dropping **, tailing / is dropped later\n}\n// common pattern: **/*.txt just need endsWith check\nfunction trivia1(base, pattern) {\n return function (path, basename) {\n return typeof path === 'string' && path.endsWith(base) ? pattern : null;\n };\n}\n// common pattern: **/some.txt just need basename check\nfunction trivia2(base, pattern) {\n const slashBase = `/${base}`;\n const backslashBase = `\\\\${base}`;\n const parsedPattern = function (path, basename) {\n if (typeof path !== 'string') {\n return null;\n }\n if (basename) {\n return basename === base ? pattern : null;\n }\n return path === base || path.endsWith(slashBase) || path.endsWith(backslashBase) ? pattern : null;\n };\n const basenames = [base];\n parsedPattern.basenames = basenames;\n parsedPattern.patterns = [pattern];\n parsedPattern.allBasenames = basenames;\n return parsedPattern;\n}\n// repetition of common patterns (see above) {**/*.txt,**/*.png}\nfunction trivia3(pattern, options) {\n const parsedPatterns = aggregateBasenameMatches(pattern.slice(1, -1)\n .split(',')\n .map(pattern => parsePattern(pattern, options))\n .filter(pattern => pattern !== NULL), pattern);\n const patternsLength = parsedPatterns.length;\n if (!patternsLength) {\n return NULL;\n }\n if (patternsLength === 1) {\n return parsedPatterns[0];\n }\n const parsedPattern = function (path, basename) {\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\n if (parsedPatterns[i](path, basename)) {\n return pattern;\n }\n }\n return null;\n };\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\n if (withBasenames) {\n parsedPattern.allBasenames = withBasenames.allBasenames;\n }\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\n if (allPaths.length) {\n parsedPattern.allPaths = allPaths;\n }\n return parsedPattern;\n}\n// common patterns: **/something/else just need endsWith check, something/else just needs and equals check\nfunction trivia4and5(targetPath, pattern, matchPathEnds) {\n const usingPosixSep = sep === posix.sep;\n const nativePath = usingPosixSep ? targetPath : targetPath.replace(ALL_FORWARD_SLASHES, sep);\n const nativePathEnd = sep + nativePath;\n const targetPathEnd = posix.sep + targetPath;\n let parsedPattern;\n if (matchPathEnds) {\n parsedPattern = function (path, basename) {\n return typeof path === 'string' && ((path === nativePath || path.endsWith(nativePathEnd)) || !usingPosixSep && (path === targetPath || path.endsWith(targetPathEnd))) ? pattern : null;\n };\n }\n else {\n parsedPattern = function (path, basename) {\n return typeof path === 'string' && (path === nativePath || (!usingPosixSep && path === targetPath)) ? pattern : null;\n };\n }\n parsedPattern.allPaths = [(matchPathEnds ? '*/' : './') + targetPath];\n return parsedPattern;\n}\nfunction toRegExp(pattern) {\n try {\n const regExp = new RegExp(`^${parseRegExp(pattern)}$`);\n return function (path) {\n regExp.lastIndex = 0; // reset RegExp to its initial state to reuse it!\n return typeof path === 'string' && regExp.test(path) ? pattern : null;\n };\n }\n catch (error) {\n return NULL;\n }\n}\nexport function match(arg1, path, hasSibling) {\n if (!arg1 || typeof path !== 'string') {\n return false;\n }\n return parse(arg1)(path, undefined, hasSibling);\n}\nexport function parse(arg1, options = {}) {\n if (!arg1) {\n return FALSE;\n }\n // Glob with String\n if (typeof arg1 === 'string' || isRelativePattern(arg1)) {\n const parsedPattern = parsePattern(arg1, options);\n if (parsedPattern === NULL) {\n return FALSE;\n }\n const resultPattern = function (path, basename) {\n return !!parsedPattern(path, basename);\n };\n if (parsedPattern.allBasenames) {\n resultPattern.allBasenames = parsedPattern.allBasenames;\n }\n if (parsedPattern.allPaths) {\n resultPattern.allPaths = parsedPattern.allPaths;\n }\n return resultPattern;\n }\n // Glob with Expression\n return parsedExpression(arg1, options);\n}\nexport function isRelativePattern(obj) {\n const rp = obj;\n if (!rp) {\n return false;\n }\n return typeof rp.base === 'string' && typeof rp.pattern === 'string';\n}\nfunction parsedExpression(expression, options) {\n const parsedPatterns = aggregateBasenameMatches(Object.getOwnPropertyNames(expression)\n .map(pattern => parseExpressionPattern(pattern, expression[pattern], options))\n .filter(pattern => pattern !== NULL));\n const patternsLength = parsedPatterns.length;\n if (!patternsLength) {\n return NULL;\n }\n if (!parsedPatterns.some(parsedPattern => !!parsedPattern.requiresSiblings)) {\n if (patternsLength === 1) {\n return parsedPatterns[0];\n }\n const resultExpression = function (path, basename) {\n let resultPromises = undefined;\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\n const result = parsedPatterns[i](path, basename);\n if (typeof result === 'string') {\n return result; // immediately return as soon as the first expression matches\n }\n // If the result is a promise, we have to keep it for\n // later processing and await the result properly.\n if (isThenable(result)) {\n if (!resultPromises) {\n resultPromises = [];\n }\n resultPromises.push(result);\n }\n }\n // With result promises, we have to loop over each and\n // await the result before we can return any result.\n if (resultPromises) {\n return (() => __awaiter(this, void 0, void 0, function* () {\n for (const resultPromise of resultPromises) {\n const result = yield resultPromise;\n if (typeof result === 'string') {\n return result;\n }\n }\n return null;\n }))();\n }\n return null;\n };\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\n if (withBasenames) {\n resultExpression.allBasenames = withBasenames.allBasenames;\n }\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\n if (allPaths.length) {\n resultExpression.allPaths = allPaths;\n }\n return resultExpression;\n }\n const resultExpression = function (path, base, hasSibling) {\n let name = undefined;\n let resultPromises = undefined;\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\n // Pattern matches path\n const parsedPattern = parsedPatterns[i];\n if (parsedPattern.requiresSiblings && hasSibling) {\n if (!base) {\n base = basename(path);\n }\n if (!name) {\n name = base.substr(0, base.length - extname(path).length);\n }\n }\n const result = parsedPattern(path, base, name, hasSibling);\n if (typeof result === 'string') {\n return result; // immediately return as soon as the first expression matches\n }\n // If the result is a promise, we have to keep it for\n // later processing and await the result properly.\n if (isThenable(result)) {\n if (!resultPromises) {\n resultPromises = [];\n }\n resultPromises.push(result);\n }\n }\n // With result promises, we have to loop over each and\n // await the result before we can return any result.\n if (resultPromises) {\n return (() => __awaiter(this, void 0, void 0, function* () {\n for (const resultPromise of resultPromises) {\n const result = yield resultPromise;\n if (typeof result === 'string') {\n return result;\n }\n }\n return null;\n }))();\n }\n return null;\n };\n const withBasenames = parsedPatterns.find(pattern => !!pattern.allBasenames);\n if (withBasenames) {\n resultExpression.allBasenames = withBasenames.allBasenames;\n }\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\n if (allPaths.length) {\n resultExpression.allPaths = allPaths;\n }\n return resultExpression;\n}\nfunction parseExpressionPattern(pattern, value, options) {\n if (value === false) {\n return NULL; // pattern is disabled\n }\n const parsedPattern = parsePattern(pattern, options);\n if (parsedPattern === NULL) {\n return NULL;\n }\n // Expression Pattern is \n if (typeof value === 'boolean') {\n return parsedPattern;\n }\n // Expression Pattern is \n if (value) {\n const when = value.when;\n if (typeof when === 'string') {\n const result = (path, basename, name, hasSibling) => {\n if (!hasSibling || !parsedPattern(path, basename)) {\n return null;\n }\n const clausePattern = when.replace('$(basename)', name);\n const matched = hasSibling(clausePattern);\n return isThenable(matched) ?\n matched.then(match => match ? pattern : null) :\n matched ? pattern : null;\n };\n result.requiresSiblings = true;\n return result;\n }\n }\n // Expression is anything\n return parsedPattern;\n}\nfunction aggregateBasenameMatches(parsedPatterns, result) {\n const basenamePatterns = parsedPatterns.filter(parsedPattern => !!parsedPattern.basenames);\n if (basenamePatterns.length < 2) {\n return parsedPatterns;\n }\n const basenames = basenamePatterns.reduce((all, current) => {\n const basenames = current.basenames;\n return basenames ? all.concat(basenames) : all;\n }, []);\n let patterns;\n if (result) {\n patterns = [];\n for (let i = 0, n = basenames.length; i < n; i++) {\n patterns.push(result);\n }\n }\n else {\n patterns = basenamePatterns.reduce((all, current) => {\n const patterns = current.patterns;\n return patterns ? all.concat(patterns) : all;\n }, []);\n }\n const aggregate = function (path, basename) {\n if (typeof path !== 'string') {\n return null;\n }\n if (!basename) {\n let i;\n for (i = path.length; i > 0; i--) {\n const ch = path.charCodeAt(i - 1);\n if (ch === 47 /* CharCode.Slash */ || ch === 92 /* CharCode.Backslash */) {\n break;\n }\n }\n basename = path.substr(i);\n }\n const index = basenames.indexOf(basename);\n return index !== -1 ? patterns[index] : null;\n };\n aggregate.basenames = basenames;\n aggregate.patterns = patterns;\n aggregate.allBasenames = basenames;\n const aggregatedPatterns = parsedPatterns.filter(parsedPattern => !parsedPattern.basenames);\n aggregatedPatterns.push(aggregate);\n return aggregatedPatterns;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { parse } from '../../../base/common/glob.js';\nimport { Mimes } from '../../../base/common/mime.js';\nimport { Schemas } from '../../../base/common/network.js';\nimport { basename, posix } from '../../../base/common/path.js';\nimport { DataUri } from '../../../base/common/resources.js';\nimport { startsWithUTF8BOM } from '../../../base/common/strings.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nlet registeredAssociations = [];\nlet nonUserRegisteredAssociations = [];\nlet userRegisteredAssociations = [];\n/**\n * Associate a language to the registry (platform).\n * * **NOTE**: This association will lose over associations registered using `registerConfiguredLanguageAssociation`.\n * * **NOTE**: Use `clearPlatformLanguageAssociations` to remove all associations registered using this function.\n */\nexport function registerPlatformLanguageAssociation(association, warnOnOverwrite = false) {\n _registerLanguageAssociation(association, false, warnOnOverwrite);\n}\nfunction _registerLanguageAssociation(association, userConfigured, warnOnOverwrite) {\n // Register\n const associationItem = toLanguageAssociationItem(association, userConfigured);\n registeredAssociations.push(associationItem);\n if (!associationItem.userConfigured) {\n nonUserRegisteredAssociations.push(associationItem);\n }\n else {\n userRegisteredAssociations.push(associationItem);\n }\n // Check for conflicts unless this is a user configured association\n if (warnOnOverwrite && !associationItem.userConfigured) {\n registeredAssociations.forEach(a => {\n if (a.mime === associationItem.mime || a.userConfigured) {\n return; // same mime or userConfigured is ok\n }\n if (associationItem.extension && a.extension === associationItem.extension) {\n console.warn(`Overwriting extension <<${associationItem.extension}>> to now point to mime <<${associationItem.mime}>>`);\n }\n if (associationItem.filename && a.filename === associationItem.filename) {\n console.warn(`Overwriting filename <<${associationItem.filename}>> to now point to mime <<${associationItem.mime}>>`);\n }\n if (associationItem.filepattern && a.filepattern === associationItem.filepattern) {\n console.warn(`Overwriting filepattern <<${associationItem.filepattern}>> to now point to mime <<${associationItem.mime}>>`);\n }\n if (associationItem.firstline && a.firstline === associationItem.firstline) {\n console.warn(`Overwriting firstline <<${associationItem.firstline}>> to now point to mime <<${associationItem.mime}>>`);\n }\n });\n }\n}\nfunction toLanguageAssociationItem(association, userConfigured) {\n return {\n id: association.id,\n mime: association.mime,\n filename: association.filename,\n extension: association.extension,\n filepattern: association.filepattern,\n firstline: association.firstline,\n userConfigured: userConfigured,\n filenameLowercase: association.filename ? association.filename.toLowerCase() : undefined,\n extensionLowercase: association.extension ? association.extension.toLowerCase() : undefined,\n filepatternLowercase: association.filepattern ? parse(association.filepattern.toLowerCase()) : undefined,\n filepatternOnPath: association.filepattern ? association.filepattern.indexOf(posix.sep) >= 0 : false\n };\n}\n/**\n * Clear language associations from the registry (platform).\n */\nexport function clearPlatformLanguageAssociations() {\n registeredAssociations = registeredAssociations.filter(a => a.userConfigured);\n nonUserRegisteredAssociations = [];\n}\n/**\n * @see `getMimeTypes`\n */\nexport function getLanguageIds(resource, firstLine) {\n return getAssociations(resource, firstLine).map(item => item.id);\n}\nfunction getAssociations(resource, firstLine) {\n let path;\n if (resource) {\n switch (resource.scheme) {\n case Schemas.file:\n path = resource.fsPath;\n break;\n case Schemas.data: {\n const metadata = DataUri.parseMetaData(resource);\n path = metadata.get(DataUri.META_DATA_LABEL);\n break;\n }\n case Schemas.vscodeNotebookCell:\n // File path not relevant for language detection of cell\n path = undefined;\n break;\n default:\n path = resource.path;\n }\n }\n if (!path) {\n return [{ id: 'unknown', mime: Mimes.unknown }];\n }\n path = path.toLowerCase();\n const filename = basename(path);\n // 1.) User configured mappings have highest priority\n const configuredLanguage = getAssociationByPath(path, filename, userRegisteredAssociations);\n if (configuredLanguage) {\n return [configuredLanguage, { id: PLAINTEXT_LANGUAGE_ID, mime: Mimes.text }];\n }\n // 2.) Registered mappings have middle priority\n const registeredLanguage = getAssociationByPath(path, filename, nonUserRegisteredAssociations);\n if (registeredLanguage) {\n return [registeredLanguage, { id: PLAINTEXT_LANGUAGE_ID, mime: Mimes.text }];\n }\n // 3.) Firstline has lowest priority\n if (firstLine) {\n const firstlineLanguage = getAssociationByFirstline(firstLine);\n if (firstlineLanguage) {\n return [firstlineLanguage, { id: PLAINTEXT_LANGUAGE_ID, mime: Mimes.text }];\n }\n }\n return [{ id: 'unknown', mime: Mimes.unknown }];\n}\nfunction getAssociationByPath(path, filename, associations) {\n var _a;\n let filenameMatch = undefined;\n let patternMatch = undefined;\n let extensionMatch = undefined;\n // We want to prioritize associations based on the order they are registered so that the last registered\n // association wins over all other. This is for https://github.com/microsoft/vscode/issues/20074\n for (let i = associations.length - 1; i >= 0; i--) {\n const association = associations[i];\n // First exact name match\n if (filename === association.filenameLowercase) {\n filenameMatch = association;\n break; // take it!\n }\n // Longest pattern match\n if (association.filepattern) {\n if (!patternMatch || association.filepattern.length > patternMatch.filepattern.length) {\n const target = association.filepatternOnPath ? path : filename; // match on full path if pattern contains path separator\n if ((_a = association.filepatternLowercase) === null || _a === void 0 ? void 0 : _a.call(association, target)) {\n patternMatch = association;\n }\n }\n }\n // Longest extension match\n if (association.extension) {\n if (!extensionMatch || association.extension.length > extensionMatch.extension.length) {\n if (filename.endsWith(association.extensionLowercase)) {\n extensionMatch = association;\n }\n }\n }\n }\n // 1.) Exact name match has second highest priority\n if (filenameMatch) {\n return filenameMatch;\n }\n // 2.) Match on pattern\n if (patternMatch) {\n return patternMatch;\n }\n // 3.) Match on extension comes next\n if (extensionMatch) {\n return extensionMatch;\n }\n return undefined;\n}\nfunction getAssociationByFirstline(firstLine) {\n if (startsWithUTF8BOM(firstLine)) {\n firstLine = firstLine.substr(1);\n }\n if (firstLine.length > 0) {\n // We want to prioritize associations based on the order they are registered so that the last registered\n // association wins over all other. This is for https://github.com/microsoft/vscode/issues/20074\n for (let i = registeredAssociations.length - 1; i >= 0; i--) {\n const association = registeredAssociations[i];\n if (!association.firstline) {\n continue;\n }\n const matches = firstLine.match(association.firstline);\n if (matches && matches.length > 0) {\n return association;\n }\n }\n }\n return undefined;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { onUnexpectedError } from '../../../base/common/errors.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { regExpLeadsToEndlessLoop } from '../../../base/common/strings.js';\nimport { clearPlatformLanguageAssociations, getLanguageIds, registerPlatformLanguageAssociation } from './languagesAssociations.js';\nimport { ModesRegistry, PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nimport { Extensions } from '../../../platform/configuration/common/configurationRegistry.js';\nimport { Registry } from '../../../platform/registry/common/platform.js';\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst NULL_LANGUAGE_ID = 'vs.editor.nullLanguage';\nexport class LanguageIdCodec {\n constructor() {\n this._languageIdToLanguage = [];\n this._languageToLanguageId = new Map();\n this._register(NULL_LANGUAGE_ID, 0 /* LanguageId.Null */);\n this._register(PLAINTEXT_LANGUAGE_ID, 1 /* LanguageId.PlainText */);\n this._nextLanguageId = 2;\n }\n _register(language, languageId) {\n this._languageIdToLanguage[languageId] = language;\n this._languageToLanguageId.set(language, languageId);\n }\n register(language) {\n if (this._languageToLanguageId.has(language)) {\n return;\n }\n const languageId = this._nextLanguageId++;\n this._register(language, languageId);\n }\n encodeLanguageId(languageId) {\n return this._languageToLanguageId.get(languageId) || 0 /* LanguageId.Null */;\n }\n decodeLanguageId(languageId) {\n return this._languageIdToLanguage[languageId] || NULL_LANGUAGE_ID;\n }\n}\nexport class LanguagesRegistry extends Disposable {\n constructor(useModesRegistry = true, warnOnOverwrite = false) {\n super();\n this._onDidChange = this._register(new Emitter());\n this.onDidChange = this._onDidChange.event;\n LanguagesRegistry.instanceCount++;\n this._warnOnOverwrite = warnOnOverwrite;\n this.languageIdCodec = new LanguageIdCodec();\n this._dynamicLanguages = [];\n this._languages = {};\n this._mimeTypesMap = {};\n this._nameMap = {};\n this._lowercaseNameMap = {};\n if (useModesRegistry) {\n this._initializeFromRegistry();\n this._register(ModesRegistry.onDidChangeLanguages((m) => {\n this._initializeFromRegistry();\n }));\n }\n }\n dispose() {\n LanguagesRegistry.instanceCount--;\n super.dispose();\n }\n _initializeFromRegistry() {\n this._languages = {};\n this._mimeTypesMap = {};\n this._nameMap = {};\n this._lowercaseNameMap = {};\n clearPlatformLanguageAssociations();\n const desc = [].concat(ModesRegistry.getLanguages()).concat(this._dynamicLanguages);\n this._registerLanguages(desc);\n }\n _registerLanguages(desc) {\n for (const d of desc) {\n this._registerLanguage(d);\n }\n // Rebuild fast path maps\n this._mimeTypesMap = {};\n this._nameMap = {};\n this._lowercaseNameMap = {};\n Object.keys(this._languages).forEach((langId) => {\n const language = this._languages[langId];\n if (language.name) {\n this._nameMap[language.name] = language.identifier;\n }\n language.aliases.forEach((alias) => {\n this._lowercaseNameMap[alias.toLowerCase()] = language.identifier;\n });\n language.mimetypes.forEach((mimetype) => {\n this._mimeTypesMap[mimetype] = language.identifier;\n });\n });\n Registry.as(Extensions.Configuration).registerOverrideIdentifiers(this.getRegisteredLanguageIds());\n this._onDidChange.fire();\n }\n _registerLanguage(lang) {\n const langId = lang.id;\n let resolvedLanguage;\n if (hasOwnProperty.call(this._languages, langId)) {\n resolvedLanguage = this._languages[langId];\n }\n else {\n this.languageIdCodec.register(langId);\n resolvedLanguage = {\n identifier: langId,\n name: null,\n mimetypes: [],\n aliases: [],\n extensions: [],\n filenames: [],\n configurationFiles: [],\n icons: []\n };\n this._languages[langId] = resolvedLanguage;\n }\n this._mergeLanguage(resolvedLanguage, lang);\n }\n _mergeLanguage(resolvedLanguage, lang) {\n const langId = lang.id;\n let primaryMime = null;\n if (Array.isArray(lang.mimetypes) && lang.mimetypes.length > 0) {\n resolvedLanguage.mimetypes.push(...lang.mimetypes);\n primaryMime = lang.mimetypes[0];\n }\n if (!primaryMime) {\n primaryMime = `text/x-${langId}`;\n resolvedLanguage.mimetypes.push(primaryMime);\n }\n if (Array.isArray(lang.extensions)) {\n if (lang.configuration) {\n // insert first as this appears to be the 'primary' language definition\n resolvedLanguage.extensions = lang.extensions.concat(resolvedLanguage.extensions);\n }\n else {\n resolvedLanguage.extensions = resolvedLanguage.extensions.concat(lang.extensions);\n }\n for (const extension of lang.extensions) {\n registerPlatformLanguageAssociation({ id: langId, mime: primaryMime, extension: extension }, this._warnOnOverwrite);\n }\n }\n if (Array.isArray(lang.filenames)) {\n for (const filename of lang.filenames) {\n registerPlatformLanguageAssociation({ id: langId, mime: primaryMime, filename: filename }, this._warnOnOverwrite);\n resolvedLanguage.filenames.push(filename);\n }\n }\n if (Array.isArray(lang.filenamePatterns)) {\n for (const filenamePattern of lang.filenamePatterns) {\n registerPlatformLanguageAssociation({ id: langId, mime: primaryMime, filepattern: filenamePattern }, this._warnOnOverwrite);\n }\n }\n if (typeof lang.firstLine === 'string' && lang.firstLine.length > 0) {\n let firstLineRegexStr = lang.firstLine;\n if (firstLineRegexStr.charAt(0) !== '^') {\n firstLineRegexStr = '^' + firstLineRegexStr;\n }\n try {\n const firstLineRegex = new RegExp(firstLineRegexStr);\n if (!regExpLeadsToEndlessLoop(firstLineRegex)) {\n registerPlatformLanguageAssociation({ id: langId, mime: primaryMime, firstline: firstLineRegex }, this._warnOnOverwrite);\n }\n }\n catch (err) {\n // Most likely, the regex was bad\n onUnexpectedError(err);\n }\n }\n resolvedLanguage.aliases.push(langId);\n let langAliases = null;\n if (typeof lang.aliases !== 'undefined' && Array.isArray(lang.aliases)) {\n if (lang.aliases.length === 0) {\n // signal that this language should not get a name\n langAliases = [null];\n }\n else {\n langAliases = lang.aliases;\n }\n }\n if (langAliases !== null) {\n for (const langAlias of langAliases) {\n if (!langAlias || langAlias.length === 0) {\n continue;\n }\n resolvedLanguage.aliases.push(langAlias);\n }\n }\n const containsAliases = (langAliases !== null && langAliases.length > 0);\n if (containsAliases && langAliases[0] === null) {\n // signal that this language should not get a name\n }\n else {\n const bestName = (containsAliases ? langAliases[0] : null) || langId;\n if (containsAliases || !resolvedLanguage.name) {\n resolvedLanguage.name = bestName;\n }\n }\n if (lang.configuration) {\n resolvedLanguage.configurationFiles.push(lang.configuration);\n }\n if (lang.icon) {\n resolvedLanguage.icons.push(lang.icon);\n }\n }\n isRegisteredLanguageId(languageId) {\n if (!languageId) {\n return false;\n }\n return hasOwnProperty.call(this._languages, languageId);\n }\n getRegisteredLanguageIds() {\n return Object.keys(this._languages);\n }\n getLanguageIdByLanguageName(languageName) {\n const languageNameLower = languageName.toLowerCase();\n if (!hasOwnProperty.call(this._lowercaseNameMap, languageNameLower)) {\n return null;\n }\n return this._lowercaseNameMap[languageNameLower];\n }\n getLanguageIdByMimeType(mimeType) {\n if (!mimeType) {\n return null;\n }\n if (hasOwnProperty.call(this._mimeTypesMap, mimeType)) {\n return this._mimeTypesMap[mimeType];\n }\n return null;\n }\n guessLanguageIdByFilepathOrFirstLine(resource, firstLine) {\n if (!resource && !firstLine) {\n return [];\n }\n return getLanguageIds(resource, firstLine);\n }\n}\nLanguagesRegistry.instanceCount = 0;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { LanguagesRegistry } from './languagesRegistry.js';\nimport { firstOrDefault } from '../../../base/common/arrays.js';\nimport { TokenizationRegistry } from '../languages.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../languages/modesRegistry.js';\nexport class LanguageService extends Disposable {\n constructor(warnOnOverwrite = false) {\n super();\n this._onDidEncounterLanguage = this._register(new Emitter());\n this.onDidEncounterLanguage = this._onDidEncounterLanguage.event;\n this._onDidChange = this._register(new Emitter({ leakWarningThreshold: 200 /* https://github.com/microsoft/vscode/issues/119968 */ }));\n this.onDidChange = this._onDidChange.event;\n LanguageService.instanceCount++;\n this._encounteredLanguages = new Set();\n this._registry = this._register(new LanguagesRegistry(true, warnOnOverwrite));\n this.languageIdCodec = this._registry.languageIdCodec;\n this._register(this._registry.onDidChange(() => this._onDidChange.fire()));\n }\n dispose() {\n LanguageService.instanceCount--;\n super.dispose();\n }\n isRegisteredLanguageId(languageId) {\n return this._registry.isRegisteredLanguageId(languageId);\n }\n getLanguageIdByLanguageName(languageName) {\n return this._registry.getLanguageIdByLanguageName(languageName);\n }\n getLanguageIdByMimeType(mimeType) {\n return this._registry.getLanguageIdByMimeType(mimeType);\n }\n guessLanguageIdByFilepathOrFirstLine(resource, firstLine) {\n const languageIds = this._registry.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n return firstOrDefault(languageIds, null);\n }\n createById(languageId) {\n return new LanguageSelection(this.onDidChange, () => {\n return this._createAndGetLanguageIdentifier(languageId);\n });\n }\n createByFilepathOrFirstLine(resource, firstLine) {\n return new LanguageSelection(this.onDidChange, () => {\n const languageId = this.guessLanguageIdByFilepathOrFirstLine(resource, firstLine);\n return this._createAndGetLanguageIdentifier(languageId);\n });\n }\n _createAndGetLanguageIdentifier(languageId) {\n if (!languageId || !this.isRegisteredLanguageId(languageId)) {\n // Fall back to plain text if language is unknown\n languageId = PLAINTEXT_LANGUAGE_ID;\n }\n if (!this._encounteredLanguages.has(languageId)) {\n this._encounteredLanguages.add(languageId);\n // Ensure tokenizers are created\n TokenizationRegistry.getOrCreate(languageId);\n // Fire event\n this._onDidEncounterLanguage.fire(languageId);\n }\n return languageId;\n }\n}\nLanguageService.instanceCount = 0;\nclass LanguageSelection {\n constructor(_onDidChangeLanguages, _selector) {\n this._onDidChangeLanguages = _onDidChangeLanguages;\n this._selector = _selector;\n this._listener = null;\n this._emitter = null;\n this.languageId = this._selector();\n }\n _dispose() {\n if (this._listener) {\n this._listener.dispose();\n this._listener = null;\n }\n if (this._emitter) {\n this._emitter.dispose();\n this._emitter = null;\n }\n }\n get onDidChange() {\n if (!this._listener) {\n this._listener = this._onDidChangeLanguages(() => this._evaluate());\n }\n if (!this._emitter) {\n this._emitter = new Emitter({\n onLastListenerRemove: () => {\n this._dispose();\n }\n });\n }\n return this._emitter.event;\n }\n _evaluate() {\n var _a;\n const languageId = this._selector();\n if (languageId === this.languageId) {\n // no change\n return;\n }\n this.languageId = languageId;\n (_a = this._emitter) === null || _a === void 0 ? void 0 : _a.fire(this.languageId);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { isFirefox } from '../../browser.js';\nimport { EventType as TouchEventType, Gesture } from '../../touch.js';\nimport { $, addDisposableListener, append, clearNode, createStyleSheet, Dimension, EventHelper, EventType, getActiveElement, isAncestor, isInShadowDOM } from '../../dom.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { StandardMouseEvent } from '../../mouseEvent.js';\nimport { ActionBar } from '../actionbar/actionbar.js';\nimport { ActionViewItem, BaseActionViewItem } from '../actionbar/actionViewItems.js';\nimport { formatRule } from '../codicons/codiconStyles.js';\nimport { layout } from '../contextview/contextview.js';\nimport { DomScrollableElement } from '../scrollbar/scrollableElement.js';\nimport { EmptySubmenuAction, Separator, SubmenuAction } from '../../../common/actions.js';\nimport { RunOnceScheduler } from '../../../common/async.js';\nimport { Codicon } from '../../../common/codicons.js';\nimport { stripIcons } from '../../../common/iconLabels.js';\nimport { DisposableStore } from '../../../common/lifecycle.js';\nimport { isLinux, isMacintosh } from '../../../common/platform.js';\nimport * as strings from '../../../common/strings.js';\nexport const MENU_MNEMONIC_REGEX = /\\(&([^\\s&])\\)|(^|[^&])&([^\\s&])/;\nexport const MENU_ESCAPED_MNEMONIC_REGEX = /(&)?(&)([^\\s&])/g;\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"Right\"] = 0] = \"Right\";\n Direction[Direction[\"Left\"] = 1] = \"Left\";\n})(Direction || (Direction = {}));\nexport class Menu extends ActionBar {\n constructor(container, actions, options = {}) {\n container.classList.add('monaco-menu-container');\n container.setAttribute('role', 'presentation');\n const menuElement = document.createElement('div');\n menuElement.classList.add('monaco-menu');\n menuElement.setAttribute('role', 'presentation');\n super(menuElement, {\n orientation: 1 /* ActionsOrientation.VERTICAL */,\n actionViewItemProvider: action => this.doGetActionViewItem(action, options, parentData),\n context: options.context,\n actionRunner: options.actionRunner,\n ariaLabel: options.ariaLabel,\n ariaRole: 'menu',\n focusOnlyEnabledItems: true,\n triggerKeys: { keys: [3 /* KeyCode.Enter */, ...(isMacintosh || isLinux ? [10 /* KeyCode.Space */] : [])], keyDown: true }\n });\n this.menuElement = menuElement;\n this.actionsList.tabIndex = 0;\n this.menuDisposables = this._register(new DisposableStore());\n this.initializeOrUpdateStyleSheet(container, {});\n this._register(Gesture.addTarget(menuElement));\n addDisposableListener(menuElement, EventType.KEY_DOWN, (e) => {\n const event = new StandardKeyboardEvent(e);\n // Stop tab navigation of menus\n if (event.equals(2 /* KeyCode.Tab */)) {\n e.preventDefault();\n }\n });\n if (options.enableMnemonics) {\n this.menuDisposables.add(addDisposableListener(menuElement, EventType.KEY_DOWN, (e) => {\n const key = e.key.toLocaleLowerCase();\n if (this.mnemonics.has(key)) {\n EventHelper.stop(e, true);\n const actions = this.mnemonics.get(key);\n if (actions.length === 1) {\n if (actions[0] instanceof SubmenuMenuActionViewItem && actions[0].container) {\n this.focusItemByElement(actions[0].container);\n }\n actions[0].onClick(e);\n }\n if (actions.length > 1) {\n const action = actions.shift();\n if (action && action.container) {\n this.focusItemByElement(action.container);\n actions.push(action);\n }\n this.mnemonics.set(key, actions);\n }\n }\n }));\n }\n if (isLinux) {\n this._register(addDisposableListener(menuElement, EventType.KEY_DOWN, e => {\n const event = new StandardKeyboardEvent(e);\n if (event.equals(14 /* KeyCode.Home */) || event.equals(11 /* KeyCode.PageUp */)) {\n this.focusedItem = this.viewItems.length - 1;\n this.focusNext();\n EventHelper.stop(e, true);\n }\n else if (event.equals(13 /* KeyCode.End */) || event.equals(12 /* KeyCode.PageDown */)) {\n this.focusedItem = 0;\n this.focusPrevious();\n EventHelper.stop(e, true);\n }\n }));\n }\n this._register(addDisposableListener(this.domNode, EventType.MOUSE_OUT, e => {\n const relatedTarget = e.relatedTarget;\n if (!isAncestor(relatedTarget, this.domNode)) {\n this.focusedItem = undefined;\n this.updateFocus();\n e.stopPropagation();\n }\n }));\n this._register(addDisposableListener(this.actionsList, EventType.MOUSE_OVER, e => {\n let target = e.target;\n if (!target || !isAncestor(target, this.actionsList) || target === this.actionsList) {\n return;\n }\n while (target.parentElement !== this.actionsList && target.parentElement !== null) {\n target = target.parentElement;\n }\n if (target.classList.contains('action-item')) {\n const lastFocusedItem = this.focusedItem;\n this.setFocusedItem(target);\n if (lastFocusedItem !== this.focusedItem) {\n this.updateFocus();\n }\n }\n }));\n // Support touch on actions list to focus items (needed for submenus)\n this._register(Gesture.addTarget(this.actionsList));\n this._register(addDisposableListener(this.actionsList, TouchEventType.Tap, e => {\n let target = e.initialTarget;\n if (!target || !isAncestor(target, this.actionsList) || target === this.actionsList) {\n return;\n }\n while (target.parentElement !== this.actionsList && target.parentElement !== null) {\n target = target.parentElement;\n }\n if (target.classList.contains('action-item')) {\n const lastFocusedItem = this.focusedItem;\n this.setFocusedItem(target);\n if (lastFocusedItem !== this.focusedItem) {\n this.updateFocus();\n }\n }\n }));\n const parentData = {\n parent: this\n };\n this.mnemonics = new Map();\n // Scroll Logic\n this.scrollableElement = this._register(new DomScrollableElement(menuElement, {\n alwaysConsumeMouseWheel: true,\n horizontal: 2 /* ScrollbarVisibility.Hidden */,\n vertical: 3 /* ScrollbarVisibility.Visible */,\n verticalScrollbarSize: 7,\n handleMouseWheel: true,\n useShadows: true\n }));\n const scrollElement = this.scrollableElement.getDomNode();\n scrollElement.style.position = '';\n // Support scroll on menu drag\n this._register(addDisposableListener(menuElement, TouchEventType.Change, e => {\n EventHelper.stop(e, true);\n const scrollTop = this.scrollableElement.getScrollPosition().scrollTop;\n this.scrollableElement.setScrollPosition({ scrollTop: scrollTop - e.translationY });\n }));\n this._register(addDisposableListener(scrollElement, EventType.MOUSE_UP, e => {\n // Absorb clicks in menu dead space https://github.com/microsoft/vscode/issues/63575\n // We do this on the scroll element so the scroll bar doesn't dismiss the menu either\n e.preventDefault();\n }));\n menuElement.style.maxHeight = `${Math.max(10, window.innerHeight - container.getBoundingClientRect().top - 35)}px`;\n actions = actions.filter(a => {\n var _a;\n if ((_a = options.submenuIds) === null || _a === void 0 ? void 0 : _a.has(a.id)) {\n console.warn(`Found submenu cycle: ${a.id}`);\n return false;\n }\n return true;\n });\n this.push(actions, { icon: true, label: true, isMenu: true });\n container.appendChild(this.scrollableElement.getDomNode());\n this.scrollableElement.scanDomNode();\n this.viewItems.filter(item => !(item instanceof MenuSeparatorActionViewItem)).forEach((item, index, array) => {\n item.updatePositionInSet(index + 1, array.length);\n });\n }\n initializeOrUpdateStyleSheet(container, style) {\n if (!this.styleSheet) {\n if (isInShadowDOM(container)) {\n this.styleSheet = createStyleSheet(container);\n }\n else {\n if (!Menu.globalStyleSheet) {\n Menu.globalStyleSheet = createStyleSheet();\n }\n this.styleSheet = Menu.globalStyleSheet;\n }\n }\n this.styleSheet.textContent = getMenuWidgetCSS(style, isInShadowDOM(container));\n }\n style(style) {\n const container = this.getContainer();\n this.initializeOrUpdateStyleSheet(container, style);\n const fgColor = style.foregroundColor ? `${style.foregroundColor}` : '';\n const bgColor = style.backgroundColor ? `${style.backgroundColor}` : '';\n const border = style.borderColor ? `1px solid ${style.borderColor}` : '';\n const borderRadius = '5px';\n const shadow = style.shadowColor ? `0 2px 8px ${style.shadowColor}` : '';\n container.style.outline = border;\n container.style.borderRadius = borderRadius;\n container.style.color = fgColor;\n container.style.backgroundColor = bgColor;\n container.style.boxShadow = shadow;\n if (this.viewItems) {\n this.viewItems.forEach(item => {\n if (item instanceof BaseMenuActionViewItem || item instanceof MenuSeparatorActionViewItem) {\n item.style(style);\n }\n });\n }\n }\n getContainer() {\n return this.scrollableElement.getDomNode();\n }\n get onScroll() {\n return this.scrollableElement.onScroll;\n }\n focusItemByElement(element) {\n const lastFocusedItem = this.focusedItem;\n this.setFocusedItem(element);\n if (lastFocusedItem !== this.focusedItem) {\n this.updateFocus();\n }\n }\n setFocusedItem(element) {\n for (let i = 0; i < this.actionsList.children.length; i++) {\n const elem = this.actionsList.children[i];\n if (element === elem) {\n this.focusedItem = i;\n break;\n }\n }\n }\n updateFocus(fromRight) {\n super.updateFocus(fromRight, true, true);\n if (typeof this.focusedItem !== 'undefined') {\n // Workaround for #80047 caused by an issue in chromium\n // https://bugs.chromium.org/p/chromium/issues/detail?id=414283\n // When that's fixed, just call this.scrollableElement.scanDomNode()\n this.scrollableElement.setScrollPosition({\n scrollTop: Math.round(this.menuElement.scrollTop)\n });\n }\n }\n doGetActionViewItem(action, options, parentData) {\n if (action instanceof Separator) {\n return new MenuSeparatorActionViewItem(options.context, action, { icon: true });\n }\n else if (action instanceof SubmenuAction) {\n const menuActionViewItem = new SubmenuMenuActionViewItem(action, action.actions, parentData, Object.assign(Object.assign({}, options), { submenuIds: new Set([...(options.submenuIds || []), action.id]) }));\n if (options.enableMnemonics) {\n const mnemonic = menuActionViewItem.getMnemonic();\n if (mnemonic && menuActionViewItem.isEnabled()) {\n let actionViewItems = [];\n if (this.mnemonics.has(mnemonic)) {\n actionViewItems = this.mnemonics.get(mnemonic);\n }\n actionViewItems.push(menuActionViewItem);\n this.mnemonics.set(mnemonic, actionViewItems);\n }\n }\n return menuActionViewItem;\n }\n else {\n const menuItemOptions = { enableMnemonics: options.enableMnemonics, useEventAsContext: options.useEventAsContext };\n if (options.getKeyBinding) {\n const keybinding = options.getKeyBinding(action);\n if (keybinding) {\n const keybindingLabel = keybinding.getLabel();\n if (keybindingLabel) {\n menuItemOptions.keybinding = keybindingLabel;\n }\n }\n }\n const menuActionViewItem = new BaseMenuActionViewItem(options.context, action, menuItemOptions);\n if (options.enableMnemonics) {\n const mnemonic = menuActionViewItem.getMnemonic();\n if (mnemonic && menuActionViewItem.isEnabled()) {\n let actionViewItems = [];\n if (this.mnemonics.has(mnemonic)) {\n actionViewItems = this.mnemonics.get(mnemonic);\n }\n actionViewItems.push(menuActionViewItem);\n this.mnemonics.set(mnemonic, actionViewItems);\n }\n }\n return menuActionViewItem;\n }\n }\n}\nclass BaseMenuActionViewItem extends BaseActionViewItem {\n constructor(ctx, action, options = {}) {\n options.isMenu = true;\n super(action, action, options);\n this.options = options;\n this.options.icon = options.icon !== undefined ? options.icon : false;\n this.options.label = options.label !== undefined ? options.label : true;\n this.cssClass = '';\n // Set mnemonic\n if (this.options.label && options.enableMnemonics) {\n const label = this.getAction().label;\n if (label) {\n const matches = MENU_MNEMONIC_REGEX.exec(label);\n if (matches) {\n this.mnemonic = (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase();\n }\n }\n }\n // Add mouse up listener later to avoid accidental clicks\n this.runOnceToEnableMouseUp = new RunOnceScheduler(() => {\n if (!this.element) {\n return;\n }\n this._register(addDisposableListener(this.element, EventType.MOUSE_UP, e => {\n // removed default prevention as it conflicts\n // with BaseActionViewItem #101537\n // add back if issues arise and link new issue\n EventHelper.stop(e, true);\n // See https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Interact_with_the_clipboard\n // > Writing to the clipboard\n // > You can use the \"cut\" and \"copy\" commands without any special\n // permission if you are using them in a short-lived event handler\n // for a user action (for example, a click handler).\n // => to get the Copy and Paste context menu actions working on Firefox,\n // there should be no timeout here\n if (isFirefox) {\n const mouseEvent = new StandardMouseEvent(e);\n // Allowing right click to trigger the event causes the issue described below,\n // but since the solution below does not work in FF, we must disable right click\n if (mouseEvent.rightButton) {\n return;\n }\n this.onClick(e);\n }\n // In all other cases, set timeout to allow context menu cancellation to trigger\n // otherwise the action will destroy the menu and a second context menu\n // will still trigger for right click.\n else {\n setTimeout(() => {\n this.onClick(e);\n }, 0);\n }\n }));\n this._register(addDisposableListener(this.element, EventType.CONTEXT_MENU, e => {\n EventHelper.stop(e, true);\n }));\n }, 100);\n this._register(this.runOnceToEnableMouseUp);\n }\n render(container) {\n super.render(container);\n if (!this.element) {\n return;\n }\n this.container = container;\n this.item = append(this.element, $('a.action-menu-item'));\n if (this._action.id === Separator.ID) {\n // A separator is a presentation item\n this.item.setAttribute('role', 'presentation');\n }\n else {\n this.item.setAttribute('role', 'menuitem');\n if (this.mnemonic) {\n this.item.setAttribute('aria-keyshortcuts', `${this.mnemonic}`);\n }\n }\n this.check = append(this.item, $('span.menu-item-check' + Codicon.menuSelection.cssSelector));\n this.check.setAttribute('role', 'none');\n this.label = append(this.item, $('span.action-label'));\n if (this.options.label && this.options.keybinding) {\n append(this.item, $('span.keybinding')).textContent = this.options.keybinding;\n }\n // Adds mouse up listener to actually run the action\n this.runOnceToEnableMouseUp.schedule();\n this.updateClass();\n this.updateLabel();\n this.updateTooltip();\n this.updateEnabled();\n this.updateChecked();\n }\n blur() {\n super.blur();\n this.applyStyle();\n }\n focus() {\n super.focus();\n if (this.item) {\n this.item.focus();\n }\n this.applyStyle();\n }\n updatePositionInSet(pos, setSize) {\n if (this.item) {\n this.item.setAttribute('aria-posinset', `${pos}`);\n this.item.setAttribute('aria-setsize', `${setSize}`);\n }\n }\n updateLabel() {\n var _a;\n if (!this.label) {\n return;\n }\n if (this.options.label) {\n clearNode(this.label);\n let label = stripIcons(this.getAction().label);\n if (label) {\n const cleanLabel = cleanMnemonic(label);\n if (!this.options.enableMnemonics) {\n label = cleanLabel;\n }\n this.label.setAttribute('aria-label', cleanLabel.replace(/&&/g, '&'));\n const matches = MENU_MNEMONIC_REGEX.exec(label);\n if (matches) {\n label = strings.escape(label);\n // This is global, reset it\n MENU_ESCAPED_MNEMONIC_REGEX.lastIndex = 0;\n let escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\n // We can't use negative lookbehind so if we match our negative and skip\n while (escMatch && escMatch[1]) {\n escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\n }\n const replaceDoubleEscapes = (str) => str.replace(/&&/g, '&');\n if (escMatch) {\n this.label.append(strings.ltrim(replaceDoubleEscapes(label.substr(0, escMatch.index)), ' '), $('u', { 'aria-hidden': 'true' }, escMatch[3]), strings.rtrim(replaceDoubleEscapes(label.substr(escMatch.index + escMatch[0].length)), ' '));\n }\n else {\n this.label.innerText = replaceDoubleEscapes(label).trim();\n }\n (_a = this.item) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-keyshortcuts', (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase());\n }\n else {\n this.label.innerText = label.replace(/&&/g, '&').trim();\n }\n }\n }\n }\n updateTooltip() {\n // menus should function like native menus and they do not have tooltips\n }\n updateClass() {\n if (this.cssClass && this.item) {\n this.item.classList.remove(...this.cssClass.split(' '));\n }\n if (this.options.icon && this.label) {\n this.cssClass = this.getAction().class || '';\n this.label.classList.add('icon');\n if (this.cssClass) {\n this.label.classList.add(...this.cssClass.split(' '));\n }\n this.updateEnabled();\n }\n else if (this.label) {\n this.label.classList.remove('icon');\n }\n }\n updateEnabled() {\n if (this.getAction().enabled) {\n if (this.element) {\n this.element.classList.remove('disabled');\n this.element.removeAttribute('aria-disabled');\n }\n if (this.item) {\n this.item.classList.remove('disabled');\n this.item.removeAttribute('aria-disabled');\n this.item.tabIndex = 0;\n }\n }\n else {\n if (this.element) {\n this.element.classList.add('disabled');\n this.element.setAttribute('aria-disabled', 'true');\n }\n if (this.item) {\n this.item.classList.add('disabled');\n this.item.setAttribute('aria-disabled', 'true');\n }\n }\n }\n updateChecked() {\n if (!this.item) {\n return;\n }\n const checked = this.getAction().checked;\n this.item.classList.toggle('checked', !!checked);\n if (checked !== undefined) {\n this.item.setAttribute('role', 'menuitemcheckbox');\n this.item.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n else {\n this.item.setAttribute('role', 'menuitem');\n this.item.setAttribute('aria-checked', '');\n }\n }\n getMnemonic() {\n return this.mnemonic;\n }\n applyStyle() {\n if (!this.menuStyle) {\n return;\n }\n const isSelected = this.element && this.element.classList.contains('focused');\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\n const bgColor = isSelected && this.menuStyle.selectionBackgroundColor ? this.menuStyle.selectionBackgroundColor : undefined;\n const outline = isSelected && this.menuStyle.selectionBorderColor ? `1px solid ${this.menuStyle.selectionBorderColor}` : '';\n const outlineOffset = isSelected && this.menuStyle.selectionBorderColor ? `-1px` : '';\n if (this.item) {\n this.item.style.color = fgColor ? fgColor.toString() : '';\n this.item.style.backgroundColor = bgColor ? bgColor.toString() : '';\n this.item.style.outline = outline;\n this.item.style.outlineOffset = outlineOffset;\n }\n if (this.check) {\n this.check.style.color = fgColor ? fgColor.toString() : '';\n }\n }\n style(style) {\n this.menuStyle = style;\n this.applyStyle();\n }\n}\nclass SubmenuMenuActionViewItem extends BaseMenuActionViewItem {\n constructor(action, submenuActions, parentData, submenuOptions) {\n super(action, action, submenuOptions);\n this.submenuActions = submenuActions;\n this.parentData = parentData;\n this.submenuOptions = submenuOptions;\n this.mysubmenu = null;\n this.submenuDisposables = this._register(new DisposableStore());\n this.mouseOver = false;\n this.expandDirection = submenuOptions && submenuOptions.expandDirection !== undefined ? submenuOptions.expandDirection : Direction.Right;\n this.showScheduler = new RunOnceScheduler(() => {\n if (this.mouseOver) {\n this.cleanupExistingSubmenu(false);\n this.createSubmenu(false);\n }\n }, 250);\n this.hideScheduler = new RunOnceScheduler(() => {\n if (this.element && (!isAncestor(getActiveElement(), this.element) && this.parentData.submenu === this.mysubmenu)) {\n this.parentData.parent.focus(false);\n this.cleanupExistingSubmenu(true);\n }\n }, 750);\n }\n render(container) {\n super.render(container);\n if (!this.element) {\n return;\n }\n if (this.item) {\n this.item.classList.add('monaco-submenu-item');\n this.item.tabIndex = 0;\n this.item.setAttribute('aria-haspopup', 'true');\n this.updateAriaExpanded('false');\n this.submenuIndicator = append(this.item, $('span.submenu-indicator' + Codicon.menuSubmenu.cssSelector));\n this.submenuIndicator.setAttribute('aria-hidden', 'true');\n }\n this._register(addDisposableListener(this.element, EventType.KEY_UP, e => {\n const event = new StandardKeyboardEvent(e);\n if (event.equals(17 /* KeyCode.RightArrow */) || event.equals(3 /* KeyCode.Enter */)) {\n EventHelper.stop(e, true);\n this.createSubmenu(true);\n }\n }));\n this._register(addDisposableListener(this.element, EventType.KEY_DOWN, e => {\n const event = new StandardKeyboardEvent(e);\n if (getActiveElement() === this.item) {\n if (event.equals(17 /* KeyCode.RightArrow */) || event.equals(3 /* KeyCode.Enter */)) {\n EventHelper.stop(e, true);\n }\n }\n }));\n this._register(addDisposableListener(this.element, EventType.MOUSE_OVER, e => {\n if (!this.mouseOver) {\n this.mouseOver = true;\n this.showScheduler.schedule();\n }\n }));\n this._register(addDisposableListener(this.element, EventType.MOUSE_LEAVE, e => {\n this.mouseOver = false;\n }));\n this._register(addDisposableListener(this.element, EventType.FOCUS_OUT, e => {\n if (this.element && !isAncestor(getActiveElement(), this.element)) {\n this.hideScheduler.schedule();\n }\n }));\n this._register(this.parentData.parent.onScroll(() => {\n if (this.parentData.submenu === this.mysubmenu) {\n this.parentData.parent.focus(false);\n this.cleanupExistingSubmenu(true);\n }\n }));\n }\n updateEnabled() {\n // override on submenu entry\n // native menus do not observe enablement on sumbenus\n // we mimic that behavior\n }\n onClick(e) {\n // stop clicking from trying to run an action\n EventHelper.stop(e, true);\n this.cleanupExistingSubmenu(false);\n this.createSubmenu(true);\n }\n cleanupExistingSubmenu(force) {\n if (this.parentData.submenu && (force || (this.parentData.submenu !== this.mysubmenu))) {\n // disposal may throw if the submenu has already been removed\n try {\n this.parentData.submenu.dispose();\n }\n catch (_a) { }\n this.parentData.submenu = undefined;\n this.updateAriaExpanded('false');\n if (this.submenuContainer) {\n this.submenuDisposables.clear();\n this.submenuContainer = undefined;\n }\n }\n }\n calculateSubmenuMenuLayout(windowDimensions, submenu, entry, expandDirection) {\n const ret = { top: 0, left: 0 };\n // Start with horizontal\n ret.left = layout(windowDimensions.width, submenu.width, { position: expandDirection === Direction.Right ? 0 /* LayoutAnchorPosition.Before */ : 1 /* LayoutAnchorPosition.After */, offset: entry.left, size: entry.width });\n // We don't have enough room to layout the menu fully, so we are overlapping the menu\n if (ret.left >= entry.left && ret.left < entry.left + entry.width) {\n if (entry.left + 10 + submenu.width <= windowDimensions.width) {\n ret.left = entry.left + 10;\n }\n entry.top += 10;\n entry.height = 0;\n }\n // Now that we have a horizontal position, try layout vertically\n ret.top = layout(windowDimensions.height, submenu.height, { position: 0 /* LayoutAnchorPosition.Before */, offset: entry.top, size: 0 });\n // We didn't have enough room below, but we did above, so we shift down to align the menu\n if (ret.top + submenu.height === entry.top && ret.top + entry.height + submenu.height <= windowDimensions.height) {\n ret.top += entry.height;\n }\n return ret;\n }\n createSubmenu(selectFirstItem = true) {\n if (!this.element) {\n return;\n }\n if (!this.parentData.submenu) {\n this.updateAriaExpanded('true');\n this.submenuContainer = append(this.element, $('div.monaco-submenu'));\n this.submenuContainer.classList.add('menubar-menu-items-holder', 'context-view');\n // Set the top value of the menu container before construction\n // This allows the menu constructor to calculate the proper max height\n const computedStyles = getComputedStyle(this.parentData.parent.domNode);\n const paddingTop = parseFloat(computedStyles.paddingTop || '0') || 0;\n // this.submenuContainer.style.top = `${this.element.offsetTop - this.parentData.parent.scrollOffset - paddingTop}px`;\n this.submenuContainer.style.zIndex = '1';\n this.submenuContainer.style.position = 'fixed';\n this.submenuContainer.style.top = '0';\n this.submenuContainer.style.left = '0';\n this.parentData.submenu = new Menu(this.submenuContainer, this.submenuActions.length ? this.submenuActions : [new EmptySubmenuAction()], this.submenuOptions);\n if (this.menuStyle) {\n this.parentData.submenu.style(this.menuStyle);\n }\n // layout submenu\n const entryBox = this.element.getBoundingClientRect();\n const entryBoxUpdated = {\n top: entryBox.top - paddingTop,\n left: entryBox.left,\n height: entryBox.height + 2 * paddingTop,\n width: entryBox.width\n };\n const viewBox = this.submenuContainer.getBoundingClientRect();\n const { top, left } = this.calculateSubmenuMenuLayout(new Dimension(window.innerWidth, window.innerHeight), Dimension.lift(viewBox), entryBoxUpdated, this.expandDirection);\n // subtract offsets caused by transform parent\n this.submenuContainer.style.left = `${left - viewBox.left}px`;\n this.submenuContainer.style.top = `${top - viewBox.top}px`;\n this.submenuDisposables.add(addDisposableListener(this.submenuContainer, EventType.KEY_UP, e => {\n const event = new StandardKeyboardEvent(e);\n if (event.equals(15 /* KeyCode.LeftArrow */)) {\n EventHelper.stop(e, true);\n this.parentData.parent.focus();\n this.cleanupExistingSubmenu(true);\n }\n }));\n this.submenuDisposables.add(addDisposableListener(this.submenuContainer, EventType.KEY_DOWN, e => {\n const event = new StandardKeyboardEvent(e);\n if (event.equals(15 /* KeyCode.LeftArrow */)) {\n EventHelper.stop(e, true);\n }\n }));\n this.submenuDisposables.add(this.parentData.submenu.onDidCancel(() => {\n this.parentData.parent.focus();\n this.cleanupExistingSubmenu(true);\n }));\n this.parentData.submenu.focus(selectFirstItem);\n this.mysubmenu = this.parentData.submenu;\n }\n else {\n this.parentData.submenu.focus(false);\n }\n }\n updateAriaExpanded(value) {\n var _a;\n if (this.item) {\n (_a = this.item) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', value);\n }\n }\n applyStyle() {\n var _a;\n super.applyStyle();\n if (!this.menuStyle) {\n return;\n }\n const isSelected = this.element && this.element.classList.contains('focused');\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\n if (this.submenuIndicator) {\n this.submenuIndicator.style.color = fgColor ? `${fgColor}` : '';\n }\n (_a = this.parentData.submenu) === null || _a === void 0 ? void 0 : _a.style(this.menuStyle);\n }\n dispose() {\n super.dispose();\n this.hideScheduler.dispose();\n if (this.mysubmenu) {\n this.mysubmenu.dispose();\n this.mysubmenu = null;\n }\n if (this.submenuContainer) {\n this.submenuContainer = undefined;\n }\n }\n}\nclass MenuSeparatorActionViewItem extends ActionViewItem {\n style(style) {\n if (this.label) {\n this.label.style.borderBottomColor = style.separatorColor ? `${style.separatorColor}` : '';\n }\n }\n}\nexport function cleanMnemonic(label) {\n const regex = MENU_MNEMONIC_REGEX;\n const matches = regex.exec(label);\n if (!matches) {\n return label;\n }\n const mnemonicInText = !matches[1];\n return label.replace(regex, mnemonicInText ? '$2$3' : '').trim();\n}\nfunction getMenuWidgetCSS(style, isForShadowDom) {\n let result = /* css */ `\n.monaco-menu {\n\tfont-size: 13px;\n\tborder-radius: 5px;\n\tmin-width: 160px;\n}\n\n${formatRule(Codicon.menuSelection)}\n${formatRule(Codicon.menuSubmenu)}\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar.animated .action-item.active {\n\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\tcolor: var(--vscode-disabledForeground);\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid var(--vscode-menu-separatorBackground);\n\tpadding-top: 1px;\n\tpadding: 30px;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .keybinding {\n\topacity: unset;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\twidth: 100%;\n\theight: 0px !important;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n\t-webkit-app-region: no-drag;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.hc-black .context-view.monaco-menu-container,\n.hc-light .context-view.monaco-menu-container,\n:host-context(.hc-black) .context-view.monaco-menu-container,\n:host-context(.hc-light) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n.hc-black .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n.hc-light .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused,\n:host-context(.hc-light) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: .6em 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tmargin: 5px 0 !important;\n\tpadding: 0;\n\tborder-radius: 0;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .action-label.separator,\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n.linux .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}`;\n if (isForShadowDom) {\n // Only define scrollbar styles when used inside shadow dom,\n // otherwise leave their styling to the global workbench styling.\n result += `\n\t\t\t/* Arrows */\n\t\t\t.monaco-scrollable-element > .scrollbar > .scra {\n\t\t\t\tcursor: pointer;\n\t\t\t\tfont-size: 11px !important;\n\t\t\t}\n\n\t\t\t.monaco-scrollable-element > .visible {\n\t\t\t\topacity: 1;\n\n\t\t\t\t/* Background rule added for IE9 - to allow clicks on dom node */\n\t\t\t\tbackground:rgba(0,0,0,0);\n\n\t\t\t\ttransition: opacity 100ms linear;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible {\n\t\t\t\topacity: 0;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .invisible.fade {\n\t\t\t\ttransition: opacity 800ms linear;\n\t\t\t}\n\n\t\t\t/* Scrollable Content Inset Shadow */\n\t\t\t.monaco-scrollable-element > .shadow {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 3px;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 3px;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 100%;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t\t.monaco-scrollable-element > .shadow.top-left-corner {\n\t\t\t\tdisplay: block;\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t\theight: 3px;\n\t\t\t\twidth: 3px;\n\t\t\t}\n\t\t`;\n // Scrollbars\n const scrollbarShadowColor = style.scrollbarShadow;\n if (scrollbarShadowColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .shadow.top {\n\t\t\t\t\tbox-shadow: ${scrollbarShadowColor} 0 6px 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.left {\n\t\t\t\t\tbox-shadow: ${scrollbarShadowColor} 6px 0 6px -6px inset;\n\t\t\t\t}\n\n\t\t\t\t.monaco-scrollable-element > .shadow.top.left {\n\t\t\t\t\tbox-shadow: ${scrollbarShadowColor} 6px 6px 6px -6px inset;\n\t\t\t\t}\n\t\t\t`;\n }\n const scrollbarSliderBackgroundColor = style.scrollbarSliderBackground;\n if (scrollbarSliderBackgroundColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider {\n\t\t\t\t\tbackground: ${scrollbarSliderBackgroundColor};\n\t\t\t\t}\n\t\t\t`;\n }\n const scrollbarSliderHoverBackgroundColor = style.scrollbarSliderHoverBackground;\n if (scrollbarSliderHoverBackgroundColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider:hover {\n\t\t\t\t\tbackground: ${scrollbarSliderHoverBackgroundColor};\n\t\t\t\t}\n\t\t\t`;\n }\n const scrollbarSliderActiveBackgroundColor = style.scrollbarSliderActiveBackground;\n if (scrollbarSliderActiveBackgroundColor) {\n result += `\n\t\t\t\t.monaco-scrollable-element > .scrollbar > .slider.active {\n\t\t\t\t\tbackground: ${scrollbarSliderActiveBackgroundColor};\n\t\t\t\t}\n\t\t\t`;\n }\n }\n return result;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { $, addDisposableListener, EventType, isHTMLElement } from '../../../base/browser/dom.js';\nimport { StandardMouseEvent } from '../../../base/browser/mouseEvent.js';\nimport { Menu } from '../../../base/browser/ui/menu/menu.js';\nimport { ActionRunner } from '../../../base/common/actions.js';\nimport { isCancellationError } from '../../../base/common/errors.js';\nimport { combinedDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\nimport { attachMenuStyler } from '../../theme/common/styler.js';\nexport class ContextMenuHandler {\n constructor(contextViewService, telemetryService, notificationService, keybindingService, themeService) {\n this.contextViewService = contextViewService;\n this.telemetryService = telemetryService;\n this.notificationService = notificationService;\n this.keybindingService = keybindingService;\n this.themeService = themeService;\n this.focusToReturn = null;\n this.block = null;\n this.options = { blockMouse: true };\n }\n configure(options) {\n this.options = options;\n }\n showContextMenu(delegate) {\n const actions = delegate.getActions();\n if (!actions.length) {\n return; // Don't render an empty context menu\n }\n this.focusToReturn = document.activeElement;\n let menu;\n const shadowRootElement = isHTMLElement(delegate.domForShadowRoot) ? delegate.domForShadowRoot : undefined;\n this.contextViewService.showContextView({\n getAnchor: () => delegate.getAnchor(),\n canRelayout: false,\n anchorAlignment: delegate.anchorAlignment,\n anchorAxisAlignment: delegate.anchorAxisAlignment,\n render: (container) => {\n const className = delegate.getMenuClassName ? delegate.getMenuClassName() : '';\n if (className) {\n container.className += ' ' + className;\n }\n // Render invisible div to block mouse interaction in the rest of the UI\n if (this.options.blockMouse) {\n this.block = container.appendChild($('.context-view-block'));\n this.block.style.position = 'fixed';\n this.block.style.cursor = 'initial';\n this.block.style.left = '0';\n this.block.style.top = '0';\n this.block.style.width = '100%';\n this.block.style.height = '100%';\n this.block.style.zIndex = '-1';\n // TODO@Steven: this is never getting disposed\n addDisposableListener(this.block, EventType.MOUSE_DOWN, e => e.stopPropagation());\n }\n const menuDisposables = new DisposableStore();\n const actionRunner = delegate.actionRunner || new ActionRunner();\n actionRunner.onBeforeRun(this.onActionRun, this, menuDisposables);\n actionRunner.onDidRun(this.onDidActionRun, this, menuDisposables);\n menu = new Menu(container, actions, {\n actionViewItemProvider: delegate.getActionViewItem,\n context: delegate.getActionsContext ? delegate.getActionsContext() : null,\n actionRunner,\n getKeyBinding: delegate.getKeyBinding ? delegate.getKeyBinding : action => this.keybindingService.lookupKeybinding(action.id)\n });\n menuDisposables.add(attachMenuStyler(menu, this.themeService));\n menu.onDidCancel(() => this.contextViewService.hideContextView(true), null, menuDisposables);\n menu.onDidBlur(() => this.contextViewService.hideContextView(true), null, menuDisposables);\n menuDisposables.add(addDisposableListener(window, EventType.BLUR, () => this.contextViewService.hideContextView(true)));\n menuDisposables.add(addDisposableListener(window, EventType.MOUSE_DOWN, (e) => {\n if (e.defaultPrevented) {\n return;\n }\n const event = new StandardMouseEvent(e);\n let element = event.target;\n // Don't do anything as we are likely creating a context menu\n if (event.rightButton) {\n return;\n }\n while (element) {\n if (element === container) {\n return;\n }\n element = element.parentElement;\n }\n this.contextViewService.hideContextView(true);\n }));\n return combinedDisposable(menuDisposables, menu);\n },\n focus: () => {\n menu === null || menu === void 0 ? void 0 : menu.focus(!!delegate.autoSelectFirstItem);\n },\n onHide: (didCancel) => {\n var _a;\n (_a = delegate.onHide) === null || _a === void 0 ? void 0 : _a.call(delegate, !!didCancel);\n if (this.block) {\n this.block.remove();\n this.block = null;\n }\n if (this.focusToReturn) {\n this.focusToReturn.focus();\n }\n }\n }, shadowRootElement, !!shadowRootElement);\n }\n onActionRun(e) {\n this.telemetryService.publicLog2('workbenchActionExecuted', { id: e.action.id, from: 'contextMenu' });\n this.contextViewService.hideContextView(false);\n // Restore focus here\n if (this.focusToReturn) {\n this.focusToReturn.focus();\n }\n }\n onDidActionRun(e) {\n if (e.error && !isCancellationError(e.error)) {\n this.notificationService.error(e.error);\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { ModifierKeyEmitter } from '../../../base/browser/dom.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { INotificationService } from '../../notification/common/notification.js';\nimport { ITelemetryService } from '../../telemetry/common/telemetry.js';\nimport { IThemeService } from '../../theme/common/themeService.js';\nimport { ContextMenuHandler } from './contextMenuHandler.js';\nimport { IContextViewService } from './contextView.js';\nlet ContextMenuService = class ContextMenuService extends Disposable {\n constructor(telemetryService, notificationService, contextViewService, keybindingService, themeService) {\n super();\n this._onDidShowContextMenu = new Emitter();\n this._onDidHideContextMenu = new Emitter();\n this.contextMenuHandler = new ContextMenuHandler(contextViewService, telemetryService, notificationService, keybindingService, themeService);\n }\n configure(options) {\n this.contextMenuHandler.configure(options);\n }\n // ContextMenu\n showContextMenu(delegate) {\n this.contextMenuHandler.showContextMenu(Object.assign(Object.assign({}, delegate), { onHide: (didCancel) => {\n var _a;\n (_a = delegate.onHide) === null || _a === void 0 ? void 0 : _a.call(delegate, didCancel);\n this._onDidHideContextMenu.fire();\n } }));\n ModifierKeyEmitter.getInstance().resetKeyStatus();\n this._onDidShowContextMenu.fire();\n }\n};\nContextMenuService = __decorate([\n __param(0, ITelemetryService),\n __param(1, INotificationService),\n __param(2, IContextViewService),\n __param(3, IKeybindingService),\n __param(4, IThemeService)\n], ContextMenuService);\nexport { ContextMenuService };\n","export var EditorOpenSource;\n(function (EditorOpenSource) {\n /**\n * Default: the editor is opening via a programmatic call\n * to the editor service API.\n */\n EditorOpenSource[EditorOpenSource[\"API\"] = 0] = \"API\";\n /**\n * Indicates that a user action triggered the opening, e.g.\n * via mouse or keyboard use.\n */\n EditorOpenSource[EditorOpenSource[\"USER\"] = 1] = \"USER\";\n})(EditorOpenSource || (EditorOpenSource = {}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../base/browser/dom.js';\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport { parse } from '../../../base/common/marshalling.js';\nimport { Schemas } from '../../../base/common/network.js';\nimport { normalizePath } from '../../../base/common/resources.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { ICodeEditorService } from './codeEditorService.js';\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\nimport { EditorOpenSource } from '../../../platform/editor/common/editor.js';\nimport { extractSelection, matchesScheme, matchesSomeScheme } from '../../../platform/opener/common/opener.js';\nlet CommandOpener = class CommandOpener {\n constructor(_commandService) {\n this._commandService = _commandService;\n }\n open(target, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!matchesScheme(target, Schemas.command)) {\n return false;\n }\n if (!(options === null || options === void 0 ? void 0 : options.allowCommands)) {\n // silently ignore commands when command-links are disabled, also\n // surpress other openers by returning TRUE\n return true;\n }\n // run command or bail out if command isn't known\n if (typeof target === 'string') {\n target = URI.parse(target);\n }\n // execute as command\n let args = [];\n try {\n args = parse(decodeURIComponent(target.query));\n }\n catch (_a) {\n // ignore and retry\n try {\n args = parse(target.query);\n }\n catch (_b) {\n // ignore error\n }\n }\n if (!Array.isArray(args)) {\n args = [args];\n }\n yield this._commandService.executeCommand(target.path, ...args);\n return true;\n });\n }\n};\nCommandOpener = __decorate([\n __param(0, ICommandService)\n], CommandOpener);\nlet EditorOpener = class EditorOpener {\n constructor(_editorService) {\n this._editorService = _editorService;\n }\n open(target, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof target === 'string') {\n target = URI.parse(target);\n }\n const { selection, uri } = extractSelection(target);\n target = uri;\n if (target.scheme === Schemas.file) {\n target = normalizePath(target); // workaround for non-normalized paths (https://github.com/microsoft/vscode/issues/12954)\n }\n yield this._editorService.openCodeEditor({\n resource: target,\n options: Object.assign({ selection, source: (options === null || options === void 0 ? void 0 : options.fromUserGesture) ? EditorOpenSource.USER : EditorOpenSource.API }, options === null || options === void 0 ? void 0 : options.editorOptions)\n }, this._editorService.getFocusedCodeEditor(), options === null || options === void 0 ? void 0 : options.openToSide);\n return true;\n });\n }\n};\nEditorOpener = __decorate([\n __param(0, ICodeEditorService)\n], EditorOpener);\nlet OpenerService = class OpenerService {\n constructor(editorService, commandService) {\n this._openers = new LinkedList();\n this._validators = new LinkedList();\n this._resolvers = new LinkedList();\n this._resolvedUriTargets = new ResourceMap(uri => uri.with({ path: null, fragment: null, query: null }).toString());\n this._externalOpeners = new LinkedList();\n // Default external opener is going through window.open()\n this._defaultExternalOpener = {\n openExternal: (href) => __awaiter(this, void 0, void 0, function* () {\n // ensure to open HTTP/HTTPS links into new windows\n // to not trigger a navigation. Any other link is\n // safe to be set as HREF to prevent a blank window\n // from opening.\n if (matchesSomeScheme(href, Schemas.http, Schemas.https)) {\n dom.windowOpenNoOpener(href);\n }\n else {\n window.location.href = href;\n }\n return true;\n })\n };\n // Default opener: any external, maito, http(s), command, and catch-all-editors\n this._openers.push({\n open: (target, options) => __awaiter(this, void 0, void 0, function* () {\n if ((options === null || options === void 0 ? void 0 : options.openExternal) || matchesSomeScheme(target, Schemas.mailto, Schemas.http, Schemas.https, Schemas.vsls)) {\n // open externally\n yield this._doOpenExternal(target, options);\n return true;\n }\n return false;\n })\n });\n this._openers.push(new CommandOpener(commandService));\n this._openers.push(new EditorOpener(editorService));\n }\n registerOpener(opener) {\n const remove = this._openers.unshift(opener);\n return { dispose: remove };\n }\n registerValidator(validator) {\n const remove = this._validators.push(validator);\n return { dispose: remove };\n }\n registerExternalUriResolver(resolver) {\n const remove = this._resolvers.push(resolver);\n return { dispose: remove };\n }\n setDefaultExternalOpener(externalOpener) {\n this._defaultExternalOpener = externalOpener;\n }\n registerExternalOpener(opener) {\n const remove = this._externalOpeners.push(opener);\n return { dispose: remove };\n }\n open(target, options) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // check with contributed validators\n const targetURI = typeof target === 'string' ? URI.parse(target) : target;\n // validate against the original URI that this URI resolves to, if one exists\n const validationTarget = (_a = this._resolvedUriTargets.get(targetURI)) !== null && _a !== void 0 ? _a : target;\n for (const validator of this._validators) {\n if (!(yield validator.shouldOpen(validationTarget, options))) {\n return false;\n }\n }\n // check with contributed openers\n for (const opener of this._openers) {\n const handled = yield opener.open(target, options);\n if (handled) {\n return true;\n }\n }\n return false;\n });\n }\n resolveExternalUri(resource, options) {\n return __awaiter(this, void 0, void 0, function* () {\n for (const resolver of this._resolvers) {\n try {\n const result = yield resolver.resolveExternalUri(resource, options);\n if (result) {\n if (!this._resolvedUriTargets.has(result.resolved)) {\n this._resolvedUriTargets.set(result.resolved, resource);\n }\n return result;\n }\n }\n catch (_a) {\n // noop\n }\n }\n throw new Error('Could not resolve external URI: ' + resource.toString());\n });\n }\n _doOpenExternal(resource, options) {\n return __awaiter(this, void 0, void 0, function* () {\n //todo@jrieken IExternalUriResolver should support `uri: URI | string`\n const uri = typeof resource === 'string' ? URI.parse(resource) : resource;\n let externalUri;\n try {\n externalUri = (yield this.resolveExternalUri(uri, options)).resolved;\n }\n catch (_a) {\n externalUri = uri;\n }\n let href;\n if (typeof resource === 'string' && uri.toString() === externalUri.toString()) {\n // open the url-string AS IS\n href = resource;\n }\n else {\n // open URI using the toString(noEncode)+encodeURI-trick\n href = encodeURI(externalUri.toString(true));\n }\n if (options === null || options === void 0 ? void 0 : options.allowContributedOpeners) {\n const preferredOpenerId = typeof (options === null || options === void 0 ? void 0 : options.allowContributedOpeners) === 'string' ? options === null || options === void 0 ? void 0 : options.allowContributedOpeners : undefined;\n for (const opener of this._externalOpeners) {\n const didOpen = yield opener.openExternal(href, {\n sourceUri: uri,\n preferredOpenerId,\n }, CancellationToken.None);\n if (didOpen) {\n return true;\n }\n }\n }\n return this._defaultExternalOpener.openExternal(href, { sourceUri: uri }, CancellationToken.None);\n });\n }\n dispose() {\n this._validators.clear();\n }\n};\nOpenerService = __decorate([\n __param(0, ICodeEditorService),\n __param(1, ICommandService)\n], OpenerService);\nexport { OpenerService };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { IMarkerService, MarkerSeverity } from '../../../platform/markers/common/markers.js';\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { OverviewRulerLane, MinimapPosition } from '../model.js';\nimport { themeColorFromId } from '../../../platform/theme/common/themeService.js';\nimport { overviewRulerWarning, overviewRulerInfo, overviewRulerError } from '../core/editorColorRegistry.js';\nimport { IModelService } from './model.js';\nimport { Range } from '../core/range.js';\nimport { Schemas } from '../../../base/common/network.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { minimapWarning, minimapError } from '../../../platform/theme/common/colorRegistry.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nclass MarkerDecorations extends Disposable {\n constructor(model) {\n super();\n this.model = model;\n this._markersData = new Map();\n this._register(toDisposable(() => {\n this.model.deltaDecorations([...this._markersData.keys()], []);\n this._markersData.clear();\n }));\n }\n update(markers, newDecorations) {\n const oldIds = [...this._markersData.keys()];\n this._markersData.clear();\n const ids = this.model.deltaDecorations(oldIds, newDecorations);\n for (let index = 0; index < ids.length; index++) {\n this._markersData.set(ids[index], markers[index]);\n }\n return oldIds.length !== 0 || ids.length !== 0;\n }\n getMarker(decoration) {\n return this._markersData.get(decoration.id);\n }\n}\nlet MarkerDecorationsService = class MarkerDecorationsService extends Disposable {\n constructor(modelService, _markerService) {\n super();\n this._markerService = _markerService;\n this._onDidChangeMarker = this._register(new Emitter());\n this._markerDecorations = new ResourceMap();\n modelService.getModels().forEach(model => this._onModelAdded(model));\n this._register(modelService.onModelAdded(this._onModelAdded, this));\n this._register(modelService.onModelRemoved(this._onModelRemoved, this));\n this._register(this._markerService.onMarkerChanged(this._handleMarkerChange, this));\n }\n dispose() {\n super.dispose();\n this._markerDecorations.forEach(value => value.dispose());\n this._markerDecorations.clear();\n }\n getMarker(uri, decoration) {\n const markerDecorations = this._markerDecorations.get(uri);\n return markerDecorations ? (markerDecorations.getMarker(decoration) || null) : null;\n }\n _handleMarkerChange(changedResources) {\n changedResources.forEach((resource) => {\n const markerDecorations = this._markerDecorations.get(resource);\n if (markerDecorations) {\n this._updateDecorations(markerDecorations);\n }\n });\n }\n _onModelAdded(model) {\n const markerDecorations = new MarkerDecorations(model);\n this._markerDecorations.set(model.uri, markerDecorations);\n this._updateDecorations(markerDecorations);\n }\n _onModelRemoved(model) {\n var _a;\n const markerDecorations = this._markerDecorations.get(model.uri);\n if (markerDecorations) {\n markerDecorations.dispose();\n this._markerDecorations.delete(model.uri);\n }\n // clean up markers for internal, transient models\n if (model.uri.scheme === Schemas.inMemory\n || model.uri.scheme === Schemas.internal\n || model.uri.scheme === Schemas.vscode) {\n (_a = this._markerService) === null || _a === void 0 ? void 0 : _a.read({ resource: model.uri }).map(marker => marker.owner).forEach(owner => this._markerService.remove(owner, [model.uri]));\n }\n }\n _updateDecorations(markerDecorations) {\n // Limit to the first 500 errors/warnings\n const markers = this._markerService.read({ resource: markerDecorations.model.uri, take: 500 });\n const newModelDecorations = markers.map((marker) => {\n return {\n range: this._createDecorationRange(markerDecorations.model, marker),\n options: this._createDecorationOption(marker)\n };\n });\n if (markerDecorations.update(markers, newModelDecorations)) {\n this._onDidChangeMarker.fire(markerDecorations.model);\n }\n }\n _createDecorationRange(model, rawMarker) {\n let ret = Range.lift(rawMarker);\n if (rawMarker.severity === MarkerSeverity.Hint && !this._hasMarkerTag(rawMarker, 1 /* MarkerTag.Unnecessary */) && !this._hasMarkerTag(rawMarker, 2 /* MarkerTag.Deprecated */)) {\n // * never render hints on multiple lines\n // * make enough space for three dots\n ret = ret.setEndPosition(ret.startLineNumber, ret.startColumn + 2);\n }\n ret = model.validateRange(ret);\n if (ret.isEmpty()) {\n const maxColumn = model.getLineLastNonWhitespaceColumn(ret.startLineNumber) ||\n model.getLineMaxColumn(ret.startLineNumber);\n if (maxColumn === 1 || ret.endColumn >= maxColumn) {\n // empty line or behind eol\n // keep the range as is, it will be rendered 1ch wide\n return ret;\n }\n const word = model.getWordAtPosition(ret.getStartPosition());\n if (word) {\n ret = new Range(ret.startLineNumber, word.startColumn, ret.endLineNumber, word.endColumn);\n }\n }\n else if (rawMarker.endColumn === Number.MAX_VALUE && rawMarker.startColumn === 1 && ret.startLineNumber === ret.endLineNumber) {\n const minColumn = model.getLineFirstNonWhitespaceColumn(rawMarker.startLineNumber);\n if (minColumn < ret.endColumn) {\n ret = new Range(ret.startLineNumber, minColumn, ret.endLineNumber, ret.endColumn);\n rawMarker.startColumn = minColumn;\n }\n }\n return ret;\n }\n _createDecorationOption(marker) {\n let className;\n let color = undefined;\n let zIndex;\n let inlineClassName = undefined;\n let minimap;\n switch (marker.severity) {\n case MarkerSeverity.Hint:\n if (this._hasMarkerTag(marker, 2 /* MarkerTag.Deprecated */)) {\n className = undefined;\n }\n else if (this._hasMarkerTag(marker, 1 /* MarkerTag.Unnecessary */)) {\n className = \"squiggly-unnecessary\" /* ClassName.EditorUnnecessaryDecoration */;\n }\n else {\n className = \"squiggly-hint\" /* ClassName.EditorHintDecoration */;\n }\n zIndex = 0;\n break;\n case MarkerSeverity.Warning:\n className = \"squiggly-warning\" /* ClassName.EditorWarningDecoration */;\n color = themeColorFromId(overviewRulerWarning);\n zIndex = 20;\n minimap = {\n color: themeColorFromId(minimapWarning),\n position: MinimapPosition.Inline\n };\n break;\n case MarkerSeverity.Info:\n className = \"squiggly-info\" /* ClassName.EditorInfoDecoration */;\n color = themeColorFromId(overviewRulerInfo);\n zIndex = 10;\n break;\n case MarkerSeverity.Error:\n default:\n className = \"squiggly-error\" /* ClassName.EditorErrorDecoration */;\n color = themeColorFromId(overviewRulerError);\n zIndex = 30;\n minimap = {\n color: themeColorFromId(minimapError),\n position: MinimapPosition.Inline\n };\n break;\n }\n if (marker.tags) {\n if (marker.tags.indexOf(1 /* MarkerTag.Unnecessary */) !== -1) {\n inlineClassName = \"squiggly-inline-unnecessary\" /* ClassName.EditorUnnecessaryInlineDecoration */;\n }\n if (marker.tags.indexOf(2 /* MarkerTag.Deprecated */) !== -1) {\n inlineClassName = \"squiggly-inline-deprecated\" /* ClassName.EditorDeprecatedInlineDecoration */;\n }\n }\n return {\n description: 'marker-decoration',\n stickiness: 1 /* TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges */,\n className,\n showIfCollapsed: true,\n overviewRuler: {\n color,\n position: OverviewRulerLane.Right\n },\n minimap,\n zIndex,\n inlineClassName,\n };\n }\n _hasMarkerTag(marker, tag) {\n if (marker.tags) {\n return marker.tags.indexOf(tag) >= 0;\n }\n return false;\n }\n};\nMarkerDecorationsService = __decorate([\n __param(0, IModelService),\n __param(1, IMarkerService)\n], MarkerDecorationsService);\nexport { MarkerDecorationsService };\n","import { addDisposableListener, EventHelper, EventType, reset, trackFocus } from '../../dom.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { EventType as TouchEventType, Gesture } from '../../touch.js';\nimport { renderLabelWithIcons } from '../iconLabel/iconLabels.js';\nimport { Color } from '../../../common/color.js';\nimport { Emitter } from '../../../common/event.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport { mixin } from '../../../common/objects.js';\nimport './button.css';\nconst defaultOptions = {\n buttonBackground: Color.fromHex('#0E639C'),\n buttonHoverBackground: Color.fromHex('#006BB3'),\n buttonSeparator: Color.white,\n buttonForeground: Color.white\n};\nexport class Button extends Disposable {\n constructor(container, options) {\n super();\n this._onDidClick = this._register(new Emitter());\n this.options = options || Object.create(null);\n mixin(this.options, defaultOptions, false);\n this.buttonForeground = this.options.buttonForeground;\n this.buttonBackground = this.options.buttonBackground;\n this.buttonHoverBackground = this.options.buttonHoverBackground;\n this.buttonSecondaryForeground = this.options.buttonSecondaryForeground;\n this.buttonSecondaryBackground = this.options.buttonSecondaryBackground;\n this.buttonSecondaryHoverBackground = this.options.buttonSecondaryHoverBackground;\n this.buttonBorder = this.options.buttonBorder;\n this._element = document.createElement('a');\n this._element.classList.add('monaco-button');\n this._element.tabIndex = 0;\n this._element.setAttribute('role', 'button');\n container.appendChild(this._element);\n this._register(Gesture.addTarget(this._element));\n [EventType.CLICK, TouchEventType.Tap].forEach(eventType => {\n this._register(addDisposableListener(this._element, eventType, e => {\n if (!this.enabled) {\n EventHelper.stop(e);\n return;\n }\n this._onDidClick.fire(e);\n }));\n });\n this._register(addDisposableListener(this._element, EventType.KEY_DOWN, e => {\n const event = new StandardKeyboardEvent(e);\n let eventHandled = false;\n if (this.enabled && (event.equals(3 /* KeyCode.Enter */) || event.equals(10 /* KeyCode.Space */))) {\n this._onDidClick.fire(e);\n eventHandled = true;\n }\n else if (event.equals(9 /* KeyCode.Escape */)) {\n this._element.blur();\n eventHandled = true;\n }\n if (eventHandled) {\n EventHelper.stop(event, true);\n }\n }));\n this._register(addDisposableListener(this._element, EventType.MOUSE_OVER, e => {\n if (!this._element.classList.contains('disabled')) {\n this.setHoverBackground();\n }\n }));\n this._register(addDisposableListener(this._element, EventType.MOUSE_OUT, e => {\n this.applyStyles(); // restore standard styles\n }));\n // Also set hover background when button is focused for feedback\n this.focusTracker = this._register(trackFocus(this._element));\n this._register(this.focusTracker.onDidFocus(() => { if (this.enabled) {\n this.setHoverBackground();\n } }));\n this._register(this.focusTracker.onDidBlur(() => { if (this.enabled) {\n this.applyStyles();\n } }));\n this.applyStyles();\n }\n get onDidClick() { return this._onDidClick.event; }\n setHoverBackground() {\n let hoverBackground;\n if (this.options.secondary) {\n hoverBackground = this.buttonSecondaryHoverBackground ? this.buttonSecondaryHoverBackground.toString() : null;\n }\n else {\n hoverBackground = this.buttonHoverBackground ? this.buttonHoverBackground.toString() : null;\n }\n if (hoverBackground) {\n this._element.style.backgroundColor = hoverBackground;\n }\n }\n style(styles) {\n this.buttonForeground = styles.buttonForeground;\n this.buttonBackground = styles.buttonBackground;\n this.buttonHoverBackground = styles.buttonHoverBackground;\n this.buttonSecondaryForeground = styles.buttonSecondaryForeground;\n this.buttonSecondaryBackground = styles.buttonSecondaryBackground;\n this.buttonSecondaryHoverBackground = styles.buttonSecondaryHoverBackground;\n this.buttonBorder = styles.buttonBorder;\n this.applyStyles();\n }\n applyStyles() {\n if (this._element) {\n let background, foreground;\n if (this.options.secondary) {\n foreground = this.buttonSecondaryForeground ? this.buttonSecondaryForeground.toString() : '';\n background = this.buttonSecondaryBackground ? this.buttonSecondaryBackground.toString() : '';\n }\n else {\n foreground = this.buttonForeground ? this.buttonForeground.toString() : '';\n background = this.buttonBackground ? this.buttonBackground.toString() : '';\n }\n const border = this.buttonBorder ? this.buttonBorder.toString() : '';\n this._element.style.color = foreground;\n this._element.style.backgroundColor = background;\n this._element.style.borderWidth = border ? '1px' : '';\n this._element.style.borderStyle = border ? 'solid' : '';\n this._element.style.borderColor = border;\n }\n }\n get element() {\n return this._element;\n }\n set label(value) {\n this._element.classList.add('monaco-text-button');\n if (this.options.supportIcons) {\n reset(this._element, ...renderLabelWithIcons(value));\n }\n else {\n this._element.textContent = value;\n }\n if (typeof this.options.title === 'string') {\n this._element.title = this.options.title;\n }\n else if (this.options.title) {\n this._element.title = value;\n }\n }\n set enabled(value) {\n if (value) {\n this._element.classList.remove('disabled');\n this._element.setAttribute('aria-disabled', String(false));\n this._element.tabIndex = 0;\n }\n else {\n this._element.classList.add('disabled');\n this._element.setAttribute('aria-disabled', String(true));\n }\n }\n get enabled() {\n return !this._element.classList.contains('disabled');\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { show } from '../../dom.js';\nimport { RunOnceScheduler } from '../../../common/async.js';\nimport { Color } from '../../../common/color.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport { mixin } from '../../../common/objects.js';\nimport './progressbar.css';\nconst CSS_DONE = 'done';\nconst CSS_ACTIVE = 'active';\nconst CSS_INFINITE = 'infinite';\nconst CSS_INFINITE_LONG_RUNNING = 'infinite-long-running';\nconst CSS_DISCRETE = 'discrete';\nconst defaultOpts = {\n progressBarBackground: Color.fromHex('#0E70C0')\n};\n/**\n * A progress bar with support for infinite or discrete progress.\n */\nexport class ProgressBar extends Disposable {\n constructor(container, options) {\n super();\n this.options = options || Object.create(null);\n mixin(this.options, defaultOpts, false);\n this.workedVal = 0;\n this.progressBarBackground = this.options.progressBarBackground;\n this.showDelayedScheduler = this._register(new RunOnceScheduler(() => show(this.element), 0));\n this.longRunningScheduler = this._register(new RunOnceScheduler(() => this.infiniteLongRunning(), ProgressBar.LONG_RUNNING_INFINITE_THRESHOLD));\n this.create(container);\n }\n create(container) {\n this.element = document.createElement('div');\n this.element.classList.add('monaco-progress-container');\n this.element.setAttribute('role', 'progressbar');\n this.element.setAttribute('aria-valuemin', '0');\n container.appendChild(this.element);\n this.bit = document.createElement('div');\n this.bit.classList.add('progress-bit');\n this.element.appendChild(this.bit);\n this.applyStyles();\n }\n off() {\n this.bit.style.width = 'inherit';\n this.bit.style.opacity = '1';\n this.element.classList.remove(CSS_ACTIVE, CSS_INFINITE, CSS_INFINITE_LONG_RUNNING, CSS_DISCRETE);\n this.workedVal = 0;\n this.totalWork = undefined;\n this.longRunningScheduler.cancel();\n }\n /**\n * Stops the progressbar from showing any progress instantly without fading out.\n */\n stop() {\n return this.doDone(false);\n }\n doDone(delayed) {\n this.element.classList.add(CSS_DONE);\n // discrete: let it grow to 100% width and hide afterwards\n if (!this.element.classList.contains(CSS_INFINITE)) {\n this.bit.style.width = 'inherit';\n if (delayed) {\n setTimeout(() => this.off(), 200);\n }\n else {\n this.off();\n }\n }\n // infinite: let it fade out and hide afterwards\n else {\n this.bit.style.opacity = '0';\n if (delayed) {\n setTimeout(() => this.off(), 200);\n }\n else {\n this.off();\n }\n }\n return this;\n }\n /**\n * Use this mode to indicate progress that has no total number of work units.\n */\n infinite() {\n this.bit.style.width = '2%';\n this.bit.style.opacity = '1';\n this.element.classList.remove(CSS_DISCRETE, CSS_DONE, CSS_INFINITE_LONG_RUNNING);\n this.element.classList.add(CSS_ACTIVE, CSS_INFINITE);\n this.longRunningScheduler.schedule();\n return this;\n }\n infiniteLongRunning() {\n this.element.classList.add(CSS_INFINITE_LONG_RUNNING);\n }\n getContainer() {\n return this.element;\n }\n style(styles) {\n this.progressBarBackground = styles.progressBarBackground;\n this.applyStyles();\n }\n applyStyles() {\n if (this.bit) {\n const background = this.progressBarBackground ? this.progressBarBackground.toString() : '';\n this.bit.style.backgroundColor = background;\n }\n }\n}\n/**\n * After a certain time of showing the progress bar, switch\n * to long-running mode and throttle animations to reduce\n * the pressure on the GPU process.\n *\n * https://github.com/microsoft/vscode/issues/97900\n * https://github.com/microsoft/vscode/issues/138396\n */\nProgressBar.LONG_RUNNING_INFINITE_THRESHOLD = 10000;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../browser/dom.js';\nimport { IdGenerator } from '../../../common/idGenerator.js';\nimport './media/quickInput.css';\nconst iconPathToClass = {};\nconst iconClassGenerator = new IdGenerator('quick-input-button-icon-');\nexport function getIconClass(iconPath) {\n if (!iconPath) {\n return undefined;\n }\n let iconClass;\n const key = iconPath.dark.toString();\n if (iconPathToClass[key]) {\n iconClass = iconPathToClass[key];\n }\n else {\n iconClass = iconClassGenerator.nextId();\n dom.createCSSRule(`.${iconClass}, .hc-light .${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.light || iconPath.dark)}`);\n dom.createCSSRule(`.vs-dark .${iconClass}, .hc-black .${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.dark)}`);\n iconPathToClass[key] = iconClass;\n }\n return iconClass;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\nimport { StandardMouseEvent } from '../../../browser/mouseEvent.js';\nimport { InputBox } from '../../../browser/ui/inputbox/inputBox.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport Severity from '../../../common/severity.js';\nimport './media/quickInput.css';\nconst $ = dom.$;\nexport class QuickInputBox extends Disposable {\n constructor(parent) {\n super();\n this.parent = parent;\n this.onKeyDown = (handler) => {\n return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.KEY_DOWN, (e) => {\n handler(new StandardKeyboardEvent(e));\n });\n };\n this.onMouseDown = (handler) => {\n return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.MOUSE_DOWN, (e) => {\n handler(new StandardMouseEvent(e));\n });\n };\n this.onDidChange = (handler) => {\n return this.inputBox.onDidChange(handler);\n };\n this.container = dom.append(this.parent, $('.quick-input-box'));\n this.inputBox = this._register(new InputBox(this.container, undefined));\n }\n get value() {\n return this.inputBox.value;\n }\n set value(value) {\n this.inputBox.value = value;\n }\n select(range = null) {\n this.inputBox.select(range);\n }\n isSelectionAtEnd() {\n return this.inputBox.isSelectionAtEnd();\n }\n get placeholder() {\n return this.inputBox.inputElement.getAttribute('placeholder') || '';\n }\n set placeholder(placeholder) {\n this.inputBox.setPlaceHolder(placeholder);\n }\n get ariaLabel() {\n return this.inputBox.getAriaLabel();\n }\n set ariaLabel(ariaLabel) {\n this.inputBox.setAriaLabel(ariaLabel);\n }\n get password() {\n return this.inputBox.inputElement.type === 'password';\n }\n set password(password) {\n this.inputBox.inputElement.type = password ? 'password' : 'text';\n }\n setAttribute(name, value) {\n this.inputBox.inputElement.setAttribute(name, value);\n }\n removeAttribute(name) {\n this.inputBox.inputElement.removeAttribute(name);\n }\n showDecoration(decoration) {\n if (decoration === Severity.Ignore) {\n this.inputBox.hideMessage();\n }\n else {\n this.inputBox.showMessage({ type: decoration === Severity.Info ? 1 /* MessageType.INFO */ : decoration === Severity.Warning ? 2 /* MessageType.WARNING */ : 3 /* MessageType.ERROR */, content: '' });\n }\n }\n stylesForType(decoration) {\n return this.inputBox.stylesForType(decoration === Severity.Info ? 1 /* MessageType.INFO */ : decoration === Severity.Warning ? 2 /* MessageType.WARNING */ : 3 /* MessageType.ERROR */);\n }\n setFocus() {\n this.inputBox.focus();\n }\n layout() {\n this.inputBox.layout();\n }\n style(styles) {\n this.inputBox.style(styles);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../dom.js';\nimport { UILabelProvider } from '../../../common/keybindingLabels.js';\nimport { equals } from '../../../common/objects.js';\nimport './keybindingLabel.css';\nimport { localize } from '../../../../nls.js';\nconst $ = dom.$;\nexport class KeybindingLabel {\n constructor(container, os, options) {\n this.os = os;\n this.keyElements = new Set();\n this.options = options || Object.create(null);\n this.labelBackground = this.options.keybindingLabelBackground;\n this.labelForeground = this.options.keybindingLabelForeground;\n this.labelBorder = this.options.keybindingLabelBorder;\n this.labelBottomBorder = this.options.keybindingLabelBottomBorder;\n this.labelShadow = this.options.keybindingLabelShadow;\n this.domNode = dom.append(container, $('.monaco-keybinding'));\n this.didEverRender = false;\n container.appendChild(this.domNode);\n }\n get element() {\n return this.domNode;\n }\n set(keybinding, matches) {\n if (this.didEverRender && this.keybinding === keybinding && KeybindingLabel.areSame(this.matches, matches)) {\n return;\n }\n this.keybinding = keybinding;\n this.matches = matches;\n this.render();\n }\n render() {\n this.clear();\n if (this.keybinding) {\n const [firstPart, chordPart] = this.keybinding.getParts();\n if (firstPart) {\n this.renderPart(this.domNode, firstPart, this.matches ? this.matches.firstPart : null);\n }\n if (chordPart) {\n dom.append(this.domNode, $('span.monaco-keybinding-key-chord-separator', undefined, ' '));\n this.renderPart(this.domNode, chordPart, this.matches ? this.matches.chordPart : null);\n }\n this.domNode.title = this.keybinding.getAriaLabel() || '';\n }\n else if (this.options && this.options.renderUnboundKeybindings) {\n this.renderUnbound(this.domNode);\n }\n this.applyStyles();\n this.didEverRender = true;\n }\n clear() {\n dom.clearNode(this.domNode);\n this.keyElements.clear();\n }\n renderPart(parent, part, match) {\n const modifierLabels = UILabelProvider.modifierLabels[this.os];\n if (part.ctrlKey) {\n this.renderKey(parent, modifierLabels.ctrlKey, Boolean(match === null || match === void 0 ? void 0 : match.ctrlKey), modifierLabels.separator);\n }\n if (part.shiftKey) {\n this.renderKey(parent, modifierLabels.shiftKey, Boolean(match === null || match === void 0 ? void 0 : match.shiftKey), modifierLabels.separator);\n }\n if (part.altKey) {\n this.renderKey(parent, modifierLabels.altKey, Boolean(match === null || match === void 0 ? void 0 : match.altKey), modifierLabels.separator);\n }\n if (part.metaKey) {\n this.renderKey(parent, modifierLabels.metaKey, Boolean(match === null || match === void 0 ? void 0 : match.metaKey), modifierLabels.separator);\n }\n const keyLabel = part.keyLabel;\n if (keyLabel) {\n this.renderKey(parent, keyLabel, Boolean(match === null || match === void 0 ? void 0 : match.keyCode), '');\n }\n }\n renderKey(parent, label, highlight, separator) {\n dom.append(parent, this.createKeyElement(label, highlight ? '.highlight' : ''));\n if (separator) {\n dom.append(parent, $('span.monaco-keybinding-key-separator', undefined, separator));\n }\n }\n renderUnbound(parent) {\n dom.append(parent, this.createKeyElement(localize('unbound', \"Unbound\")));\n }\n createKeyElement(label, extraClass = '') {\n const keyElement = $('span.monaco-keybinding-key' + extraClass, undefined, label);\n this.keyElements.add(keyElement);\n return keyElement;\n }\n style(styles) {\n this.labelBackground = styles.keybindingLabelBackground;\n this.labelForeground = styles.keybindingLabelForeground;\n this.labelBorder = styles.keybindingLabelBorder;\n this.labelBottomBorder = styles.keybindingLabelBottomBorder;\n this.labelShadow = styles.keybindingLabelShadow;\n this.applyStyles();\n }\n applyStyles() {\n var _a;\n if (this.element) {\n for (const keyElement of this.keyElements) {\n if (this.labelBackground) {\n keyElement.style.backgroundColor = (_a = this.labelBackground) === null || _a === void 0 ? void 0 : _a.toString();\n }\n if (this.labelBorder) {\n keyElement.style.borderColor = this.labelBorder.toString();\n }\n if (this.labelBottomBorder) {\n keyElement.style.borderBottomColor = this.labelBottomBorder.toString();\n }\n if (this.labelShadow) {\n keyElement.style.boxShadow = `inset 0 -1px 0 ${this.labelShadow}`;\n }\n }\n if (this.labelForeground) {\n this.element.style.color = this.labelForeground.toString();\n }\n }\n }\n static areSame(a, b) {\n if (a === b || (!a && !b)) {\n return true;\n }\n return !!a && !!b && equals(a.firstPart, b.firstPart) && equals(a.chordPart, b.chordPart);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IdleValue } from './async.js';\n// When comparing large numbers of strings it's better for performance to create an\n// Intl.Collator object and use the function provided by its compare property\n// than it is to use String.prototype.localeCompare()\n// A collator with numeric sorting enabled, and no sensitivity to case, accents or diacritics.\nconst intlFileNameCollatorBaseNumeric = new IdleValue(() => {\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\n return {\n collator: collator,\n collatorIsNumeric: collator.resolvedOptions().numeric\n };\n});\n// A collator with numeric sorting enabled.\nconst intlFileNameCollatorNumeric = new IdleValue(() => {\n const collator = new Intl.Collator(undefined, { numeric: true });\n return {\n collator: collator\n };\n});\n// A collator with numeric sorting enabled, and sensitivity to accents and diacritics but not case.\nconst intlFileNameCollatorNumericCaseInsensitive = new IdleValue(() => {\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'accent' });\n return {\n collator: collator\n };\n});\n/** Compares filenames without distinguishing the name from the extension. Disambiguates by unicode comparison. */\nexport function compareFileNames(one, other, caseSensitive = false) {\n const a = one || '';\n const b = other || '';\n const result = intlFileNameCollatorBaseNumeric.value.collator.compare(a, b);\n // Using the numeric option will make compare(`foo1`, `foo01`) === 0. Disambiguate.\n if (intlFileNameCollatorBaseNumeric.value.collatorIsNumeric && result === 0 && a !== b) {\n return a < b ? -1 : 1;\n }\n return result;\n}\nexport function compareAnything(one, other, lookFor) {\n const elementAName = one.toLowerCase();\n const elementBName = other.toLowerCase();\n // Sort prefix matches over non prefix matches\n const prefixCompare = compareByPrefix(one, other, lookFor);\n if (prefixCompare) {\n return prefixCompare;\n }\n // Sort suffix matches over non suffix matches\n const elementASuffixMatch = elementAName.endsWith(lookFor);\n const elementBSuffixMatch = elementBName.endsWith(lookFor);\n if (elementASuffixMatch !== elementBSuffixMatch) {\n return elementASuffixMatch ? -1 : 1;\n }\n // Understand file names\n const r = compareFileNames(elementAName, elementBName);\n if (r !== 0) {\n return r;\n }\n // Compare by name\n return elementAName.localeCompare(elementBName);\n}\nexport function compareByPrefix(one, other, lookFor) {\n const elementAName = one.toLowerCase();\n const elementBName = other.toLowerCase();\n // Sort prefix matches over non prefix matches\n const elementAPrefixMatch = elementAName.startsWith(lookFor);\n const elementBPrefixMatch = elementBName.startsWith(lookFor);\n if (elementAPrefixMatch !== elementBPrefixMatch) {\n return elementAPrefixMatch ? -1 : 1;\n }\n // Same prefix: Sort shorter matches to the top to have those on top that match more precisely\n else if (elementAPrefixMatch && elementBPrefixMatch) {\n if (elementAName.length < elementBName.length) {\n return -1;\n }\n if (elementAName.length > elementBName.length) {\n return 1;\n }\n }\n return 0;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\nimport { ActionBar } from '../../../browser/ui/actionbar/actionbar.js';\nimport { IconLabel } from '../../../browser/ui/iconLabel/iconLabel.js';\nimport { KeybindingLabel } from '../../../browser/ui/keybindingLabel/keybindingLabel.js';\nimport { Action } from '../../../common/actions.js';\nimport { range } from '../../../common/arrays.js';\nimport { getCodiconAriaLabel } from '../../../common/codicons.js';\nimport { compareAnything } from '../../../common/comparers.js';\nimport { memoize } from '../../../common/decorators.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { matchesFuzzyIconAware, parseLabelWithIcons } from '../../../common/iconLabels.js';\nimport { dispose } from '../../../common/lifecycle.js';\nimport * as platform from '../../../common/platform.js';\nimport { ltrim } from '../../../common/strings.js';\nimport { withNullAsUndefined } from '../../../common/types.js';\nimport { getIconClass } from './quickInputUtils.js';\nimport './media/quickInput.css';\nimport { localize } from '../../../../nls.js';\nconst $ = dom.$;\nclass ListElement {\n constructor(init) {\n this.hidden = false;\n this._onChecked = new Emitter();\n this.onChecked = this._onChecked.event;\n Object.assign(this, init);\n }\n get checked() {\n return !!this._checked;\n }\n set checked(value) {\n if (value !== this._checked) {\n this._checked = value;\n this._onChecked.fire(value);\n }\n }\n dispose() {\n this._onChecked.dispose();\n }\n}\nclass ListElementRenderer {\n get templateId() {\n return ListElementRenderer.ID;\n }\n renderTemplate(container) {\n const data = Object.create(null);\n data.toDisposeElement = [];\n data.toDisposeTemplate = [];\n data.entry = dom.append(container, $('.quick-input-list-entry'));\n // Checkbox\n const label = dom.append(data.entry, $('label.quick-input-list-label'));\n data.toDisposeTemplate.push(dom.addStandardDisposableListener(label, dom.EventType.CLICK, e => {\n if (!data.checkbox.offsetParent) { // If checkbox not visible:\n e.preventDefault(); // Prevent toggle of checkbox when it is immediately shown afterwards. #91740\n }\n }));\n data.checkbox = dom.append(label, $('input.quick-input-list-checkbox'));\n data.checkbox.type = 'checkbox';\n data.toDisposeTemplate.push(dom.addStandardDisposableListener(data.checkbox, dom.EventType.CHANGE, e => {\n data.element.checked = data.checkbox.checked;\n }));\n // Rows\n const rows = dom.append(label, $('.quick-input-list-rows'));\n const row1 = dom.append(rows, $('.quick-input-list-row'));\n const row2 = dom.append(rows, $('.quick-input-list-row'));\n // Label\n data.label = new IconLabel(row1, { supportHighlights: true, supportDescriptionHighlights: true, supportIcons: true });\n // Keybinding\n const keybindingContainer = dom.append(row1, $('.quick-input-list-entry-keybinding'));\n data.keybinding = new KeybindingLabel(keybindingContainer, platform.OS);\n // Detail\n const detailContainer = dom.append(row2, $('.quick-input-list-label-meta'));\n data.detail = new IconLabel(detailContainer, { supportHighlights: true, supportIcons: true });\n // Separator\n data.separator = dom.append(data.entry, $('.quick-input-list-separator'));\n // Actions\n data.actionBar = new ActionBar(data.entry);\n data.actionBar.domNode.classList.add('quick-input-list-entry-action-bar');\n data.toDisposeTemplate.push(data.actionBar);\n return data;\n }\n renderElement(element, index, data) {\n data.toDisposeElement = dispose(data.toDisposeElement);\n data.element = element;\n data.checkbox.checked = element.checked;\n data.toDisposeElement.push(element.onChecked(checked => data.checkbox.checked = checked));\n const { labelHighlights, descriptionHighlights, detailHighlights } = element;\n // Label\n const options = Object.create(null);\n options.matches = labelHighlights || [];\n options.descriptionTitle = element.saneDescription;\n options.descriptionMatches = descriptionHighlights || [];\n options.extraClasses = element.item.iconClasses;\n options.italic = element.item.italic;\n options.strikethrough = element.item.strikethrough;\n data.label.setLabel(element.saneLabel, element.saneDescription, options);\n // Keybinding\n data.keybinding.set(element.item.keybinding);\n // Meta\n if (element.saneDetail) {\n data.detail.setLabel(element.saneDetail, undefined, {\n matches: detailHighlights,\n title: element.saneDetail\n });\n }\n // Separator\n if (element.separator && element.separator.label) {\n data.separator.textContent = element.separator.label;\n data.separator.style.display = '';\n }\n else {\n data.separator.style.display = 'none';\n }\n data.entry.classList.toggle('quick-input-list-separator-border', !!element.separator);\n // Actions\n data.actionBar.clear();\n const buttons = element.item.buttons;\n if (buttons && buttons.length) {\n data.actionBar.push(buttons.map((button, index) => {\n let cssClasses = button.iconClass || (button.iconPath ? getIconClass(button.iconPath) : undefined);\n if (button.alwaysVisible) {\n cssClasses = cssClasses ? `${cssClasses} always-visible` : 'always-visible';\n }\n const action = new Action(`id-${index}`, '', cssClasses, true, () => __awaiter(this, void 0, void 0, function* () {\n element.fireButtonTriggered({\n button,\n item: element.item\n });\n }));\n action.tooltip = button.tooltip || '';\n return action;\n }), { icon: true, label: false });\n data.entry.classList.add('has-actions');\n }\n else {\n data.entry.classList.remove('has-actions');\n }\n }\n disposeElement(element, index, data) {\n data.toDisposeElement = dispose(data.toDisposeElement);\n }\n disposeTemplate(data) {\n data.toDisposeElement = dispose(data.toDisposeElement);\n data.toDisposeTemplate = dispose(data.toDisposeTemplate);\n }\n}\nListElementRenderer.ID = 'listelement';\nclass ListElementDelegate {\n getHeight(element) {\n return element.saneDetail ? 44 : 22;\n }\n getTemplateId(element) {\n return ListElementRenderer.ID;\n }\n}\nexport var QuickInputListFocus;\n(function (QuickInputListFocus) {\n QuickInputListFocus[QuickInputListFocus[\"First\"] = 1] = \"First\";\n QuickInputListFocus[QuickInputListFocus[\"Second\"] = 2] = \"Second\";\n QuickInputListFocus[QuickInputListFocus[\"Last\"] = 3] = \"Last\";\n QuickInputListFocus[QuickInputListFocus[\"Next\"] = 4] = \"Next\";\n QuickInputListFocus[QuickInputListFocus[\"Previous\"] = 5] = \"Previous\";\n QuickInputListFocus[QuickInputListFocus[\"NextPage\"] = 6] = \"NextPage\";\n QuickInputListFocus[QuickInputListFocus[\"PreviousPage\"] = 7] = \"PreviousPage\";\n})(QuickInputListFocus || (QuickInputListFocus = {}));\nexport class QuickInputList {\n constructor(parent, id, options) {\n this.parent = parent;\n this.inputElements = [];\n this.elements = [];\n this.elementsToIndexes = new Map();\n this.matchOnDescription = false;\n this.matchOnDetail = false;\n this.matchOnLabel = true;\n this.matchOnLabelMode = 'fuzzy';\n this.matchOnMeta = true;\n this.sortByLabel = true;\n this._onChangedAllVisibleChecked = new Emitter();\n this.onChangedAllVisibleChecked = this._onChangedAllVisibleChecked.event;\n this._onChangedCheckedCount = new Emitter();\n this.onChangedCheckedCount = this._onChangedCheckedCount.event;\n this._onChangedVisibleCount = new Emitter();\n this.onChangedVisibleCount = this._onChangedVisibleCount.event;\n this._onChangedCheckedElements = new Emitter();\n this.onChangedCheckedElements = this._onChangedCheckedElements.event;\n this._onButtonTriggered = new Emitter();\n this.onButtonTriggered = this._onButtonTriggered.event;\n this._onKeyDown = new Emitter();\n this.onKeyDown = this._onKeyDown.event;\n this._onLeave = new Emitter();\n this.onLeave = this._onLeave.event;\n this._fireCheckedEvents = true;\n this.elementDisposables = [];\n this.disposables = [];\n this.id = id;\n this.container = dom.append(this.parent, $('.quick-input-list'));\n const delegate = new ListElementDelegate();\n const accessibilityProvider = new QuickInputAccessibilityProvider();\n this.list = options.createList('QuickInput', this.container, delegate, [new ListElementRenderer()], {\n identityProvider: { getId: element => element.saneLabel },\n setRowLineHeight: false,\n multipleSelectionSupport: false,\n horizontalScrolling: false,\n accessibilityProvider\n });\n this.list.getHTMLElement().id = id;\n this.disposables.push(this.list);\n this.disposables.push(this.list.onKeyDown(e => {\n const event = new StandardKeyboardEvent(e);\n switch (event.keyCode) {\n case 10 /* KeyCode.Space */:\n this.toggleCheckbox();\n break;\n case 31 /* KeyCode.KeyA */:\n if (platform.isMacintosh ? e.metaKey : e.ctrlKey) {\n this.list.setFocus(range(this.list.length));\n }\n break;\n case 16 /* KeyCode.UpArrow */: {\n const focus1 = this.list.getFocus();\n if (focus1.length === 1 && focus1[0] === 0) {\n this._onLeave.fire();\n }\n break;\n }\n case 18 /* KeyCode.DownArrow */: {\n const focus2 = this.list.getFocus();\n if (focus2.length === 1 && focus2[0] === this.list.length - 1) {\n this._onLeave.fire();\n }\n break;\n }\n }\n this._onKeyDown.fire(event);\n }));\n this.disposables.push(this.list.onMouseDown(e => {\n if (e.browserEvent.button !== 2) {\n // Works around / fixes #64350.\n e.browserEvent.preventDefault();\n }\n }));\n this.disposables.push(dom.addDisposableListener(this.container, dom.EventType.CLICK, e => {\n if (e.x || e.y) { // Avoid 'click' triggered by 'space' on checkbox.\n this._onLeave.fire();\n }\n }));\n this.disposables.push(this.list.onMouseMiddleClick(e => {\n this._onLeave.fire();\n }));\n this.disposables.push(this.list.onContextMenu(e => {\n if (typeof e.index === 'number') {\n e.browserEvent.preventDefault();\n // we want to treat a context menu event as\n // a gesture to open the item at the index\n // since we do not have any context menu\n // this enables for example macOS to Ctrl-\n // click on an item to open it.\n this.list.setSelection([e.index]);\n }\n }));\n this.disposables.push(this._onChangedAllVisibleChecked, this._onChangedCheckedCount, this._onChangedVisibleCount, this._onChangedCheckedElements, this._onButtonTriggered, this._onLeave, this._onKeyDown);\n }\n get onDidChangeFocus() {\n return Event.map(this.list.onDidChangeFocus, e => e.elements.map(e => e.item));\n }\n get onDidChangeSelection() {\n return Event.map(this.list.onDidChangeSelection, e => ({ items: e.elements.map(e => e.item), event: e.browserEvent }));\n }\n get scrollTop() {\n return this.list.scrollTop;\n }\n set scrollTop(scrollTop) {\n this.list.scrollTop = scrollTop;\n }\n getAllVisibleChecked() {\n return this.allVisibleChecked(this.elements, false);\n }\n allVisibleChecked(elements, whenNoneVisible = true) {\n for (let i = 0, n = elements.length; i < n; i++) {\n const element = elements[i];\n if (!element.hidden) {\n if (!element.checked) {\n return false;\n }\n else {\n whenNoneVisible = true;\n }\n }\n }\n return whenNoneVisible;\n }\n getCheckedCount() {\n let count = 0;\n const elements = this.elements;\n for (let i = 0, n = elements.length; i < n; i++) {\n if (elements[i].checked) {\n count++;\n }\n }\n return count;\n }\n getVisibleCount() {\n let count = 0;\n const elements = this.elements;\n for (let i = 0, n = elements.length; i < n; i++) {\n if (!elements[i].hidden) {\n count++;\n }\n }\n return count;\n }\n setAllVisibleChecked(checked) {\n try {\n this._fireCheckedEvents = false;\n this.elements.forEach(element => {\n if (!element.hidden) {\n element.checked = checked;\n }\n });\n }\n finally {\n this._fireCheckedEvents = true;\n this.fireCheckedEvents();\n }\n }\n setElements(inputElements) {\n this.elementDisposables = dispose(this.elementDisposables);\n const fireButtonTriggered = (event) => this.fireButtonTriggered(event);\n this.inputElements = inputElements;\n this.elements = inputElements.reduce((result, item, index) => {\n var _a, _b, _c;\n if (item.type !== 'separator') {\n const previous = index && inputElements[index - 1];\n const saneLabel = item.label && item.label.replace(/\\r?\\n/g, ' ');\n const saneSortLabel = parseLabelWithIcons(saneLabel).text.trim();\n const saneMeta = item.meta && item.meta.replace(/\\r?\\n/g, ' ');\n const saneDescription = item.description && item.description.replace(/\\r?\\n/g, ' ');\n const saneDetail = item.detail && item.detail.replace(/\\r?\\n/g, ' ');\n const saneAriaLabel = item.ariaLabel || [saneLabel, saneDescription, saneDetail]\n .map(s => getCodiconAriaLabel(s))\n .filter(s => !!s)\n .join(', ');\n const hasCheckbox = this.parent.classList.contains('show-checkboxes');\n result.push(new ListElement({\n hasCheckbox,\n index,\n item,\n saneLabel,\n saneSortLabel,\n saneMeta,\n saneAriaLabel,\n saneDescription,\n saneDetail,\n labelHighlights: (_a = item.highlights) === null || _a === void 0 ? void 0 : _a.label,\n descriptionHighlights: (_b = item.highlights) === null || _b === void 0 ? void 0 : _b.description,\n detailHighlights: (_c = item.highlights) === null || _c === void 0 ? void 0 : _c.detail,\n checked: false,\n separator: previous && previous.type === 'separator' ? previous : undefined,\n fireButtonTriggered\n }));\n }\n return result;\n }, []);\n this.elementDisposables.push(...this.elements);\n this.elementDisposables.push(...this.elements.map(element => element.onChecked(() => this.fireCheckedEvents())));\n this.elementsToIndexes = this.elements.reduce((map, element, index) => {\n map.set(element.item, index);\n return map;\n }, new Map());\n this.list.splice(0, this.list.length); // Clear focus and selection first, sending the events when the list is empty.\n this.list.splice(0, this.list.length, this.elements);\n this._onChangedVisibleCount.fire(this.elements.length);\n }\n getFocusedElements() {\n return this.list.getFocusedElements()\n .map(e => e.item);\n }\n setFocusedElements(items) {\n this.list.setFocus(items\n .filter(item => this.elementsToIndexes.has(item))\n .map(item => this.elementsToIndexes.get(item)));\n if (items.length > 0) {\n const focused = this.list.getFocus()[0];\n if (typeof focused === 'number') {\n this.list.reveal(focused);\n }\n }\n }\n getActiveDescendant() {\n return this.list.getHTMLElement().getAttribute('aria-activedescendant');\n }\n setSelectedElements(items) {\n this.list.setSelection(items\n .filter(item => this.elementsToIndexes.has(item))\n .map(item => this.elementsToIndexes.get(item)));\n }\n getCheckedElements() {\n return this.elements.filter(e => e.checked)\n .map(e => e.item);\n }\n setCheckedElements(items) {\n try {\n this._fireCheckedEvents = false;\n const checked = new Set();\n for (const item of items) {\n checked.add(item);\n }\n for (const element of this.elements) {\n element.checked = checked.has(element.item);\n }\n }\n finally {\n this._fireCheckedEvents = true;\n this.fireCheckedEvents();\n }\n }\n set enabled(value) {\n this.list.getHTMLElement().style.pointerEvents = value ? '' : 'none';\n }\n focus(what) {\n if (!this.list.length) {\n return;\n }\n if (what === QuickInputListFocus.Next && this.list.getFocus()[0] === this.list.length - 1) {\n what = QuickInputListFocus.First;\n }\n if (what === QuickInputListFocus.Previous && this.list.getFocus()[0] === 0) {\n what = QuickInputListFocus.Last;\n }\n if (what === QuickInputListFocus.Second && this.list.length < 2) {\n what = QuickInputListFocus.First;\n }\n switch (what) {\n case QuickInputListFocus.First:\n this.list.focusFirst();\n break;\n case QuickInputListFocus.Second:\n this.list.focusNth(1);\n break;\n case QuickInputListFocus.Last:\n this.list.focusLast();\n break;\n case QuickInputListFocus.Next:\n this.list.focusNext();\n break;\n case QuickInputListFocus.Previous:\n this.list.focusPrevious();\n break;\n case QuickInputListFocus.NextPage:\n this.list.focusNextPage();\n break;\n case QuickInputListFocus.PreviousPage:\n this.list.focusPreviousPage();\n break;\n }\n const focused = this.list.getFocus()[0];\n if (typeof focused === 'number') {\n this.list.reveal(focused);\n }\n }\n clearFocus() {\n this.list.setFocus([]);\n }\n domFocus() {\n this.list.domFocus();\n }\n layout(maxHeight) {\n this.list.getHTMLElement().style.maxHeight = maxHeight ? `calc(${Math.floor(maxHeight / 44) * 44}px)` : '';\n this.list.layout();\n }\n filter(query) {\n if (!(this.sortByLabel || this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {\n this.list.layout();\n return false;\n }\n const queryWithWhitespace = query;\n query = query.trim();\n // Reset filtering\n if (!query || !(this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {\n this.elements.forEach(element => {\n element.labelHighlights = undefined;\n element.descriptionHighlights = undefined;\n element.detailHighlights = undefined;\n element.hidden = false;\n const previous = element.index && this.inputElements[element.index - 1];\n element.separator = previous && previous.type === 'separator' ? previous : undefined;\n });\n }\n // Filter by value (since we support icons in labels, use $(..) aware fuzzy matching)\n else {\n let currentSeparator;\n this.elements.forEach(element => {\n let labelHighlights;\n if (this.matchOnLabelMode === 'fuzzy') {\n labelHighlights = this.matchOnLabel ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneLabel))) : undefined;\n }\n else {\n labelHighlights = this.matchOnLabel ? withNullAsUndefined(matchesContiguousIconAware(queryWithWhitespace, parseLabelWithIcons(element.saneLabel))) : undefined;\n }\n const descriptionHighlights = this.matchOnDescription ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneDescription || ''))) : undefined;\n const detailHighlights = this.matchOnDetail ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneDetail || ''))) : undefined;\n const metaHighlights = this.matchOnMeta ? withNullAsUndefined(matchesFuzzyIconAware(query, parseLabelWithIcons(element.saneMeta || ''))) : undefined;\n if (labelHighlights || descriptionHighlights || detailHighlights || metaHighlights) {\n element.labelHighlights = labelHighlights;\n element.descriptionHighlights = descriptionHighlights;\n element.detailHighlights = detailHighlights;\n element.hidden = false;\n }\n else {\n element.labelHighlights = undefined;\n element.descriptionHighlights = undefined;\n element.detailHighlights = undefined;\n element.hidden = !element.item.alwaysShow;\n }\n element.separator = undefined;\n // we can show the separator unless the list gets sorted by match\n if (!this.sortByLabel) {\n const previous = element.index && this.inputElements[element.index - 1];\n currentSeparator = previous && previous.type === 'separator' ? previous : currentSeparator;\n if (currentSeparator && !element.hidden) {\n element.separator = currentSeparator;\n currentSeparator = undefined;\n }\n }\n });\n }\n const shownElements = this.elements.filter(element => !element.hidden);\n // Sort by value\n if (this.sortByLabel && query) {\n const normalizedSearchValue = query.toLowerCase();\n shownElements.sort((a, b) => {\n return compareEntries(a, b, normalizedSearchValue);\n });\n }\n this.elementsToIndexes = shownElements.reduce((map, element, index) => {\n map.set(element.item, index);\n return map;\n }, new Map());\n this.list.splice(0, this.list.length, shownElements);\n this.list.setFocus([]);\n this.list.layout();\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\n this._onChangedVisibleCount.fire(shownElements.length);\n return true;\n }\n toggleCheckbox() {\n try {\n this._fireCheckedEvents = false;\n const elements = this.list.getFocusedElements();\n const allChecked = this.allVisibleChecked(elements);\n for (const element of elements) {\n element.checked = !allChecked;\n }\n }\n finally {\n this._fireCheckedEvents = true;\n this.fireCheckedEvents();\n }\n }\n display(display) {\n this.container.style.display = display ? '' : 'none';\n }\n isDisplayed() {\n return this.container.style.display !== 'none';\n }\n dispose() {\n this.elementDisposables = dispose(this.elementDisposables);\n this.disposables = dispose(this.disposables);\n }\n fireCheckedEvents() {\n if (this._fireCheckedEvents) {\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\n this._onChangedCheckedCount.fire(this.getCheckedCount());\n this._onChangedCheckedElements.fire(this.getCheckedElements());\n }\n }\n fireButtonTriggered(event) {\n this._onButtonTriggered.fire(event);\n }\n style(styles) {\n this.list.style(styles);\n }\n}\n__decorate([\n memoize\n], QuickInputList.prototype, \"onDidChangeFocus\", null);\n__decorate([\n memoize\n], QuickInputList.prototype, \"onDidChangeSelection\", null);\nexport function matchesContiguousIconAware(query, target) {\n const { text, iconOffsets } = target;\n // Return early if there are no icon markers in the word to match against\n if (!iconOffsets || iconOffsets.length === 0) {\n return matchesContiguous(query, text);\n }\n // Trim the word to match against because it could have leading\n // whitespace now if the word started with an icon\n const wordToMatchAgainstWithoutIconsTrimmed = ltrim(text, ' ');\n const leadingWhitespaceOffset = text.length - wordToMatchAgainstWithoutIconsTrimmed.length;\n // match on value without icon\n const matches = matchesContiguous(query, wordToMatchAgainstWithoutIconsTrimmed);\n // Map matches back to offsets with icon and trimming\n if (matches) {\n for (const match of matches) {\n const iconOffset = iconOffsets[match.start + leadingWhitespaceOffset] /* icon offsets at index */ + leadingWhitespaceOffset /* overall leading whitespace offset */;\n match.start += iconOffset;\n match.end += iconOffset;\n }\n }\n return matches;\n}\nfunction matchesContiguous(word, wordToMatchAgainst) {\n const matchIndex = wordToMatchAgainst.toLowerCase().indexOf(word.toLowerCase());\n if (matchIndex !== -1) {\n return [{ start: matchIndex, end: matchIndex + word.length }];\n }\n return null;\n}\nfunction compareEntries(elementA, elementB, lookFor) {\n const labelHighlightsA = elementA.labelHighlights || [];\n const labelHighlightsB = elementB.labelHighlights || [];\n if (labelHighlightsA.length && !labelHighlightsB.length) {\n return -1;\n }\n if (!labelHighlightsA.length && labelHighlightsB.length) {\n return 1;\n }\n if (labelHighlightsA.length === 0 && labelHighlightsB.length === 0) {\n return 0;\n }\n return compareAnything(elementA.saneSortLabel, elementB.saneSortLabel, lookFor);\n}\nclass QuickInputAccessibilityProvider {\n getWidgetAriaLabel() {\n return localize('quickInput', \"Quick Input\");\n }\n getAriaLabel(element) {\n var _a;\n return ((_a = element.separator) === null || _a === void 0 ? void 0 : _a.label)\n ? `${element.saneAriaLabel}, ${element.separator.label}`\n : element.saneAriaLabel;\n }\n getWidgetRole() {\n return 'listbox';\n }\n getRole(element) {\n return element.hasCheckbox ? 'checkbox' : 'option';\n }\n isChecked(element) {\n if (!element.hasCheckbox) {\n return undefined;\n }\n return {\n value: element.checked,\n onDidChange: element.onChecked\n };\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as dom from '../../../browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\nimport { ActionBar } from '../../../browser/ui/actionbar/actionbar.js';\nimport { Button } from '../../../browser/ui/button/button.js';\nimport { CountBadge } from '../../../browser/ui/countBadge/countBadge.js';\nimport { renderLabelWithIcons } from '../../../browser/ui/iconLabel/iconLabels.js';\nimport { ProgressBar } from '../../../browser/ui/progressbar/progressbar.js';\nimport { Action } from '../../../common/actions.js';\nimport { equals } from '../../../common/arrays.js';\nimport { TimeoutTimer } from '../../../common/async.js';\nimport { CancellationToken } from '../../../common/cancellation.js';\nimport { Codicon } from '../../../common/codicons.js';\nimport { Emitter } from '../../../common/event.js';\nimport { Disposable, DisposableStore, dispose } from '../../../common/lifecycle.js';\nimport { isIOS } from '../../../common/platform.js';\nimport Severity from '../../../common/severity.js';\nimport { withNullAsUndefined } from '../../../common/types.js';\nimport { getIconClass } from './quickInputUtils.js';\nimport { ItemActivation, NO_KEY_MODS, QuickInputHideReason } from '../common/quickInput.js';\nimport './media/quickInput.css';\nimport { localize } from '../../../../nls.js';\nimport { QuickInputBox } from './quickInputBox.js';\nimport { QuickInputList, QuickInputListFocus } from './quickInputList.js';\nconst $ = dom.$;\nconst backButton = {\n iconClass: Codicon.quickInputBack.classNames,\n tooltip: localize('quickInput.back', \"Back\"),\n handle: -1 // TODO\n};\nclass QuickInput extends Disposable {\n constructor(ui) {\n super();\n this.ui = ui;\n this.visible = false;\n this._enabled = true;\n this._busy = false;\n this._ignoreFocusOut = false;\n this._buttons = [];\n this.noValidationMessage = QuickInput.noPromptMessage;\n this._severity = Severity.Ignore;\n this.buttonsUpdated = false;\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\n this.onDidHideEmitter = this._register(new Emitter());\n this.onDisposeEmitter = this._register(new Emitter());\n this.visibleDisposables = this._register(new DisposableStore());\n this.onDidHide = this.onDidHideEmitter.event;\n }\n get title() {\n return this._title;\n }\n set title(title) {\n this._title = title;\n this.update();\n }\n get description() {\n return this._description;\n }\n set description(description) {\n this._description = description;\n this.update();\n }\n get step() {\n return this._steps;\n }\n set step(step) {\n this._steps = step;\n this.update();\n }\n get totalSteps() {\n return this._totalSteps;\n }\n set totalSteps(totalSteps) {\n this._totalSteps = totalSteps;\n this.update();\n }\n get enabled() {\n return this._enabled;\n }\n set enabled(enabled) {\n this._enabled = enabled;\n this.update();\n }\n get contextKey() {\n return this._contextKey;\n }\n set contextKey(contextKey) {\n this._contextKey = contextKey;\n this.update();\n }\n get busy() {\n return this._busy;\n }\n set busy(busy) {\n this._busy = busy;\n this.update();\n }\n get ignoreFocusOut() {\n return this._ignoreFocusOut;\n }\n set ignoreFocusOut(ignoreFocusOut) {\n const shouldUpdate = this._ignoreFocusOut !== ignoreFocusOut && !isIOS;\n this._ignoreFocusOut = ignoreFocusOut && !isIOS;\n if (shouldUpdate) {\n this.update();\n }\n }\n get buttons() {\n return this._buttons;\n }\n set buttons(buttons) {\n this._buttons = buttons;\n this.buttonsUpdated = true;\n this.update();\n }\n get validationMessage() {\n return this._validationMessage;\n }\n set validationMessage(validationMessage) {\n this._validationMessage = validationMessage;\n this.update();\n }\n get severity() {\n return this._severity;\n }\n set severity(severity) {\n this._severity = severity;\n this.update();\n }\n show() {\n if (this.visible) {\n return;\n }\n this.visibleDisposables.add(this.ui.onDidTriggerButton(button => {\n if (this.buttons.indexOf(button) !== -1) {\n this.onDidTriggerButtonEmitter.fire(button);\n }\n }));\n this.ui.show(this);\n // update properties in the controller that get reset in the ui.show() call\n this.visible = true;\n // This ensures the message/prompt gets rendered\n this._lastValidationMessage = undefined;\n // This ensures the input box has the right severity applied\n this._lastSeverity = undefined;\n if (this.buttons.length) {\n // if there are buttons, the ui.show() clears them out of the UI so we should\n // rerender them.\n this.buttonsUpdated = true;\n }\n this.update();\n }\n hide() {\n if (!this.visible) {\n return;\n }\n this.ui.hide();\n }\n didHide(reason = QuickInputHideReason.Other) {\n this.visible = false;\n this.visibleDisposables.clear();\n this.onDidHideEmitter.fire({ reason });\n }\n update() {\n if (!this.visible) {\n return;\n }\n const title = this.getTitle();\n if (title && this.ui.title.textContent !== title) {\n this.ui.title.textContent = title;\n }\n else if (!title && this.ui.title.innerHTML !== ' ') {\n this.ui.title.innerText = '\\u00a0';\n }\n const description = this.getDescription();\n if (this.ui.description1.textContent !== description) {\n this.ui.description1.textContent = description;\n }\n if (this.ui.description2.textContent !== description) {\n this.ui.description2.textContent = description;\n }\n if (this.busy && !this.busyDelay) {\n this.busyDelay = new TimeoutTimer();\n this.busyDelay.setIfNotSet(() => {\n if (this.visible) {\n this.ui.progressBar.infinite();\n }\n }, 800);\n }\n if (!this.busy && this.busyDelay) {\n this.ui.progressBar.stop();\n this.busyDelay.cancel();\n this.busyDelay = undefined;\n }\n if (this.buttonsUpdated) {\n this.buttonsUpdated = false;\n this.ui.leftActionBar.clear();\n const leftButtons = this.buttons.filter(button => button === backButton);\n this.ui.leftActionBar.push(leftButtons.map((button, index) => {\n const action = new Action(`id-${index}`, '', button.iconClass || getIconClass(button.iconPath), true, () => __awaiter(this, void 0, void 0, function* () {\n this.onDidTriggerButtonEmitter.fire(button);\n }));\n action.tooltip = button.tooltip || '';\n return action;\n }), { icon: true, label: false });\n this.ui.rightActionBar.clear();\n const rightButtons = this.buttons.filter(button => button !== backButton);\n this.ui.rightActionBar.push(rightButtons.map((button, index) => {\n const action = new Action(`id-${index}`, '', button.iconClass || getIconClass(button.iconPath), true, () => __awaiter(this, void 0, void 0, function* () {\n this.onDidTriggerButtonEmitter.fire(button);\n }));\n action.tooltip = button.tooltip || '';\n return action;\n }), { icon: true, label: false });\n }\n this.ui.ignoreFocusOut = this.ignoreFocusOut;\n this.ui.setEnabled(this.enabled);\n this.ui.setContextKey(this.contextKey);\n const validationMessage = this.validationMessage || this.noValidationMessage;\n if (this._lastValidationMessage !== validationMessage) {\n this._lastValidationMessage = validationMessage;\n dom.reset(this.ui.message, ...renderLabelWithIcons(validationMessage));\n }\n if (this._lastSeverity !== this.severity) {\n this._lastSeverity = this.severity;\n this.showMessageDecoration(this.severity);\n }\n }\n getTitle() {\n if (this.title && this.step) {\n return `${this.title} (${this.getSteps()})`;\n }\n if (this.title) {\n return this.title;\n }\n if (this.step) {\n return this.getSteps();\n }\n return '';\n }\n getDescription() {\n return this.description || '';\n }\n getSteps() {\n if (this.step && this.totalSteps) {\n return localize('quickInput.steps', \"{0}/{1}\", this.step, this.totalSteps);\n }\n if (this.step) {\n return String(this.step);\n }\n return '';\n }\n showMessageDecoration(severity) {\n this.ui.inputBox.showDecoration(severity);\n if (severity !== Severity.Ignore) {\n const styles = this.ui.inputBox.stylesForType(severity);\n this.ui.message.style.color = styles.foreground ? `${styles.foreground}` : '';\n this.ui.message.style.backgroundColor = styles.background ? `${styles.background}` : '';\n this.ui.message.style.border = styles.border ? `1px solid ${styles.border}` : '';\n this.ui.message.style.marginBottom = '-2px';\n }\n else {\n this.ui.message.style.color = '';\n this.ui.message.style.backgroundColor = '';\n this.ui.message.style.border = '';\n this.ui.message.style.marginBottom = '';\n }\n }\n dispose() {\n this.hide();\n this.onDisposeEmitter.fire();\n super.dispose();\n }\n}\nQuickInput.noPromptMessage = localize('inputModeEntry', \"Press 'Enter' to confirm your input or 'Escape' to cancel\");\nclass QuickPick extends QuickInput {\n constructor() {\n super(...arguments);\n this._value = '';\n this.onDidChangeValueEmitter = this._register(new Emitter());\n this.onWillAcceptEmitter = this._register(new Emitter());\n this.onDidAcceptEmitter = this._register(new Emitter());\n this.onDidCustomEmitter = this._register(new Emitter());\n this._items = [];\n this.itemsUpdated = false;\n this._canSelectMany = false;\n this._canAcceptInBackground = false;\n this._matchOnDescription = false;\n this._matchOnDetail = false;\n this._matchOnLabel = true;\n this._matchOnLabelMode = 'fuzzy';\n this._sortByLabel = true;\n this._autoFocusOnList = true;\n this._keepScrollPosition = false;\n this._itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST;\n this._activeItems = [];\n this.activeItemsUpdated = false;\n this.activeItemsToConfirm = [];\n this.onDidChangeActiveEmitter = this._register(new Emitter());\n this._selectedItems = [];\n this.selectedItemsUpdated = false;\n this.selectedItemsToConfirm = [];\n this.onDidChangeSelectionEmitter = this._register(new Emitter());\n this.onDidTriggerItemButtonEmitter = this._register(new Emitter());\n this.valueSelectionUpdated = true;\n this._ok = 'default';\n this._customButton = false;\n this.filterValue = (value) => value;\n this.onDidChangeValue = this.onDidChangeValueEmitter.event;\n this.onWillAccept = this.onWillAcceptEmitter.event;\n this.onDidAccept = this.onDidAcceptEmitter.event;\n this.onDidChangeActive = this.onDidChangeActiveEmitter.event;\n this.onDidChangeSelection = this.onDidChangeSelectionEmitter.event;\n this.onDidTriggerItemButton = this.onDidTriggerItemButtonEmitter.event;\n }\n get quickNavigate() {\n return this._quickNavigate;\n }\n set quickNavigate(quickNavigate) {\n this._quickNavigate = quickNavigate;\n this.update();\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.doSetValue(value);\n }\n doSetValue(value, skipUpdate) {\n if (this._value !== value) {\n this._value = value;\n if (!skipUpdate) {\n this.update();\n }\n if (this.visible) {\n const didFilter = this.ui.list.filter(this.filterValue(this._value));\n if (didFilter) {\n this.trySelectFirst();\n }\n }\n this.onDidChangeValueEmitter.fire(this._value);\n }\n }\n set ariaLabel(ariaLabel) {\n this._ariaLabel = ariaLabel;\n this.update();\n }\n get ariaLabel() {\n return this._ariaLabel;\n }\n get placeholder() {\n return this._placeholder;\n }\n set placeholder(placeholder) {\n this._placeholder = placeholder;\n this.update();\n }\n get items() {\n return this._items;\n }\n get scrollTop() {\n return this.ui.list.scrollTop;\n }\n set scrollTop(scrollTop) {\n this.ui.list.scrollTop = scrollTop;\n }\n set items(items) {\n this._items = items;\n this.itemsUpdated = true;\n this.update();\n }\n get canSelectMany() {\n return this._canSelectMany;\n }\n set canSelectMany(canSelectMany) {\n this._canSelectMany = canSelectMany;\n this.update();\n }\n get canAcceptInBackground() {\n return this._canAcceptInBackground;\n }\n set canAcceptInBackground(canAcceptInBackground) {\n this._canAcceptInBackground = canAcceptInBackground;\n }\n get matchOnDescription() {\n return this._matchOnDescription;\n }\n set matchOnDescription(matchOnDescription) {\n this._matchOnDescription = matchOnDescription;\n this.update();\n }\n get matchOnDetail() {\n return this._matchOnDetail;\n }\n set matchOnDetail(matchOnDetail) {\n this._matchOnDetail = matchOnDetail;\n this.update();\n }\n get matchOnLabel() {\n return this._matchOnLabel;\n }\n set matchOnLabel(matchOnLabel) {\n this._matchOnLabel = matchOnLabel;\n this.update();\n }\n get matchOnLabelMode() {\n return this._matchOnLabelMode;\n }\n set matchOnLabelMode(matchOnLabelMode) {\n this._matchOnLabelMode = matchOnLabelMode;\n this.update();\n }\n get sortByLabel() {\n return this._sortByLabel;\n }\n set sortByLabel(sortByLabel) {\n this._sortByLabel = sortByLabel;\n this.update();\n }\n get autoFocusOnList() {\n return this._autoFocusOnList;\n }\n set autoFocusOnList(autoFocusOnList) {\n this._autoFocusOnList = autoFocusOnList;\n this.update();\n }\n get keepScrollPosition() {\n return this._keepScrollPosition;\n }\n set keepScrollPosition(keepScrollPosition) {\n this._keepScrollPosition = keepScrollPosition;\n }\n get itemActivation() {\n return this._itemActivation;\n }\n set itemActivation(itemActivation) {\n this._itemActivation = itemActivation;\n }\n get activeItems() {\n return this._activeItems;\n }\n set activeItems(activeItems) {\n this._activeItems = activeItems;\n this.activeItemsUpdated = true;\n this.update();\n }\n get selectedItems() {\n return this._selectedItems;\n }\n set selectedItems(selectedItems) {\n this._selectedItems = selectedItems;\n this.selectedItemsUpdated = true;\n this.update();\n }\n get keyMods() {\n if (this._quickNavigate) {\n // Disable keyMods when quick navigate is enabled\n // because in this model the interaction is purely\n // keyboard driven and Ctrl/Alt are typically\n // pressed and hold during this interaction.\n return NO_KEY_MODS;\n }\n return this.ui.keyMods;\n }\n set valueSelection(valueSelection) {\n this._valueSelection = valueSelection;\n this.valueSelectionUpdated = true;\n this.update();\n }\n get customButton() {\n return this._customButton;\n }\n set customButton(showCustomButton) {\n this._customButton = showCustomButton;\n this.update();\n }\n get customLabel() {\n return this._customButtonLabel;\n }\n set customLabel(label) {\n this._customButtonLabel = label;\n this.update();\n }\n get customHover() {\n return this._customButtonHover;\n }\n set customHover(hover) {\n this._customButtonHover = hover;\n this.update();\n }\n get ok() {\n return this._ok;\n }\n set ok(showOkButton) {\n this._ok = showOkButton;\n this.update();\n }\n get hideInput() {\n return !!this._hideInput;\n }\n set hideInput(hideInput) {\n this._hideInput = hideInput;\n this.update();\n }\n trySelectFirst() {\n if (this.autoFocusOnList) {\n if (!this.canSelectMany) {\n this.ui.list.focus(QuickInputListFocus.First);\n }\n }\n }\n show() {\n if (!this.visible) {\n this.visibleDisposables.add(this.ui.inputBox.onDidChange(value => {\n this.doSetValue(value, true /* skip update since this originates from the UI */);\n }));\n this.visibleDisposables.add(this.ui.inputBox.onMouseDown(event => {\n if (!this.autoFocusOnList) {\n this.ui.list.clearFocus();\n }\n }));\n this.visibleDisposables.add((this._hideInput ? this.ui.list : this.ui.inputBox).onKeyDown((event) => {\n switch (event.keyCode) {\n case 18 /* KeyCode.DownArrow */:\n this.ui.list.focus(QuickInputListFocus.Next);\n if (this.canSelectMany) {\n this.ui.list.domFocus();\n }\n dom.EventHelper.stop(event, true);\n break;\n case 16 /* KeyCode.UpArrow */:\n if (this.ui.list.getFocusedElements().length) {\n this.ui.list.focus(QuickInputListFocus.Previous);\n }\n else {\n this.ui.list.focus(QuickInputListFocus.Last);\n }\n if (this.canSelectMany) {\n this.ui.list.domFocus();\n }\n dom.EventHelper.stop(event, true);\n break;\n case 12 /* KeyCode.PageDown */:\n this.ui.list.focus(QuickInputListFocus.NextPage);\n if (this.canSelectMany) {\n this.ui.list.domFocus();\n }\n dom.EventHelper.stop(event, true);\n break;\n case 11 /* KeyCode.PageUp */:\n this.ui.list.focus(QuickInputListFocus.PreviousPage);\n if (this.canSelectMany) {\n this.ui.list.domFocus();\n }\n dom.EventHelper.stop(event, true);\n break;\n case 17 /* KeyCode.RightArrow */:\n if (!this._canAcceptInBackground) {\n return; // needs to be enabled\n }\n if (!this.ui.inputBox.isSelectionAtEnd()) {\n return; // ensure input box selection at end\n }\n if (this.activeItems[0]) {\n this._selectedItems = [this.activeItems[0]];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n this.handleAccept(true);\n }\n break;\n case 14 /* KeyCode.Home */:\n if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {\n this.ui.list.focus(QuickInputListFocus.First);\n dom.EventHelper.stop(event, true);\n }\n break;\n case 13 /* KeyCode.End */:\n if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {\n this.ui.list.focus(QuickInputListFocus.Last);\n dom.EventHelper.stop(event, true);\n }\n break;\n }\n }));\n this.visibleDisposables.add(this.ui.onDidAccept(() => {\n if (this.canSelectMany) {\n // if there are no checked elements, it means that an onDidChangeSelection never fired to overwrite\n // `_selectedItems`. In that case, we should emit one with an empty array to ensure that\n // `.selectedItems` is up to date.\n if (!this.ui.list.getCheckedElements().length) {\n this._selectedItems = [];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n }\n }\n else if (this.activeItems[0]) {\n // For single-select, we set `selectedItems` to the item that was accepted.\n this._selectedItems = [this.activeItems[0]];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n }\n this.handleAccept(false);\n }));\n this.visibleDisposables.add(this.ui.onDidCustom(() => {\n this.onDidCustomEmitter.fire();\n }));\n this.visibleDisposables.add(this.ui.list.onDidChangeFocus(focusedItems => {\n if (this.activeItemsUpdated) {\n return; // Expect another event.\n }\n if (this.activeItemsToConfirm !== this._activeItems && equals(focusedItems, this._activeItems, (a, b) => a === b)) {\n return;\n }\n this._activeItems = focusedItems;\n this.onDidChangeActiveEmitter.fire(focusedItems);\n }));\n this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({ items: selectedItems, event }) => {\n if (this.canSelectMany) {\n if (selectedItems.length) {\n this.ui.list.setSelectedElements([]);\n }\n return;\n }\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(selectedItems, this._selectedItems, (a, b) => a === b)) {\n return;\n }\n this._selectedItems = selectedItems;\n this.onDidChangeSelectionEmitter.fire(selectedItems);\n if (selectedItems.length) {\n this.handleAccept(event instanceof MouseEvent && event.button === 1 /* mouse middle click */);\n }\n }));\n this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(checkedItems => {\n if (!this.canSelectMany) {\n return;\n }\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(checkedItems, this._selectedItems, (a, b) => a === b)) {\n return;\n }\n this._selectedItems = checkedItems;\n this.onDidChangeSelectionEmitter.fire(checkedItems);\n }));\n this.visibleDisposables.add(this.ui.list.onButtonTriggered(event => this.onDidTriggerItemButtonEmitter.fire(event)));\n this.visibleDisposables.add(this.registerQuickNavigation());\n this.valueSelectionUpdated = true;\n }\n super.show(); // TODO: Why have show() bubble up while update() trickles down? (Could move setComboboxAccessibility() here.)\n }\n handleAccept(inBackground) {\n // Figure out veto via `onWillAccept` event\n let veto = false;\n this.onWillAcceptEmitter.fire({ veto: () => veto = true });\n // Continue with `onDidAccept` if no veto\n if (!veto) {\n this.onDidAcceptEmitter.fire({ inBackground });\n }\n }\n registerQuickNavigation() {\n return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, e => {\n if (this.canSelectMany || !this._quickNavigate) {\n return;\n }\n const keyboardEvent = new StandardKeyboardEvent(e);\n const keyCode = keyboardEvent.keyCode;\n // Select element when keys are pressed that signal it\n const quickNavKeys = this._quickNavigate.keybindings;\n const wasTriggerKeyPressed = quickNavKeys.some(k => {\n const [firstPart, chordPart] = k.getParts();\n if (chordPart) {\n return false;\n }\n if (firstPart.shiftKey && keyCode === 4 /* KeyCode.Shift */) {\n if (keyboardEvent.ctrlKey || keyboardEvent.altKey || keyboardEvent.metaKey) {\n return false; // this is an optimistic check for the shift key being used to navigate back in quick input\n }\n return true;\n }\n if (firstPart.altKey && keyCode === 6 /* KeyCode.Alt */) {\n return true;\n }\n if (firstPart.ctrlKey && keyCode === 5 /* KeyCode.Ctrl */) {\n return true;\n }\n if (firstPart.metaKey && keyCode === 57 /* KeyCode.Meta */) {\n return true;\n }\n return false;\n });\n if (wasTriggerKeyPressed) {\n if (this.activeItems[0]) {\n this._selectedItems = [this.activeItems[0]];\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\n this.handleAccept(false);\n }\n // Unset quick navigate after press. It is only valid once\n // and should not result in any behaviour change afterwards\n // if the picker remains open because there was no active item\n this._quickNavigate = undefined;\n }\n });\n }\n update() {\n if (!this.visible) {\n return;\n }\n // store the scrollTop before it is reset\n const scrollTopBefore = this.keepScrollPosition ? this.scrollTop : 0;\n const hideInput = !!this._hideInput && this._items.length > 0;\n this.ui.container.classList.toggle('hidden-input', hideInput && !this.description);\n const visibilities = {\n title: !!this.title || !!this.step || !!this.buttons.length,\n description: !!this.description,\n checkAll: this.canSelectMany && !this._hideCheckAll,\n checkBox: this.canSelectMany,\n inputBox: !hideInput,\n progressBar: !hideInput,\n visibleCount: true,\n count: this.canSelectMany,\n ok: this.ok === 'default' ? this.canSelectMany : this.ok,\n list: true,\n message: !!this.validationMessage,\n customButton: this.customButton\n };\n this.ui.setVisibilities(visibilities);\n super.update();\n if (this.ui.inputBox.value !== this.value) {\n this.ui.inputBox.value = this.value;\n }\n if (this.valueSelectionUpdated) {\n this.valueSelectionUpdated = false;\n this.ui.inputBox.select(this._valueSelection && { start: this._valueSelection[0], end: this._valueSelection[1] });\n }\n if (this.ui.inputBox.placeholder !== (this.placeholder || '')) {\n this.ui.inputBox.placeholder = (this.placeholder || '');\n }\n let ariaLabel = this.ariaLabel;\n if (!ariaLabel) {\n ariaLabel = this.placeholder || QuickPick.DEFAULT_ARIA_LABEL;\n // If we have a title, include it in the aria label.\n if (this.title) {\n ariaLabel += ` - ${this.title}`;\n }\n }\n if (this.ui.inputBox.ariaLabel !== ariaLabel) {\n this.ui.inputBox.ariaLabel = ariaLabel;\n }\n this.ui.list.matchOnDescription = this.matchOnDescription;\n this.ui.list.matchOnDetail = this.matchOnDetail;\n this.ui.list.matchOnLabel = this.matchOnLabel;\n this.ui.list.matchOnLabelMode = this.matchOnLabelMode;\n this.ui.list.sortByLabel = this.sortByLabel;\n if (this.itemsUpdated) {\n this.itemsUpdated = false;\n this.ui.list.setElements(this.items);\n this.ui.list.filter(this.filterValue(this.ui.inputBox.value));\n this.ui.checkAll.checked = this.ui.list.getAllVisibleChecked();\n this.ui.visibleCount.setCount(this.ui.list.getVisibleCount());\n this.ui.count.setCount(this.ui.list.getCheckedCount());\n switch (this._itemActivation) {\n case ItemActivation.NONE:\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\n break;\n case ItemActivation.SECOND:\n this.ui.list.focus(QuickInputListFocus.Second);\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\n break;\n case ItemActivation.LAST:\n this.ui.list.focus(QuickInputListFocus.Last);\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\n break;\n default:\n this.trySelectFirst();\n break;\n }\n }\n if (this.ui.container.classList.contains('show-checkboxes') !== !!this.canSelectMany) {\n if (this.canSelectMany) {\n this.ui.list.clearFocus();\n }\n else {\n this.trySelectFirst();\n }\n }\n if (this.activeItemsUpdated) {\n this.activeItemsUpdated = false;\n this.activeItemsToConfirm = this._activeItems;\n this.ui.list.setFocusedElements(this.activeItems);\n if (this.activeItemsToConfirm === this._activeItems) {\n this.activeItemsToConfirm = null;\n }\n }\n if (this.selectedItemsUpdated) {\n this.selectedItemsUpdated = false;\n this.selectedItemsToConfirm = this._selectedItems;\n if (this.canSelectMany) {\n this.ui.list.setCheckedElements(this.selectedItems);\n }\n else {\n this.ui.list.setSelectedElements(this.selectedItems);\n }\n if (this.selectedItemsToConfirm === this._selectedItems) {\n this.selectedItemsToConfirm = null;\n }\n }\n this.ui.customButton.label = this.customLabel || '';\n this.ui.customButton.element.title = this.customHover || '';\n this.ui.setComboboxAccessibility(true);\n if (!visibilities.inputBox) {\n // we need to move focus into the tree to detect keybindings\n // properly when the input box is not visible (quick nav)\n this.ui.list.domFocus();\n // Focus the first element in the list if multiselect is enabled\n if (this.canSelectMany) {\n this.ui.list.focus(QuickInputListFocus.First);\n }\n }\n // Set the scroll position to what it was before updating the items\n if (this.keepScrollPosition) {\n this.scrollTop = scrollTopBefore;\n }\n }\n}\nQuickPick.DEFAULT_ARIA_LABEL = localize('quickInputBox.ariaLabel', \"Type to narrow down results.\");\nexport class QuickInputController extends Disposable {\n constructor(options) {\n super();\n this.options = options;\n this.comboboxAccessibility = false;\n this.enabled = true;\n this.onDidAcceptEmitter = this._register(new Emitter());\n this.onDidCustomEmitter = this._register(new Emitter());\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\n this.keyMods = { ctrlCmd: false, alt: false };\n this.controller = null;\n this.onShowEmitter = this._register(new Emitter());\n this.onShow = this.onShowEmitter.event;\n this.onHideEmitter = this._register(new Emitter());\n this.onHide = this.onHideEmitter.event;\n this.idPrefix = options.idPrefix;\n this.parentElement = options.container;\n this.styles = options.styles;\n this.registerKeyModsListeners();\n }\n registerKeyModsListeners() {\n const listener = (e) => {\n this.keyMods.ctrlCmd = e.ctrlKey || e.metaKey;\n this.keyMods.alt = e.altKey;\n };\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_DOWN, listener, true));\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_UP, listener, true));\n this._register(dom.addDisposableListener(window, dom.EventType.MOUSE_DOWN, listener, true));\n }\n getUI() {\n if (this.ui) {\n return this.ui;\n }\n const container = dom.append(this.parentElement, $('.quick-input-widget.show-file-icons'));\n container.tabIndex = -1;\n container.style.display = 'none';\n const styleSheet = dom.createStyleSheet(container);\n const titleBar = dom.append(container, $('.quick-input-titlebar'));\n const leftActionBar = this._register(new ActionBar(titleBar));\n leftActionBar.domNode.classList.add('quick-input-left-action-bar');\n const title = dom.append(titleBar, $('.quick-input-title'));\n const rightActionBar = this._register(new ActionBar(titleBar));\n rightActionBar.domNode.classList.add('quick-input-right-action-bar');\n const description1 = dom.append(container, $('.quick-input-description'));\n const headerContainer = dom.append(container, $('.quick-input-header'));\n const checkAll = dom.append(headerContainer, $('input.quick-input-check-all'));\n checkAll.type = 'checkbox';\n checkAll.setAttribute('aria-label', localize('quickInput.checkAll', \"Toggle all checkboxes\"));\n this._register(dom.addStandardDisposableListener(checkAll, dom.EventType.CHANGE, e => {\n const checked = checkAll.checked;\n list.setAllVisibleChecked(checked);\n }));\n this._register(dom.addDisposableListener(checkAll, dom.EventType.CLICK, e => {\n if (e.x || e.y) { // Avoid 'click' triggered by 'space'...\n inputBox.setFocus();\n }\n }));\n const description2 = dom.append(headerContainer, $('.quick-input-description'));\n const extraContainer = dom.append(headerContainer, $('.quick-input-and-message'));\n const filterContainer = dom.append(extraContainer, $('.quick-input-filter'));\n const inputBox = this._register(new QuickInputBox(filterContainer));\n inputBox.setAttribute('aria-describedby', `${this.idPrefix}message`);\n const visibleCountContainer = dom.append(filterContainer, $('.quick-input-visible-count'));\n visibleCountContainer.setAttribute('aria-live', 'polite');\n visibleCountContainer.setAttribute('aria-atomic', 'true');\n const visibleCount = new CountBadge(visibleCountContainer, { countFormat: localize({ key: 'quickInput.visibleCount', comment: ['This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers.'] }, \"{0} Results\") });\n const countContainer = dom.append(filterContainer, $('.quick-input-count'));\n countContainer.setAttribute('aria-live', 'polite');\n const count = new CountBadge(countContainer, { countFormat: localize({ key: 'quickInput.countSelected', comment: ['This tells the user how many items are selected in a list of items to select from. The items can be anything.'] }, \"{0} Selected\") });\n const okContainer = dom.append(headerContainer, $('.quick-input-action'));\n const ok = new Button(okContainer);\n ok.label = localize('ok', \"OK\");\n this._register(ok.onDidClick(e => {\n this.onDidAcceptEmitter.fire();\n }));\n const customButtonContainer = dom.append(headerContainer, $('.quick-input-action'));\n const customButton = new Button(customButtonContainer);\n customButton.label = localize('custom', \"Custom\");\n this._register(customButton.onDidClick(e => {\n this.onDidCustomEmitter.fire();\n }));\n const message = dom.append(extraContainer, $(`#${this.idPrefix}message.quick-input-message`));\n const list = this._register(new QuickInputList(container, this.idPrefix + 'list', this.options));\n this._register(list.onChangedAllVisibleChecked(checked => {\n checkAll.checked = checked;\n }));\n this._register(list.onChangedVisibleCount(c => {\n visibleCount.setCount(c);\n }));\n this._register(list.onChangedCheckedCount(c => {\n count.setCount(c);\n }));\n this._register(list.onLeave(() => {\n // Defer to avoid the input field reacting to the triggering key.\n setTimeout(() => {\n inputBox.setFocus();\n if (this.controller instanceof QuickPick && this.controller.canSelectMany) {\n list.clearFocus();\n }\n }, 0);\n }));\n this._register(list.onDidChangeFocus(() => {\n if (this.comboboxAccessibility) {\n this.getUI().inputBox.setAttribute('aria-activedescendant', this.getUI().list.getActiveDescendant() || '');\n }\n }));\n const progressBar = new ProgressBar(container);\n progressBar.getContainer().classList.add('quick-input-progress');\n const focusTracker = dom.trackFocus(container);\n this._register(focusTracker);\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, e => {\n this.previousFocusElement = e.relatedTarget instanceof HTMLElement ? e.relatedTarget : undefined;\n }, true));\n this._register(focusTracker.onDidBlur(() => {\n if (!this.getUI().ignoreFocusOut && !this.options.ignoreFocusOut()) {\n this.hide(QuickInputHideReason.Blur);\n }\n this.previousFocusElement = undefined;\n }));\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, (e) => {\n inputBox.setFocus();\n }));\n this._register(dom.addDisposableListener(container, dom.EventType.KEY_DOWN, (e) => {\n const event = new StandardKeyboardEvent(e);\n switch (event.keyCode) {\n case 3 /* KeyCode.Enter */:\n dom.EventHelper.stop(e, true);\n this.onDidAcceptEmitter.fire();\n break;\n case 9 /* KeyCode.Escape */:\n dom.EventHelper.stop(e, true);\n this.hide(QuickInputHideReason.Gesture);\n break;\n case 2 /* KeyCode.Tab */:\n if (!event.altKey && !event.ctrlKey && !event.metaKey) {\n const selectors = ['.action-label.codicon'];\n if (container.classList.contains('show-checkboxes')) {\n selectors.push('input');\n }\n else {\n selectors.push('input[type=text]');\n }\n if (this.getUI().list.isDisplayed()) {\n selectors.push('.monaco-list');\n }\n const stops = container.querySelectorAll(selectors.join(', '));\n if (event.shiftKey && event.target === stops[0]) {\n dom.EventHelper.stop(e, true);\n stops[stops.length - 1].focus();\n }\n else if (!event.shiftKey && event.target === stops[stops.length - 1]) {\n dom.EventHelper.stop(e, true);\n stops[0].focus();\n }\n }\n break;\n }\n }));\n this.ui = {\n container,\n styleSheet,\n leftActionBar,\n titleBar,\n title,\n description1,\n description2,\n rightActionBar,\n checkAll,\n filterContainer,\n inputBox,\n visibleCountContainer,\n visibleCount,\n countContainer,\n count,\n okContainer,\n ok,\n message,\n customButtonContainer,\n customButton,\n list,\n progressBar,\n onDidAccept: this.onDidAcceptEmitter.event,\n onDidCustom: this.onDidCustomEmitter.event,\n onDidTriggerButton: this.onDidTriggerButtonEmitter.event,\n ignoreFocusOut: false,\n keyMods: this.keyMods,\n isScreenReaderOptimized: () => this.options.isScreenReaderOptimized(),\n show: controller => this.show(controller),\n hide: () => this.hide(),\n setVisibilities: visibilities => this.setVisibilities(visibilities),\n setComboboxAccessibility: enabled => this.setComboboxAccessibility(enabled),\n setEnabled: enabled => this.setEnabled(enabled),\n setContextKey: contextKey => this.options.setContextKey(contextKey),\n };\n this.updateStyles();\n return this.ui;\n }\n pick(picks, options = {}, token = CancellationToken.None) {\n return new Promise((doResolve, reject) => {\n let resolve = (result) => {\n var _a;\n resolve = doResolve;\n (_a = options.onKeyMods) === null || _a === void 0 ? void 0 : _a.call(options, input.keyMods);\n doResolve(result);\n };\n if (token.isCancellationRequested) {\n resolve(undefined);\n return;\n }\n const input = this.createQuickPick();\n let activeItem;\n const disposables = [\n input,\n input.onDidAccept(() => {\n if (input.canSelectMany) {\n resolve(input.selectedItems.slice());\n input.hide();\n }\n else {\n const result = input.activeItems[0];\n if (result) {\n resolve(result);\n input.hide();\n }\n }\n }),\n input.onDidChangeActive(items => {\n const focused = items[0];\n if (focused && options.onDidFocus) {\n options.onDidFocus(focused);\n }\n }),\n input.onDidChangeSelection(items => {\n if (!input.canSelectMany) {\n const result = items[0];\n if (result) {\n resolve(result);\n input.hide();\n }\n }\n }),\n input.onDidTriggerItemButton(event => options.onDidTriggerItemButton && options.onDidTriggerItemButton(Object.assign(Object.assign({}, event), { removeItem: () => {\n const index = input.items.indexOf(event.item);\n if (index !== -1) {\n const items = input.items.slice();\n const removed = items.splice(index, 1);\n const activeItems = input.activeItems.filter(activeItem => activeItem !== removed[0]);\n const keepScrollPositionBefore = input.keepScrollPosition;\n input.keepScrollPosition = true;\n input.items = items;\n if (activeItems) {\n input.activeItems = activeItems;\n }\n input.keepScrollPosition = keepScrollPositionBefore;\n }\n } }))),\n input.onDidChangeValue(value => {\n if (activeItem && !value && (input.activeItems.length !== 1 || input.activeItems[0] !== activeItem)) {\n input.activeItems = [activeItem];\n }\n }),\n token.onCancellationRequested(() => {\n input.hide();\n }),\n input.onDidHide(() => {\n dispose(disposables);\n resolve(undefined);\n }),\n ];\n input.title = options.title;\n input.canSelectMany = !!options.canPickMany;\n input.placeholder = options.placeHolder;\n input.ignoreFocusOut = !!options.ignoreFocusLost;\n input.matchOnDescription = !!options.matchOnDescription;\n input.matchOnDetail = !!options.matchOnDetail;\n input.matchOnLabel = (options.matchOnLabel === undefined) || options.matchOnLabel; // default to true\n input.autoFocusOnList = (options.autoFocusOnList === undefined) || options.autoFocusOnList; // default to true\n input.quickNavigate = options.quickNavigate;\n input.hideInput = !!options.hideInput;\n input.contextKey = options.contextKey;\n input.busy = true;\n Promise.all([picks, options.activeItem])\n .then(([items, _activeItem]) => {\n activeItem = _activeItem;\n input.busy = false;\n input.items = items;\n if (input.canSelectMany) {\n input.selectedItems = items.filter(item => item.type !== 'separator' && item.picked);\n }\n if (activeItem) {\n input.activeItems = [activeItem];\n }\n });\n input.show();\n Promise.resolve(picks).then(undefined, err => {\n reject(err);\n input.hide();\n });\n });\n }\n createQuickPick() {\n const ui = this.getUI();\n return new QuickPick(ui);\n }\n show(controller) {\n const ui = this.getUI();\n this.onShowEmitter.fire();\n const oldController = this.controller;\n this.controller = controller;\n if (oldController) {\n oldController.didHide();\n }\n this.setEnabled(true);\n ui.leftActionBar.clear();\n ui.title.textContent = '';\n ui.description1.textContent = '';\n ui.description2.textContent = '';\n ui.rightActionBar.clear();\n ui.checkAll.checked = false;\n // ui.inputBox.value = ''; Avoid triggering an event.\n ui.inputBox.placeholder = '';\n ui.inputBox.password = false;\n ui.inputBox.showDecoration(Severity.Ignore);\n ui.visibleCount.setCount(0);\n ui.count.setCount(0);\n dom.reset(ui.message);\n ui.progressBar.stop();\n ui.list.setElements([]);\n ui.list.matchOnDescription = false;\n ui.list.matchOnDetail = false;\n ui.list.matchOnLabel = true;\n ui.list.sortByLabel = true;\n ui.ignoreFocusOut = false;\n this.setComboboxAccessibility(false);\n ui.inputBox.ariaLabel = '';\n const backKeybindingLabel = this.options.backKeybindingLabel();\n backButton.tooltip = backKeybindingLabel ? localize('quickInput.backWithKeybinding', \"Back ({0})\", backKeybindingLabel) : localize('quickInput.back', \"Back\");\n ui.container.style.display = '';\n this.updateLayout();\n ui.inputBox.setFocus();\n }\n setVisibilities(visibilities) {\n const ui = this.getUI();\n ui.title.style.display = visibilities.title ? '' : 'none';\n ui.description1.style.display = visibilities.description && (visibilities.inputBox || visibilities.checkAll) ? '' : 'none';\n ui.description2.style.display = visibilities.description && !(visibilities.inputBox || visibilities.checkAll) ? '' : 'none';\n ui.checkAll.style.display = visibilities.checkAll ? '' : 'none';\n ui.filterContainer.style.display = visibilities.inputBox ? '' : 'none';\n ui.visibleCountContainer.style.display = visibilities.visibleCount ? '' : 'none';\n ui.countContainer.style.display = visibilities.count ? '' : 'none';\n ui.okContainer.style.display = visibilities.ok ? '' : 'none';\n ui.customButtonContainer.style.display = visibilities.customButton ? '' : 'none';\n ui.message.style.display = visibilities.message ? '' : 'none';\n ui.progressBar.getContainer().style.display = visibilities.progressBar ? '' : 'none';\n ui.list.display(!!visibilities.list);\n ui.container.classList[visibilities.checkBox ? 'add' : 'remove']('show-checkboxes');\n this.updateLayout(); // TODO\n }\n setComboboxAccessibility(enabled) {\n if (enabled !== this.comboboxAccessibility) {\n const ui = this.getUI();\n this.comboboxAccessibility = enabled;\n if (this.comboboxAccessibility) {\n ui.inputBox.setAttribute('role', 'combobox');\n ui.inputBox.setAttribute('aria-haspopup', 'true');\n ui.inputBox.setAttribute('aria-autocomplete', 'list');\n ui.inputBox.setAttribute('aria-activedescendant', ui.list.getActiveDescendant() || '');\n }\n else {\n ui.inputBox.removeAttribute('role');\n ui.inputBox.removeAttribute('aria-haspopup');\n ui.inputBox.removeAttribute('aria-autocomplete');\n ui.inputBox.removeAttribute('aria-activedescendant');\n }\n }\n }\n setEnabled(enabled) {\n if (enabled !== this.enabled) {\n this.enabled = enabled;\n for (const item of this.getUI().leftActionBar.viewItems) {\n item.getAction().enabled = enabled;\n }\n for (const item of this.getUI().rightActionBar.viewItems) {\n item.getAction().enabled = enabled;\n }\n this.getUI().checkAll.disabled = !enabled;\n // this.getUI().inputBox.enabled = enabled; Avoid loosing focus.\n this.getUI().ok.enabled = enabled;\n this.getUI().list.enabled = enabled;\n }\n }\n hide(reason) {\n var _a;\n const controller = this.controller;\n if (controller) {\n const focusChanged = !((_a = this.ui) === null || _a === void 0 ? void 0 : _a.container.contains(document.activeElement));\n this.controller = null;\n this.onHideEmitter.fire();\n this.getUI().container.style.display = 'none';\n if (!focusChanged) {\n let currentElement = this.previousFocusElement;\n while (currentElement && !currentElement.offsetParent) {\n currentElement = withNullAsUndefined(currentElement.parentElement);\n }\n if (currentElement === null || currentElement === void 0 ? void 0 : currentElement.offsetParent) {\n currentElement.focus();\n this.previousFocusElement = undefined;\n }\n else {\n this.options.returnFocus();\n }\n }\n controller.didHide(reason);\n }\n }\n layout(dimension, titleBarOffset) {\n this.dimension = dimension;\n this.titleBarOffset = titleBarOffset;\n this.updateLayout();\n }\n updateLayout() {\n if (this.ui) {\n this.ui.container.style.top = `${this.titleBarOffset}px`;\n const style = this.ui.container.style;\n const width = Math.min(this.dimension.width * 0.62 /* golden cut */, QuickInputController.MAX_WIDTH);\n style.width = width + 'px';\n style.marginLeft = '-' + (width / 2) + 'px';\n this.ui.inputBox.layout();\n this.ui.list.layout(this.dimension && this.dimension.height * 0.4);\n }\n }\n applyStyles(styles) {\n this.styles = styles;\n this.updateStyles();\n }\n updateStyles() {\n if (this.ui) {\n const { quickInputTitleBackground, quickInputBackground, quickInputForeground, contrastBorder, widgetShadow, } = this.styles.widget;\n this.ui.titleBar.style.backgroundColor = quickInputTitleBackground ? quickInputTitleBackground.toString() : '';\n this.ui.container.style.backgroundColor = quickInputBackground ? quickInputBackground.toString() : '';\n this.ui.container.style.color = quickInputForeground ? quickInputForeground.toString() : '';\n this.ui.container.style.border = contrastBorder ? `1px solid ${contrastBorder}` : '';\n this.ui.container.style.boxShadow = widgetShadow ? `0 0 8px 2px ${widgetShadow}` : '';\n this.ui.inputBox.style(this.styles.inputBox);\n this.ui.count.style(this.styles.countBadge);\n this.ui.ok.style(this.styles.button);\n this.ui.customButton.style(this.styles.button);\n this.ui.progressBar.style(this.styles.progressBar);\n this.ui.list.style(this.styles.list);\n const content = [];\n if (this.styles.list.pickerGroupBorder) {\n content.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.list.pickerGroupBorder}; }`);\n }\n if (this.styles.list.pickerGroupForeground) {\n content.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.list.pickerGroupForeground}; }`);\n }\n if (this.styles.keybindingLabel.keybindingLabelBackground ||\n this.styles.keybindingLabel.keybindingLabelBorder ||\n this.styles.keybindingLabel.keybindingLabelBottomBorder ||\n this.styles.keybindingLabel.keybindingLabelShadow ||\n this.styles.keybindingLabel.keybindingLabelForeground) {\n content.push('.quick-input-list .monaco-keybinding > .monaco-keybinding-key {');\n if (this.styles.keybindingLabel.keybindingLabelBackground) {\n content.push(`background-color: ${this.styles.keybindingLabel.keybindingLabelBackground};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelBorder) {\n // Order matters here. `border-color` must come before `border-bottom-color`.\n content.push(`border-color: ${this.styles.keybindingLabel.keybindingLabelBorder};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelBottomBorder) {\n content.push(`border-bottom-color: ${this.styles.keybindingLabel.keybindingLabelBottomBorder};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelShadow) {\n content.push(`box-shadow: inset 0 -1px 0 ${this.styles.keybindingLabel.keybindingLabelShadow};`);\n }\n if (this.styles.keybindingLabel.keybindingLabelForeground) {\n content.push(`color: ${this.styles.keybindingLabel.keybindingLabelForeground};`);\n }\n content.push('}');\n }\n const newStyles = content.join('\\n');\n if (newStyles !== this.ui.styleSheet.textContent) {\n this.ui.styleSheet.textContent = newStyles;\n }\n }\n }\n}\nQuickInputController.MAX_WIDTH = 600; // Max total width of quick input widget\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { DeferredPromise } from '../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { once } from '../../../base/common/functional.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { DefaultQuickAccessFilterValue, Extensions } from '../common/quickAccess.js';\nimport { IQuickInputService, ItemActivation } from '../common/quickInput.js';\nimport { Registry } from '../../registry/common/platform.js';\nlet QuickAccessController = class QuickAccessController extends Disposable {\n constructor(quickInputService, instantiationService) {\n super();\n this.quickInputService = quickInputService;\n this.instantiationService = instantiationService;\n this.registry = Registry.as(Extensions.Quickaccess);\n this.mapProviderToDescriptor = new Map();\n this.lastAcceptedPickerValues = new Map();\n this.visibleQuickAccess = undefined;\n }\n show(value = '', options) {\n this.doShowOrPick(value, false, options);\n }\n doShowOrPick(value, pick, options) {\n var _a;\n // Find provider for the value to show\n const [provider, descriptor] = this.getOrInstantiateProvider(value);\n // Return early if quick access is already showing on that same prefix\n const visibleQuickAccess = this.visibleQuickAccess;\n const visibleDescriptor = visibleQuickAccess === null || visibleQuickAccess === void 0 ? void 0 : visibleQuickAccess.descriptor;\n if (visibleQuickAccess && descriptor && visibleDescriptor === descriptor) {\n // Apply value only if it is more specific than the prefix\n // from the provider and we are not instructed to preserve\n if (value !== descriptor.prefix && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\n visibleQuickAccess.picker.value = value;\n }\n // Always adjust selection\n this.adjustValueSelection(visibleQuickAccess.picker, descriptor, options);\n return;\n }\n // Rewrite the filter value based on certain rules unless disabled\n if (descriptor && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\n let newValue = undefined;\n // If we have a visible provider with a value, take it's filter value but\n // rewrite to new provider prefix in case they differ\n if (visibleQuickAccess && visibleDescriptor && visibleDescriptor !== descriptor) {\n const newValueCandidateWithoutPrefix = visibleQuickAccess.value.substr(visibleDescriptor.prefix.length);\n if (newValueCandidateWithoutPrefix) {\n newValue = `${descriptor.prefix}${newValueCandidateWithoutPrefix}`;\n }\n }\n // Otherwise, take a default value as instructed\n if (!newValue) {\n const defaultFilterValue = provider === null || provider === void 0 ? void 0 : provider.defaultFilterValue;\n if (defaultFilterValue === DefaultQuickAccessFilterValue.LAST) {\n newValue = this.lastAcceptedPickerValues.get(descriptor);\n }\n else if (typeof defaultFilterValue === 'string') {\n newValue = `${descriptor.prefix}${defaultFilterValue}`;\n }\n }\n if (typeof newValue === 'string') {\n value = newValue;\n }\n }\n // Create a picker for the provider to use with the initial value\n // and adjust the filtering to exclude the prefix from filtering\n const disposables = new DisposableStore();\n const picker = disposables.add(this.quickInputService.createQuickPick());\n picker.value = value;\n this.adjustValueSelection(picker, descriptor, options);\n picker.placeholder = descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder;\n picker.quickNavigate = options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration;\n picker.hideInput = !!picker.quickNavigate && !visibleQuickAccess; // only hide input if there was no picker opened already\n if (typeof (options === null || options === void 0 ? void 0 : options.itemActivation) === 'number' || (options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration)) {\n picker.itemActivation = (_a = options === null || options === void 0 ? void 0 : options.itemActivation) !== null && _a !== void 0 ? _a : ItemActivation.SECOND /* quick nav is always second */;\n }\n picker.contextKey = descriptor === null || descriptor === void 0 ? void 0 : descriptor.contextKey;\n picker.filterValue = (value) => value.substring(descriptor ? descriptor.prefix.length : 0);\n if (descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder) {\n picker.ariaLabel = descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder;\n }\n // Pick mode: setup a promise that can be resolved\n // with the selected items and prevent execution\n let pickPromise = undefined;\n if (pick) {\n pickPromise = new DeferredPromise();\n disposables.add(once(picker.onWillAccept)(e => {\n e.veto();\n picker.hide();\n }));\n }\n // Register listeners\n disposables.add(this.registerPickerListeners(picker, provider, descriptor, value));\n // Ask provider to fill the picker as needed if we have one\n // and pass over a cancellation token that will indicate when\n // the picker is hiding without a pick being made.\n const cts = disposables.add(new CancellationTokenSource());\n if (provider) {\n disposables.add(provider.provide(picker, cts.token));\n }\n // Finally, trigger disposal and cancellation when the picker\n // hides depending on items selected or not.\n once(picker.onDidHide)(() => {\n if (picker.selectedItems.length === 0) {\n cts.cancel();\n }\n // Start to dispose once picker hides\n disposables.dispose();\n // Resolve pick promise with selected items\n pickPromise === null || pickPromise === void 0 ? void 0 : pickPromise.complete(picker.selectedItems.slice(0));\n });\n // Finally, show the picker. This is important because a provider\n // may not call this and then our disposables would leak that rely\n // on the onDidHide event.\n picker.show();\n // Pick mode: return with promise\n if (pick) {\n return pickPromise === null || pickPromise === void 0 ? void 0 : pickPromise.p;\n }\n }\n adjustValueSelection(picker, descriptor, options) {\n var _a;\n let valueSelection;\n // Preserve: just always put the cursor at the end\n if (options === null || options === void 0 ? void 0 : options.preserveValue) {\n valueSelection = [picker.value.length, picker.value.length];\n }\n // Otherwise: select the value up until the prefix\n else {\n valueSelection = [(_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.prefix.length) !== null && _a !== void 0 ? _a : 0, picker.value.length];\n }\n picker.valueSelection = valueSelection;\n }\n registerPickerListeners(picker, provider, descriptor, value) {\n const disposables = new DisposableStore();\n // Remember as last visible picker and clean up once picker get's disposed\n const visibleQuickAccess = this.visibleQuickAccess = { picker, descriptor, value };\n disposables.add(toDisposable(() => {\n if (visibleQuickAccess === this.visibleQuickAccess) {\n this.visibleQuickAccess = undefined;\n }\n }));\n // Whenever the value changes, check if the provider has\n // changed and if so - re-create the picker from the beginning\n disposables.add(picker.onDidChangeValue(value => {\n const [providerForValue] = this.getOrInstantiateProvider(value);\n if (providerForValue !== provider) {\n this.show(value, { preserveValue: true } /* do not rewrite value from user typing! */);\n }\n else {\n visibleQuickAccess.value = value; // remember the value in our visible one\n }\n }));\n // Remember picker input for future use when accepting\n if (descriptor) {\n disposables.add(picker.onDidAccept(() => {\n this.lastAcceptedPickerValues.set(descriptor, picker.value);\n }));\n }\n return disposables;\n }\n getOrInstantiateProvider(value) {\n const providerDescriptor = this.registry.getQuickAccessProvider(value);\n if (!providerDescriptor) {\n return [undefined, undefined];\n }\n let provider = this.mapProviderToDescriptor.get(providerDescriptor);\n if (!provider) {\n provider = this.instantiationService.createInstance(providerDescriptor.ctor);\n this.mapProviderToDescriptor.set(providerDescriptor, provider);\n }\n return [provider, providerDescriptor];\n }\n};\nQuickAccessController = __decorate([\n __param(0, IQuickInputService),\n __param(1, IInstantiationService)\n], QuickAccessController);\nexport { QuickAccessController };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { CancellationToken } from '../../../base/common/cancellation.js';\nimport { QuickInputController } from '../../../base/parts/quickinput/browser/quickInput.js';\nimport { IAccessibilityService } from '../../accessibility/common/accessibility.js';\nimport { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\nimport { WorkbenchList } from '../../list/browser/listService.js';\nimport { QuickAccessController } from './quickAccess.js';\nimport { activeContrastBorder, badgeBackground, badgeForeground, buttonBackground, buttonForeground, buttonHoverBackground, contrastBorder, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, keybindingLabelBackground, keybindingLabelBorder, keybindingLabelBottomBorder, keybindingLabelForeground, pickerGroupBorder, pickerGroupForeground, progressBarBackground, quickInputBackground, quickInputForeground, quickInputListFocusBackground, quickInputListFocusForeground, quickInputListFocusIconForeground, quickInputTitleBackground, widgetShadow } from '../../theme/common/colorRegistry.js';\nimport { computeStyles } from '../../theme/common/styler.js';\nimport { IThemeService, Themable } from '../../theme/common/themeService.js';\nlet QuickInputService = class QuickInputService extends Themable {\n constructor(instantiationService, contextKeyService, themeService, accessibilityService, layoutService) {\n super(themeService);\n this.instantiationService = instantiationService;\n this.contextKeyService = contextKeyService;\n this.accessibilityService = accessibilityService;\n this.layoutService = layoutService;\n this.contexts = new Map();\n }\n get controller() {\n if (!this._controller) {\n this._controller = this._register(this.createController());\n }\n return this._controller;\n }\n get quickAccess() {\n if (!this._quickAccess) {\n this._quickAccess = this._register(this.instantiationService.createInstance(QuickAccessController));\n }\n return this._quickAccess;\n }\n createController(host = this.layoutService, options) {\n const defaultOptions = {\n idPrefix: 'quickInput_',\n container: host.container,\n ignoreFocusOut: () => false,\n isScreenReaderOptimized: () => this.accessibilityService.isScreenReaderOptimized(),\n backKeybindingLabel: () => undefined,\n setContextKey: (id) => this.setContextKey(id),\n returnFocus: () => host.focus(),\n createList: (user, container, delegate, renderers, options) => this.instantiationService.createInstance(WorkbenchList, user, container, delegate, renderers, options),\n styles: this.computeStyles()\n };\n const controller = this._register(new QuickInputController(Object.assign(Object.assign({}, defaultOptions), options)));\n controller.layout(host.dimension, host.offset.quickPickTop);\n // Layout changes\n this._register(host.onDidLayout(dimension => controller.layout(dimension, host.offset.quickPickTop)));\n // Context keys\n this._register(controller.onShow(() => this.resetContextKeys()));\n this._register(controller.onHide(() => this.resetContextKeys()));\n return controller;\n }\n setContextKey(id) {\n let key;\n if (id) {\n key = this.contexts.get(id);\n if (!key) {\n key = new RawContextKey(id, false)\n .bindTo(this.contextKeyService);\n this.contexts.set(id, key);\n }\n }\n if (key && key.get()) {\n return; // already active context\n }\n this.resetContextKeys();\n key === null || key === void 0 ? void 0 : key.set(true);\n }\n resetContextKeys() {\n this.contexts.forEach(context => {\n if (context.get()) {\n context.reset();\n }\n });\n }\n pick(picks, options = {}, token = CancellationToken.None) {\n return this.controller.pick(picks, options, token);\n }\n createQuickPick() {\n return this.controller.createQuickPick();\n }\n updateStyles() {\n this.controller.applyStyles(this.computeStyles());\n }\n computeStyles() {\n return {\n widget: Object.assign({}, computeStyles(this.theme, {\n quickInputBackground,\n quickInputForeground,\n quickInputTitleBackground,\n contrastBorder,\n widgetShadow\n })),\n inputBox: computeStyles(this.theme, {\n inputForeground,\n inputBackground,\n inputBorder,\n inputValidationInfoBackground,\n inputValidationInfoForeground,\n inputValidationInfoBorder,\n inputValidationWarningBackground,\n inputValidationWarningForeground,\n inputValidationWarningBorder,\n inputValidationErrorBackground,\n inputValidationErrorForeground,\n inputValidationErrorBorder\n }),\n countBadge: computeStyles(this.theme, {\n badgeBackground,\n badgeForeground,\n badgeBorder: contrastBorder\n }),\n button: computeStyles(this.theme, {\n buttonForeground,\n buttonBackground,\n buttonHoverBackground,\n buttonBorder: contrastBorder\n }),\n progressBar: computeStyles(this.theme, {\n progressBarBackground\n }),\n keybindingLabel: computeStyles(this.theme, {\n keybindingLabelBackground,\n keybindingLabelForeground,\n keybindingLabelBorder,\n keybindingLabelBottomBorder,\n keybindingLabelShadow: widgetShadow\n }),\n list: computeStyles(this.theme, {\n listBackground: quickInputBackground,\n // Look like focused when inactive.\n listInactiveFocusForeground: quickInputListFocusForeground,\n listInactiveSelectionIconForeground: quickInputListFocusIconForeground,\n listInactiveFocusBackground: quickInputListFocusBackground,\n listFocusOutline: activeContrastBorder,\n listInactiveFocusOutline: activeContrastBorder,\n pickerGroupBorder,\n pickerGroupForeground\n })\n };\n }\n};\nQuickInputService = __decorate([\n __param(0, IInstantiationService),\n __param(1, IContextKeyService),\n __param(2, IThemeService),\n __param(3, IAccessibilityService),\n __param(4, ILayoutService)\n], QuickInputService);\nexport { QuickInputService };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport './standaloneQuickInput.css';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\nimport { EditorScopedLayoutService } from '../standaloneLayoutService.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { QuickInputService } from '../../../../platform/quickinput/browser/quickInput.js';\nimport { once } from '../../../../base/common/functional.js';\nlet EditorScopedQuickInputService = class EditorScopedQuickInputService extends QuickInputService {\n constructor(editor, instantiationService, contextKeyService, themeService, accessibilityService, codeEditorService) {\n super(instantiationService, contextKeyService, themeService, accessibilityService, new EditorScopedLayoutService(editor.getContainerDomNode(), codeEditorService));\n this.host = undefined;\n // Use the passed in code editor as host for the quick input widget\n const contribution = QuickInputEditorContribution.get(editor);\n if (contribution) {\n const widget = contribution.widget;\n this.host = {\n _serviceBrand: undefined,\n get hasContainer() { return true; },\n get container() { return widget.getDomNode(); },\n get dimension() { return editor.getLayoutInfo(); },\n get onDidLayout() { return editor.onDidLayoutChange; },\n focus: () => editor.focus(),\n offset: { top: 0, quickPickTop: 0 }\n };\n }\n else {\n this.host = undefined;\n }\n }\n createController() {\n return super.createController(this.host);\n }\n};\nEditorScopedQuickInputService = __decorate([\n __param(1, IInstantiationService),\n __param(2, IContextKeyService),\n __param(3, IThemeService),\n __param(4, IAccessibilityService),\n __param(5, ICodeEditorService)\n], EditorScopedQuickInputService);\nexport { EditorScopedQuickInputService };\nlet StandaloneQuickInputService = class StandaloneQuickInputService {\n constructor(instantiationService, codeEditorService) {\n this.instantiationService = instantiationService;\n this.codeEditorService = codeEditorService;\n this.mapEditorToService = new Map();\n }\n get activeService() {\n const editor = this.codeEditorService.getFocusedCodeEditor();\n if (!editor) {\n throw new Error('Quick input service needs a focused editor to work.');\n }\n // Find the quick input implementation for the focused\n // editor or create it lazily if not yet created\n let quickInputService = this.mapEditorToService.get(editor);\n if (!quickInputService) {\n const newQuickInputService = quickInputService = this.instantiationService.createInstance(EditorScopedQuickInputService, editor);\n this.mapEditorToService.set(editor, quickInputService);\n once(editor.onDidDispose)(() => {\n newQuickInputService.dispose();\n this.mapEditorToService.delete(editor);\n });\n }\n return quickInputService;\n }\n get quickAccess() { return this.activeService.quickAccess; }\n pick(picks, options = {}, token = CancellationToken.None) {\n return this.activeService /* TS fail */.pick(picks, options, token);\n }\n createQuickPick() {\n return this.activeService.createQuickPick();\n }\n};\nStandaloneQuickInputService = __decorate([\n __param(0, IInstantiationService),\n __param(1, ICodeEditorService)\n], StandaloneQuickInputService);\nexport { StandaloneQuickInputService };\nexport class QuickInputEditorContribution {\n constructor(editor) {\n this.editor = editor;\n this.widget = new QuickInputEditorWidget(this.editor);\n }\n static get(editor) {\n return editor.getContribution(QuickInputEditorContribution.ID);\n }\n dispose() {\n this.widget.dispose();\n }\n}\nQuickInputEditorContribution.ID = 'editor.controller.quickInput';\nexport class QuickInputEditorWidget {\n constructor(codeEditor) {\n this.codeEditor = codeEditor;\n this.domNode = document.createElement('div');\n this.codeEditor.addOverlayWidget(this);\n }\n getId() {\n return QuickInputEditorWidget.ID;\n }\n getDomNode() {\n return this.domNode;\n }\n getPosition() {\n return { preference: 2 /* OverlayWidgetPositionPreference.TOP_CENTER */ };\n }\n dispose() {\n this.codeEditor.removeOverlayWidget(this);\n }\n}\nQuickInputEditorWidget.ID = 'editor.contrib.quickInputWidget';\nregisterEditorContribution(QuickInputEditorContribution.ID, QuickInputEditorContribution);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { addDisposableListener } from '../../../base/browser/dom.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from '../common/accessibility.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\nlet AccessibilityService = class AccessibilityService extends Disposable {\n constructor(_contextKeyService, _layoutService, _configurationService) {\n super();\n this._contextKeyService = _contextKeyService;\n this._layoutService = _layoutService;\n this._configurationService = _configurationService;\n this._accessibilitySupport = 0 /* AccessibilitySupport.Unknown */;\n this._onDidChangeScreenReaderOptimized = new Emitter();\n this._onDidChangeReducedMotion = new Emitter();\n this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);\n const updateContextKey = () => this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());\n this._register(this._configurationService.onDidChangeConfiguration(e => {\n if (e.affectsConfiguration('editor.accessibilitySupport')) {\n updateContextKey();\n this._onDidChangeScreenReaderOptimized.fire();\n }\n if (e.affectsConfiguration('workbench.reduceMotion')) {\n this._configMotionReduced = this._configurationService.getValue('workbench.reduceMotion');\n this._onDidChangeReducedMotion.fire();\n }\n }));\n updateContextKey();\n this._register(this.onDidChangeScreenReaderOptimized(() => updateContextKey()));\n const reduceMotionMatcher = window.matchMedia(`(prefers-reduced-motion: reduce)`);\n this._systemMotionReduced = reduceMotionMatcher.matches;\n this._configMotionReduced = this._configurationService.getValue('workbench.reduceMotion');\n this.initReducedMotionListeners(reduceMotionMatcher);\n }\n initReducedMotionListeners(reduceMotionMatcher) {\n if (!this._layoutService.hasContainer) {\n // we can't use `ILayoutService.container` because the application\n // doesn't have a single container\n return;\n }\n this._register(addDisposableListener(reduceMotionMatcher, 'change', () => {\n this._systemMotionReduced = reduceMotionMatcher.matches;\n if (this._configMotionReduced === 'auto') {\n this._onDidChangeReducedMotion.fire();\n }\n }));\n const updateRootClasses = () => {\n const reduce = this.isMotionReduced();\n this._layoutService.container.classList.toggle('reduce-motion', reduce);\n this._layoutService.container.classList.toggle('enable-motion', !reduce);\n };\n updateRootClasses();\n this._register(this.onDidChangeReducedMotion(() => updateRootClasses()));\n }\n get onDidChangeScreenReaderOptimized() {\n return this._onDidChangeScreenReaderOptimized.event;\n }\n isScreenReaderOptimized() {\n const config = this._configurationService.getValue('editor.accessibilitySupport');\n return config === 'on' || (config === 'auto' && this._accessibilitySupport === 2 /* AccessibilitySupport.Enabled */);\n }\n get onDidChangeReducedMotion() {\n return this._onDidChangeReducedMotion.event;\n }\n isMotionReduced() {\n const config = this._configMotionReduced;\n return config === 'on' || (config === 'auto' && this._systemMotionReduced);\n }\n getAccessibilitySupport() {\n return this._accessibilitySupport;\n }\n};\nAccessibilityService = __decorate([\n __param(0, IContextKeyService),\n __param(1, ILayoutService),\n __param(2, IConfigurationService)\n], AccessibilityService);\nexport { AccessibilityService };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { RunOnceScheduler } from '../../../base/common/async.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\nimport { IMenuService, isIMenuItem, MenuItemAction, MenuRegistry, SubmenuItemAction } from './actions.js';\nimport { ICommandService } from '../../commands/common/commands.js';\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\nimport { toAction } from '../../../base/common/actions.js';\nimport { IStorageService } from '../../storage/common/storage.js';\nimport { removeFastWithoutKeepingOrder } from '../../../base/common/arrays.js';\nimport { localize } from '../../../nls.js';\nlet MenuService = class MenuService {\n constructor(_commandService, storageService) {\n this._commandService = _commandService;\n this._hiddenStates = new PersistedMenuHideState(storageService);\n }\n createMenu(id, contextKeyService, options) {\n return new Menu(id, this._hiddenStates, Object.assign({ emitEventsForSubmenuChanges: false, eventDebounceDelay: 50 }, options), this._commandService, contextKeyService, this);\n }\n};\nMenuService = __decorate([\n __param(0, ICommandService),\n __param(1, IStorageService)\n], MenuService);\nexport { MenuService };\nlet PersistedMenuHideState = class PersistedMenuHideState {\n constructor(_storageService) {\n this._storageService = _storageService;\n this._disposables = new DisposableStore();\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this._ignoreChangeEvent = false;\n try {\n const raw = _storageService.get(PersistedMenuHideState._key, 0 /* StorageScope.PROFILE */, '{}');\n this._data = JSON.parse(raw);\n }\n catch (err) {\n this._data = Object.create(null);\n }\n this._disposables.add(_storageService.onDidChangeValue(e => {\n if (e.key !== PersistedMenuHideState._key) {\n return;\n }\n if (!this._ignoreChangeEvent) {\n try {\n const raw = _storageService.get(PersistedMenuHideState._key, 0 /* StorageScope.PROFILE */, '{}');\n this._data = JSON.parse(raw);\n }\n catch (err) {\n console.log('FAILED to read storage after UPDATE', err);\n }\n }\n this._onDidChange.fire();\n }));\n }\n dispose() {\n this._onDidChange.dispose();\n this._disposables.dispose();\n }\n isHidden(menu, commandId) {\n var _a, _b;\n return (_b = (_a = this._data[menu.id]) === null || _a === void 0 ? void 0 : _a.includes(commandId)) !== null && _b !== void 0 ? _b : false;\n }\n updateHidden(menu, commandId, hidden) {\n const entries = this._data[menu.id];\n if (!hidden) {\n // remove and cleanup\n if (entries) {\n const idx = entries.indexOf(commandId);\n if (idx >= 0) {\n removeFastWithoutKeepingOrder(entries, idx);\n }\n if (entries.length === 0) {\n delete this._data[menu.id];\n }\n }\n }\n else {\n // add unless already added\n if (!entries) {\n this._data[menu.id] = [commandId];\n }\n else {\n const idx = entries.indexOf(commandId);\n if (idx < 0) {\n entries.push(commandId);\n }\n }\n }\n this._persist();\n }\n _persist() {\n try {\n this._ignoreChangeEvent = true;\n const raw = JSON.stringify(this._data);\n this._storageService.store(PersistedMenuHideState._key, raw, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n }\n finally {\n this._ignoreChangeEvent = false;\n }\n }\n};\nPersistedMenuHideState._key = 'menu.hiddenCommands';\nPersistedMenuHideState = __decorate([\n __param(0, IStorageService)\n], PersistedMenuHideState);\nlet Menu = class Menu {\n constructor(_id, _hiddenStates, _options, _commandService, _contextKeyService, _menuService) {\n this._id = _id;\n this._hiddenStates = _hiddenStates;\n this._options = _options;\n this._commandService = _commandService;\n this._contextKeyService = _contextKeyService;\n this._menuService = _menuService;\n this._disposables = new DisposableStore();\n this._menuGroups = [];\n this._contextKeys = new Set();\n this._build();\n // Rebuild this menu whenever the menu registry reports an event for this MenuId.\n // This usually happen while code and extensions are loaded and affects the over\n // structure of the menu\n const rebuildMenuSoon = new RunOnceScheduler(() => {\n this._build();\n this._onDidChange.fire(this);\n }, _options.eventDebounceDelay);\n this._disposables.add(rebuildMenuSoon);\n this._disposables.add(MenuRegistry.onDidChangeMenu(e => {\n if (e.has(_id)) {\n rebuildMenuSoon.schedule();\n }\n }));\n // When context keys or storage state changes we need to check if the menu also has changed. However,\n // we only do that when someone listens on this menu because (1) these events are\n // firing often and (2) menu are often leaked\n const lazyListener = this._disposables.add(new DisposableStore());\n const startLazyListener = () => {\n const fireChangeSoon = new RunOnceScheduler(() => this._onDidChange.fire(this), _options.eventDebounceDelay);\n lazyListener.add(fireChangeSoon);\n lazyListener.add(_contextKeyService.onDidChangeContext(e => {\n if (e.affectsSome(this._contextKeys)) {\n fireChangeSoon.schedule();\n }\n }));\n lazyListener.add(_hiddenStates.onDidChange(() => {\n fireChangeSoon.schedule();\n }));\n };\n this._onDidChange = new Emitter({\n // start/stop context key listener\n onFirstListenerAdd: startLazyListener,\n onLastListenerRemove: lazyListener.clear.bind(lazyListener)\n });\n this.onDidChange = this._onDidChange.event;\n }\n dispose() {\n this._disposables.dispose();\n this._onDidChange.dispose();\n }\n _build() {\n // reset\n this._menuGroups.length = 0;\n this._contextKeys.clear();\n const menuItems = MenuRegistry.getMenuItems(this._id);\n let group;\n menuItems.sort(Menu._compareMenuItems);\n for (const item of menuItems) {\n // group by groupId\n const groupName = item.group || '';\n if (!group || group[0] !== groupName) {\n group = [groupName, []];\n this._menuGroups.push(group);\n }\n group[1].push(item);\n // keep keys for eventing\n this._collectContextKeys(item);\n }\n }\n _collectContextKeys(item) {\n Menu._fillInKbExprKeys(item.when, this._contextKeys);\n if (isIMenuItem(item)) {\n // keep precondition keys for event if applicable\n if (item.command.precondition) {\n Menu._fillInKbExprKeys(item.command.precondition, this._contextKeys);\n }\n // keep toggled keys for event if applicable\n if (item.command.toggled) {\n const toggledExpression = item.command.toggled.condition || item.command.toggled;\n Menu._fillInKbExprKeys(toggledExpression, this._contextKeys);\n }\n }\n else if (this._options.emitEventsForSubmenuChanges) {\n // recursively collect context keys from submenus so that this\n // menu fires events when context key changes affect submenus\n MenuRegistry.getMenuItems(item.submenu).forEach(this._collectContextKeys, this);\n }\n }\n getActions(options) {\n const result = [];\n const allToggleActions = [];\n for (const group of this._menuGroups) {\n const [id, items] = group;\n const toggleActions = [];\n const activeActions = [];\n for (const item of items) {\n if (this._contextKeyService.contextMatchesRules(item.when)) {\n let action;\n const isMenuItem = isIMenuItem(item);\n if (isMenuItem) {\n const menuHide = createMenuHide(this._id, item.command, this._hiddenStates);\n action = new MenuItemAction(item.command, item.alt, options, menuHide, this._contextKeyService, this._commandService);\n }\n else {\n action = new SubmenuItemAction(item, this._menuService, this._contextKeyService, options);\n if (action.actions.length === 0) {\n action.dispose();\n action = undefined;\n }\n }\n if (action) {\n activeActions.push(action);\n }\n }\n }\n if (activeActions.length > 0) {\n result.push([id, activeActions]);\n }\n if (toggleActions.length > 0) {\n allToggleActions.push(toggleActions);\n }\n }\n return result;\n }\n static _fillInKbExprKeys(exp, set) {\n if (exp) {\n for (const key of exp.keys()) {\n set.add(key);\n }\n }\n }\n static _compareMenuItems(a, b) {\n const aGroup = a.group;\n const bGroup = b.group;\n if (aGroup !== bGroup) {\n // Falsy groups come last\n if (!aGroup) {\n return 1;\n }\n else if (!bGroup) {\n return -1;\n }\n // 'navigation' group comes first\n if (aGroup === 'navigation') {\n return -1;\n }\n else if (bGroup === 'navigation') {\n return 1;\n }\n // lexical sort for groups\n const value = aGroup.localeCompare(bGroup);\n if (value !== 0) {\n return value;\n }\n }\n // sort on priority - default is 0\n const aPrio = a.order || 0;\n const bPrio = b.order || 0;\n if (aPrio < bPrio) {\n return -1;\n }\n else if (aPrio > bPrio) {\n return 1;\n }\n // sort on titles\n return Menu._compareTitles(isIMenuItem(a) ? a.command.title : a.title, isIMenuItem(b) ? b.command.title : b.title);\n }\n static _compareTitles(a, b) {\n const aStr = typeof a === 'string' ? a : a.original;\n const bStr = typeof b === 'string' ? b : b.original;\n return aStr.localeCompare(bStr);\n }\n};\nMenu = __decorate([\n __param(3, ICommandService),\n __param(4, IContextKeyService),\n __param(5, IMenuService)\n], Menu);\nfunction createMenuHide(menu, command, states) {\n const id = `${menu.id}/${command.id}`;\n const title = typeof command.title === 'string' ? command.title : command.title.value;\n const hide = toAction({\n id,\n label: localize('hide.label', 'Hide \\'{0}\\'', title),\n run() { states.updateHidden(menu, command.id, true); }\n });\n const toggle = toAction({\n id,\n label: title,\n get checked() { return !states.isHidden(menu, command.id); },\n run() {\n const newValue = !states.isHidden(menu, command.id);\n states.updateHidden(menu, command.id, newValue);\n }\n });\n return {\n hide,\n toggle,\n get isHidden() { return !toggle.checked; },\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { isSafari, isWebkitWebView } from '../../../base/browser/browser.js';\nimport { $, addDisposableListener } from '../../../base/browser/dom.js';\nimport { DeferredPromise } from '../../../base/common/async.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\nimport { ILogService } from '../../log/common/log.js';\nlet BrowserClipboardService = class BrowserClipboardService extends Disposable {\n constructor(layoutService, logService) {\n super();\n this.layoutService = layoutService;\n this.logService = logService;\n this.mapTextToType = new Map(); // unsupported in web (only in-memory)\n this.findText = ''; // unsupported in web (only in-memory)\n this.resources = [];\n if (isSafari || isWebkitWebView) {\n this.installWebKitWriteTextWorkaround();\n }\n }\n // In Safari, it has the following note:\n //\n // \"The request to write to the clipboard must be triggered during a user gesture.\n // A call to clipboard.write or clipboard.writeText outside the scope of a user\n // gesture(such as \"click\" or \"touch\" event handlers) will result in the immediate\n // rejection of the promise returned by the API call.\"\n // From: https://webkit.org/blog/10855/async-clipboard-api/\n //\n // Since extensions run in a web worker, and handle gestures in an asynchronous way,\n // they are not classified by Safari as \"in response to a user gesture\" and will reject.\n //\n // This function sets up some handlers to work around that behavior.\n installWebKitWriteTextWorkaround() {\n const handler = () => {\n const currentWritePromise = new DeferredPromise();\n // Cancel the previous promise since we just created a new one in response to this new event\n if (this.webKitPendingClipboardWritePromise && !this.webKitPendingClipboardWritePromise.isSettled) {\n this.webKitPendingClipboardWritePromise.cancel();\n }\n this.webKitPendingClipboardWritePromise = currentWritePromise;\n // The ctor of ClipboardItem allows you to pass in a promise that will resolve to a string.\n // This allows us to pass in a Promise that will either be cancelled by another event or\n // resolved with the contents of the first call to this.writeText.\n // see https://developer.mozilla.org/en-US/docs/Web/API/ClipboardItem/ClipboardItem#parameters\n navigator.clipboard.write([new ClipboardItem({\n 'text/plain': currentWritePromise.p,\n })]).catch((err) => __awaiter(this, void 0, void 0, function* () {\n if (!(err instanceof Error) || err.name !== 'NotAllowedError' || !currentWritePromise.isRejected) {\n this.logService.error(err);\n }\n }));\n };\n if (this.layoutService.hasContainer) {\n this._register(addDisposableListener(this.layoutService.container, 'click', handler));\n this._register(addDisposableListener(this.layoutService.container, 'keydown', handler));\n }\n }\n writeText(text, type) {\n return __awaiter(this, void 0, void 0, function* () {\n // With type: only in-memory is supported\n if (type) {\n this.mapTextToType.set(type, text);\n return;\n }\n if (this.webKitPendingClipboardWritePromise) {\n // For Safari, we complete this Promise which allows the call to `navigator.clipboard.write()`\n // above to resolve and successfully copy to the clipboard. If we let this continue, Safari\n // would throw an error because this call stack doesn't appear to originate from a user gesture.\n return this.webKitPendingClipboardWritePromise.complete(text);\n }\n // Guard access to navigator.clipboard with try/catch\n // as we have seen DOMExceptions in certain browsers\n // due to security policies.\n try {\n return yield navigator.clipboard.writeText(text);\n }\n catch (error) {\n console.error(error);\n }\n // Fallback to textarea and execCommand solution\n const activeElement = document.activeElement;\n const textArea = document.body.appendChild($('textarea', { 'aria-hidden': true }));\n textArea.style.height = '1px';\n textArea.style.width = '1px';\n textArea.style.position = 'absolute';\n textArea.value = text;\n textArea.focus();\n textArea.select();\n document.execCommand('copy');\n if (activeElement instanceof HTMLElement) {\n activeElement.focus();\n }\n document.body.removeChild(textArea);\n return;\n });\n }\n readText(type) {\n return __awaiter(this, void 0, void 0, function* () {\n // With type: only in-memory is supported\n if (type) {\n return this.mapTextToType.get(type) || '';\n }\n // Guard access to navigator.clipboard with try/catch\n // as we have seen DOMExceptions in certain browsers\n // due to security policies.\n try {\n return yield navigator.clipboard.readText();\n }\n catch (error) {\n console.error(error);\n return '';\n }\n });\n }\n readFindText() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.findText;\n });\n }\n writeFindText(text) {\n return __awaiter(this, void 0, void 0, function* () {\n this.findText = text;\n });\n }\n readResources() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.resources;\n });\n }\n};\nBrowserClipboardService = __decorate([\n __param(0, ILayoutService),\n __param(1, ILogService)\n], BrowserClipboardService);\nexport { BrowserClipboardService };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { PauseableEmitter } from '../../../base/common/event.js';\nimport { Iterable } from '../../../base/common/iterator.js';\nimport { DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\nimport { TernarySearchTree } from '../../../base/common/map.js';\nimport { cloneAndChange } from '../../../base/common/objects.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { localize } from '../../../nls.js';\nimport { CommandsRegistry } from '../../commands/common/commands.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { IContextKeyService, RawContextKey, SET_CONTEXT_COMMAND_ID } from '../common/contextkey.js';\nconst KEYBINDING_CONTEXT_ATTR = 'data-keybinding-context';\nexport class Context {\n constructor(id, parent) {\n this._id = id;\n this._parent = parent;\n this._value = Object.create(null);\n this._value['_contextId'] = id;\n }\n get value() {\n return Object.assign({}, this._value);\n }\n setValue(key, value) {\n // console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\n if (this._value[key] !== value) {\n this._value[key] = value;\n return true;\n }\n return false;\n }\n removeValue(key) {\n // console.log('REMOVE ' + key + ' FROM ' + this._id);\n if (key in this._value) {\n delete this._value[key];\n return true;\n }\n return false;\n }\n getValue(key) {\n const ret = this._value[key];\n if (typeof ret === 'undefined' && this._parent) {\n return this._parent.getValue(key);\n }\n return ret;\n }\n}\nclass NullContext extends Context {\n constructor() {\n super(-1, null);\n }\n setValue(key, value) {\n return false;\n }\n removeValue(key) {\n return false;\n }\n getValue(key) {\n return undefined;\n }\n}\nNullContext.INSTANCE = new NullContext();\nclass ConfigAwareContextValuesContainer extends Context {\n constructor(id, _configurationService, emitter) {\n super(id, null);\n this._configurationService = _configurationService;\n this._values = TernarySearchTree.forConfigKeys();\n this._listener = this._configurationService.onDidChangeConfiguration(event => {\n if (event.source === 7 /* ConfigurationTarget.DEFAULT */) {\n // new setting, reset everything\n const allKeys = Array.from(Iterable.map(this._values, ([k]) => k));\n this._values.clear();\n emitter.fire(new ArrayContextKeyChangeEvent(allKeys));\n }\n else {\n const changedKeys = [];\n for (const configKey of event.affectedKeys) {\n const contextKey = `config.${configKey}`;\n const cachedItems = this._values.findSuperstr(contextKey);\n if (cachedItems !== undefined) {\n changedKeys.push(...Iterable.map(cachedItems, ([key]) => key));\n this._values.deleteSuperstr(contextKey);\n }\n if (this._values.has(contextKey)) {\n changedKeys.push(contextKey);\n this._values.delete(contextKey);\n }\n }\n emitter.fire(new ArrayContextKeyChangeEvent(changedKeys));\n }\n });\n }\n dispose() {\n this._listener.dispose();\n }\n getValue(key) {\n if (key.indexOf(ConfigAwareContextValuesContainer._keyPrefix) !== 0) {\n return super.getValue(key);\n }\n if (this._values.has(key)) {\n return this._values.get(key);\n }\n const configKey = key.substr(ConfigAwareContextValuesContainer._keyPrefix.length);\n const configValue = this._configurationService.getValue(configKey);\n let value = undefined;\n switch (typeof configValue) {\n case 'number':\n case 'boolean':\n case 'string':\n value = configValue;\n break;\n default:\n if (Array.isArray(configValue)) {\n value = JSON.stringify(configValue);\n }\n else {\n value = configValue;\n }\n }\n this._values.set(key, value);\n return value;\n }\n setValue(key, value) {\n return super.setValue(key, value);\n }\n removeValue(key) {\n return super.removeValue(key);\n }\n}\nConfigAwareContextValuesContainer._keyPrefix = 'config.';\nclass ContextKey {\n constructor(service, key, defaultValue) {\n this._service = service;\n this._key = key;\n this._defaultValue = defaultValue;\n this.reset();\n }\n set(value) {\n this._service.setContext(this._key, value);\n }\n reset() {\n if (typeof this._defaultValue === 'undefined') {\n this._service.removeContext(this._key);\n }\n else {\n this._service.setContext(this._key, this._defaultValue);\n }\n }\n get() {\n return this._service.getContextKeyValue(this._key);\n }\n}\nclass SimpleContextKeyChangeEvent {\n constructor(key) {\n this.key = key;\n }\n affectsSome(keys) {\n return keys.has(this.key);\n }\n allKeysContainedIn(keys) {\n return this.affectsSome(keys);\n }\n}\nclass ArrayContextKeyChangeEvent {\n constructor(keys) {\n this.keys = keys;\n }\n affectsSome(keys) {\n for (const key of this.keys) {\n if (keys.has(key)) {\n return true;\n }\n }\n return false;\n }\n allKeysContainedIn(keys) {\n return this.keys.every(key => keys.has(key));\n }\n}\nclass CompositeContextKeyChangeEvent {\n constructor(events) {\n this.events = events;\n }\n affectsSome(keys) {\n for (const e of this.events) {\n if (e.affectsSome(keys)) {\n return true;\n }\n }\n return false;\n }\n allKeysContainedIn(keys) {\n return this.events.every(evt => evt.allKeysContainedIn(keys));\n }\n}\nfunction allEventKeysInContext(event, context) {\n return event.allKeysContainedIn(new Set(Object.keys(context)));\n}\nexport class AbstractContextKeyService {\n constructor(myContextId) {\n this._onDidChangeContext = new PauseableEmitter({ merge: input => new CompositeContextKeyChangeEvent(input) });\n this.onDidChangeContext = this._onDidChangeContext.event;\n this._isDisposed = false;\n this._myContextId = myContextId;\n }\n createKey(key, defaultValue) {\n if (this._isDisposed) {\n throw new Error(`AbstractContextKeyService has been disposed`);\n }\n return new ContextKey(this, key, defaultValue);\n }\n bufferChangeEvents(callback) {\n this._onDidChangeContext.pause();\n try {\n callback();\n }\n finally {\n this._onDidChangeContext.resume();\n }\n }\n createScoped(domNode) {\n if (this._isDisposed) {\n throw new Error(`AbstractContextKeyService has been disposed`);\n }\n return new ScopedContextKeyService(this, domNode);\n }\n contextMatchesRules(rules) {\n if (this._isDisposed) {\n throw new Error(`AbstractContextKeyService has been disposed`);\n }\n const context = this.getContextValuesContainer(this._myContextId);\n const result = (rules ? rules.evaluate(context) : true);\n // console.group(rules.serialize() + ' -> ' + result);\n // rules.keys().forEach(key => { console.log(key, ctx[key]); });\n // console.groupEnd();\n return result;\n }\n getContextKeyValue(key) {\n if (this._isDisposed) {\n return undefined;\n }\n return this.getContextValuesContainer(this._myContextId).getValue(key);\n }\n setContext(key, value) {\n if (this._isDisposed) {\n return;\n }\n const myContext = this.getContextValuesContainer(this._myContextId);\n if (!myContext) {\n return;\n }\n if (myContext.setValue(key, value)) {\n this._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\n }\n }\n removeContext(key) {\n if (this._isDisposed) {\n return;\n }\n if (this.getContextValuesContainer(this._myContextId).removeValue(key)) {\n this._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\n }\n }\n getContext(target) {\n if (this._isDisposed) {\n return NullContext.INSTANCE;\n }\n return this.getContextValuesContainer(findContextAttr(target));\n }\n}\nlet ContextKeyService = class ContextKeyService extends AbstractContextKeyService {\n constructor(configurationService) {\n super(0);\n this._contexts = new Map();\n this._toDispose = new DisposableStore();\n this._lastContextId = 0;\n const myContext = new ConfigAwareContextValuesContainer(this._myContextId, configurationService, this._onDidChangeContext);\n this._contexts.set(this._myContextId, myContext);\n this._toDispose.add(myContext);\n // Uncomment this to see the contexts continuously logged\n // let lastLoggedValue: string | null = null;\n // setInterval(() => {\n // \tlet values = Object.keys(this._contexts).map((key) => this._contexts[key]);\n // \tlet logValue = values.map(v => JSON.stringify(v._value, null, '\\t')).join('\\n');\n // \tif (lastLoggedValue !== logValue) {\n // \t\tlastLoggedValue = logValue;\n // \t\tconsole.log(lastLoggedValue);\n // \t}\n // }, 2000);\n }\n dispose() {\n this._onDidChangeContext.dispose();\n this._isDisposed = true;\n this._toDispose.dispose();\n }\n getContextValuesContainer(contextId) {\n if (this._isDisposed) {\n return NullContext.INSTANCE;\n }\n return this._contexts.get(contextId) || NullContext.INSTANCE;\n }\n createChildContext(parentContextId = this._myContextId) {\n if (this._isDisposed) {\n throw new Error(`ContextKeyService has been disposed`);\n }\n const id = (++this._lastContextId);\n this._contexts.set(id, new Context(id, this.getContextValuesContainer(parentContextId)));\n return id;\n }\n disposeContext(contextId) {\n if (!this._isDisposed) {\n this._contexts.delete(contextId);\n }\n }\n};\nContextKeyService = __decorate([\n __param(0, IConfigurationService)\n], ContextKeyService);\nexport { ContextKeyService };\nclass ScopedContextKeyService extends AbstractContextKeyService {\n constructor(parent, domNode) {\n super(parent.createChildContext());\n this._parentChangeListener = new MutableDisposable();\n this._parent = parent;\n this._updateParentChangeListener();\n this._domNode = domNode;\n if (this._domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\n let extraInfo = '';\n if (this._domNode.classList) {\n extraInfo = Array.from(this._domNode.classList.values()).join(', ');\n }\n console.error(`Element already has context attribute${extraInfo ? ': ' + extraInfo : ''}`);\n }\n this._domNode.setAttribute(KEYBINDING_CONTEXT_ATTR, String(this._myContextId));\n }\n _updateParentChangeListener() {\n // Forward parent events to this listener. Parent will change.\n this._parentChangeListener.value = this._parent.onDidChangeContext(e => {\n const thisContainer = this._parent.getContextValuesContainer(this._myContextId);\n const thisContextValues = thisContainer.value;\n if (!allEventKeysInContext(e, thisContextValues)) {\n this._onDidChangeContext.fire(e);\n }\n });\n }\n dispose() {\n if (this._isDisposed) {\n return;\n }\n this._onDidChangeContext.dispose();\n this._parent.disposeContext(this._myContextId);\n this._parentChangeListener.dispose();\n this._domNode.removeAttribute(KEYBINDING_CONTEXT_ATTR);\n this._isDisposed = true;\n }\n getContextValuesContainer(contextId) {\n if (this._isDisposed) {\n return NullContext.INSTANCE;\n }\n return this._parent.getContextValuesContainer(contextId);\n }\n createChildContext(parentContextId = this._myContextId) {\n if (this._isDisposed) {\n throw new Error(`ScopedContextKeyService has been disposed`);\n }\n return this._parent.createChildContext(parentContextId);\n }\n disposeContext(contextId) {\n if (this._isDisposed) {\n return;\n }\n this._parent.disposeContext(contextId);\n }\n}\nfunction findContextAttr(domNode) {\n while (domNode) {\n if (domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\n const attr = domNode.getAttribute(KEYBINDING_CONTEXT_ATTR);\n if (attr) {\n return parseInt(attr, 10);\n }\n return NaN;\n }\n domNode = domNode.parentElement;\n }\n return 0;\n}\nexport function setContext(accessor, contextKey, contextValue) {\n accessor.get(IContextKeyService).createKey(String(contextKey), stringifyURIs(contextValue));\n}\nfunction stringifyURIs(contextValue) {\n return cloneAndChange(contextValue, (obj) => {\n if (typeof obj === 'object' && obj.$mid === 1 /* MarshalledId.Uri */) {\n return URI.revive(obj).toString();\n }\n if (obj instanceof URI) {\n return obj.toString();\n }\n return undefined;\n });\n}\nCommandsRegistry.registerCommand(SET_CONTEXT_COMMAND_ID, setContext);\nCommandsRegistry.registerCommand({\n id: 'getContextKeyInfo',\n handler() {\n return [...RawContextKey.all()].sort((a, b) => a.key.localeCompare(b.key));\n },\n description: {\n description: localize('getContextKeyInfo', \"A command that returns information about context keys\"),\n args: []\n }\n});\nCommandsRegistry.registerCommand('_generateContextKeyInfo', function () {\n const result = [];\n const seen = new Set();\n for (const info of RawContextKey.all()) {\n if (!seen.has(info.key)) {\n seen.add(info.key);\n result.push(info);\n }\n }\n result.sort((a, b) => a.key.localeCompare(b.key));\n console.log(JSON.stringify(result, undefined, 2));\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class Node {\n constructor(data) {\n this.incoming = new Map();\n this.outgoing = new Map();\n this.data = data;\n }\n}\nexport class Graph {\n constructor(_hashFn) {\n this._hashFn = _hashFn;\n this._nodes = new Map();\n // empty\n }\n roots() {\n const ret = [];\n for (const node of this._nodes.values()) {\n if (node.outgoing.size === 0) {\n ret.push(node);\n }\n }\n return ret;\n }\n insertEdge(from, to) {\n const fromNode = this.lookupOrInsertNode(from);\n const toNode = this.lookupOrInsertNode(to);\n fromNode.outgoing.set(this._hashFn(to), toNode);\n toNode.incoming.set(this._hashFn(from), fromNode);\n }\n removeNode(data) {\n const key = this._hashFn(data);\n this._nodes.delete(key);\n for (const node of this._nodes.values()) {\n node.outgoing.delete(key);\n node.incoming.delete(key);\n }\n }\n lookupOrInsertNode(data) {\n const key = this._hashFn(data);\n let node = this._nodes.get(key);\n if (!node) {\n node = new Node(data);\n this._nodes.set(key, node);\n }\n return node;\n }\n isEmpty() {\n return this._nodes.size === 0;\n }\n toString() {\n const data = [];\n for (const [key, value] of this._nodes) {\n data.push(`${key}, (incoming)[${[...value.incoming.keys()].join(', ')}], (outgoing)[${[...value.outgoing.keys()].join(',')}]`);\n }\n return data.join('\\n');\n }\n /**\n * This is brute force and slow and **only** be used\n * to trouble shoot.\n */\n findCycleSlow() {\n for (const [id, node] of this._nodes) {\n const seen = new Set([id]);\n const res = this._findCycle(node, seen);\n if (res) {\n return res;\n }\n }\n return undefined;\n }\n _findCycle(node, seen) {\n for (const [id, outgoing] of node.outgoing) {\n if (seen.has(id)) {\n return [...seen, id].join(' -> ');\n }\n seen.add(id);\n const value = this._findCycle(outgoing, seen);\n if (value) {\n return value;\n }\n seen.delete(id);\n }\n return undefined;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IdleValue } from '../../../base/common/async.js';\nimport { illegalState } from '../../../base/common/errors.js';\nimport { SyncDescriptor } from './descriptors.js';\nimport { Graph } from './graph.js';\nimport { IInstantiationService, _util } from './instantiation.js';\nimport { ServiceCollection } from './serviceCollection.js';\n// TRACING\nconst _enableTracing = false;\nclass CyclicDependencyError extends Error {\n constructor(graph) {\n var _a;\n super('cyclic dependency between services');\n this.message = (_a = graph.findCycleSlow()) !== null && _a !== void 0 ? _a : `UNABLE to detect cycle, dumping graph: \\n${graph.toString()}`;\n }\n}\nexport class InstantiationService {\n constructor(services = new ServiceCollection(), strict = false, parent) {\n this._activeInstantiations = new Set();\n this._services = services;\n this._strict = strict;\n this._parent = parent;\n this._services.set(IInstantiationService, this);\n }\n createChild(services) {\n return new InstantiationService(services, this._strict, this);\n }\n invokeFunction(fn, ...args) {\n const _trace = Trace.traceInvocation(fn);\n let _done = false;\n try {\n const accessor = {\n get: (id) => {\n if (_done) {\n throw illegalState('service accessor is only valid during the invocation of its target method');\n }\n const result = this._getOrCreateServiceInstance(id, _trace);\n if (!result) {\n throw new Error(`[invokeFunction] unknown service '${id}'`);\n }\n return result;\n }\n };\n return fn(accessor, ...args);\n }\n finally {\n _done = true;\n _trace.stop();\n }\n }\n createInstance(ctorOrDescriptor, ...rest) {\n let _trace;\n let result;\n if (ctorOrDescriptor instanceof SyncDescriptor) {\n _trace = Trace.traceCreation(ctorOrDescriptor.ctor);\n result = this._createInstance(ctorOrDescriptor.ctor, ctorOrDescriptor.staticArguments.concat(rest), _trace);\n }\n else {\n _trace = Trace.traceCreation(ctorOrDescriptor);\n result = this._createInstance(ctorOrDescriptor, rest, _trace);\n }\n _trace.stop();\n return result;\n }\n _createInstance(ctor, args = [], _trace) {\n // arguments defined by service decorators\n const serviceDependencies = _util.getServiceDependencies(ctor).sort((a, b) => a.index - b.index);\n const serviceArgs = [];\n for (const dependency of serviceDependencies) {\n const service = this._getOrCreateServiceInstance(dependency.id, _trace);\n if (!service) {\n this._throwIfStrict(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`, false);\n }\n serviceArgs.push(service);\n }\n const firstServiceArgPos = serviceDependencies.length > 0 ? serviceDependencies[0].index : args.length;\n // check for argument mismatches, adjust static args if needed\n if (args.length !== firstServiceArgPos) {\n console.trace(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);\n const delta = firstServiceArgPos - args.length;\n if (delta > 0) {\n args = args.concat(new Array(delta));\n }\n else {\n args = args.slice(0, firstServiceArgPos);\n }\n }\n // now create the instance\n return new ctor(...[...args, ...serviceArgs]);\n }\n _setServiceInstance(id, instance) {\n if (this._services.get(id) instanceof SyncDescriptor) {\n this._services.set(id, instance);\n }\n else if (this._parent) {\n this._parent._setServiceInstance(id, instance);\n }\n else {\n throw new Error('illegalState - setting UNKNOWN service instance');\n }\n }\n _getServiceInstanceOrDescriptor(id) {\n const instanceOrDesc = this._services.get(id);\n if (!instanceOrDesc && this._parent) {\n return this._parent._getServiceInstanceOrDescriptor(id);\n }\n else {\n return instanceOrDesc;\n }\n }\n _getOrCreateServiceInstance(id, _trace) {\n const thing = this._getServiceInstanceOrDescriptor(id);\n if (thing instanceof SyncDescriptor) {\n return this._safeCreateAndCacheServiceInstance(id, thing, _trace.branch(id, true));\n }\n else {\n _trace.branch(id, false);\n return thing;\n }\n }\n _safeCreateAndCacheServiceInstance(id, desc, _trace) {\n if (this._activeInstantiations.has(id)) {\n throw new Error(`illegal state - RECURSIVELY instantiating service '${id}'`);\n }\n this._activeInstantiations.add(id);\n try {\n return this._createAndCacheServiceInstance(id, desc, _trace);\n }\n finally {\n this._activeInstantiations.delete(id);\n }\n }\n _createAndCacheServiceInstance(id, desc, _trace) {\n const graph = new Graph(data => data.id.toString());\n let cycleCount = 0;\n const stack = [{ id, desc, _trace }];\n while (stack.length) {\n const item = stack.pop();\n graph.lookupOrInsertNode(item);\n // a weak but working heuristic for cycle checks\n if (cycleCount++ > 1000) {\n throw new CyclicDependencyError(graph);\n }\n // check all dependencies for existence and if they need to be created first\n for (const dependency of _util.getServiceDependencies(item.desc.ctor)) {\n const instanceOrDesc = this._getServiceInstanceOrDescriptor(dependency.id);\n if (!instanceOrDesc) {\n this._throwIfStrict(`[createInstance] ${id} depends on ${dependency.id} which is NOT registered.`, true);\n }\n if (instanceOrDesc instanceof SyncDescriptor) {\n const d = { id: dependency.id, desc: instanceOrDesc, _trace: item._trace.branch(dependency.id, true) };\n graph.insertEdge(item, d);\n stack.push(d);\n }\n }\n }\n while (true) {\n const roots = graph.roots();\n // if there is no more roots but still\n // nodes in the graph we have a cycle\n if (roots.length === 0) {\n if (!graph.isEmpty()) {\n throw new CyclicDependencyError(graph);\n }\n break;\n }\n for (const { data } of roots) {\n // Repeat the check for this still being a service sync descriptor. That's because\n // instantiating a dependency might have side-effect and recursively trigger instantiation\n // so that some dependencies are now fullfilled already.\n const instanceOrDesc = this._getServiceInstanceOrDescriptor(data.id);\n if (instanceOrDesc instanceof SyncDescriptor) {\n // create instance and overwrite the service collections\n const instance = this._createServiceInstanceWithOwner(data.id, data.desc.ctor, data.desc.staticArguments, data.desc.supportsDelayedInstantiation, data._trace);\n this._setServiceInstance(data.id, instance);\n }\n graph.removeNode(data);\n }\n }\n return this._getServiceInstanceOrDescriptor(id);\n }\n _createServiceInstanceWithOwner(id, ctor, args = [], supportsDelayedInstantiation, _trace) {\n if (this._services.get(id) instanceof SyncDescriptor) {\n return this._createServiceInstance(ctor, args, supportsDelayedInstantiation, _trace);\n }\n else if (this._parent) {\n return this._parent._createServiceInstanceWithOwner(id, ctor, args, supportsDelayedInstantiation, _trace);\n }\n else {\n throw new Error(`illegalState - creating UNKNOWN service instance ${ctor.name}`);\n }\n }\n _createServiceInstance(ctor, args = [], _supportsDelayedInstantiation, _trace) {\n if (!_supportsDelayedInstantiation) {\n // eager instantiation\n return this._createInstance(ctor, args, _trace);\n }\n else {\n // Return a proxy object that's backed by an idle value. That\n // strategy is to instantiate services in our idle time or when actually\n // needed but not when injected into a consumer\n const idle = new IdleValue(() => this._createInstance(ctor, args, _trace));\n return new Proxy(Object.create(null), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n const obj = idle.value;\n let prop = obj[key];\n if (typeof prop !== 'function') {\n return prop;\n }\n prop = prop.bind(obj);\n target[key] = prop;\n return prop;\n },\n set(_target, p, value) {\n idle.value[p] = value;\n return true;\n }\n });\n }\n }\n _throwIfStrict(msg, printWarning) {\n if (printWarning) {\n console.warn(msg);\n }\n if (this._strict) {\n throw new Error(msg);\n }\n }\n}\nexport class Trace {\n constructor(type, name) {\n this.type = type;\n this.name = name;\n this._start = Date.now();\n this._dep = [];\n }\n static traceInvocation(ctor) {\n return !_enableTracing ? Trace._None : new Trace(1 /* TraceType.Invocation */, ctor.name || ctor.toString().substring(0, 42).replace(/\\n/g, ''));\n }\n static traceCreation(ctor) {\n return !_enableTracing ? Trace._None : new Trace(0 /* TraceType.Creation */, ctor.name);\n }\n branch(id, first) {\n const child = new Trace(2 /* TraceType.Branch */, id.toString());\n this._dep.push([id, first, child]);\n return child;\n }\n stop() {\n const dur = Date.now() - this._start;\n Trace._totals += dur;\n let causedCreation = false;\n function printChild(n, trace) {\n const res = [];\n const prefix = new Array(n + 1).join('\\t');\n for (const [id, first, child] of trace._dep) {\n if (first && child) {\n causedCreation = true;\n res.push(`${prefix}CREATES -> ${id}`);\n const nested = printChild(n + 1, child);\n if (nested) {\n res.push(nested);\n }\n }\n else {\n res.push(`${prefix}uses -> ${id}`);\n }\n }\n return res.join('\\n');\n }\n const lines = [\n `${this.type === 0 /* TraceType.Creation */ ? 'CREATE' : 'CALL'} ${this.name}`,\n `${printChild(1, this)}`,\n `DONE, took ${dur.toFixed(2)}ms (grand total ${Trace._totals.toFixed(2)}ms)`\n ];\n if (dur > 2 || causedCreation) {\n console.log(lines.join('\\n'));\n }\n }\n}\nTrace._None = new class extends Trace {\n constructor() { super(-1, null); }\n stop() { }\n branch() { return this; }\n};\nTrace._totals = 0;\n//#endregion\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { isFalsyOrEmpty, isNonEmptyArray } from '../../../base/common/arrays.js';\nimport { DebounceEmitter } from '../../../base/common/event.js';\nimport { Iterable } from '../../../base/common/iterator.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport { Schemas } from '../../../base/common/network.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { MarkerSeverity } from './markers.js';\nclass DoubleResourceMap {\n constructor() {\n this._byResource = new ResourceMap();\n this._byOwner = new Map();\n }\n set(resource, owner, value) {\n let ownerMap = this._byResource.get(resource);\n if (!ownerMap) {\n ownerMap = new Map();\n this._byResource.set(resource, ownerMap);\n }\n ownerMap.set(owner, value);\n let resourceMap = this._byOwner.get(owner);\n if (!resourceMap) {\n resourceMap = new ResourceMap();\n this._byOwner.set(owner, resourceMap);\n }\n resourceMap.set(resource, value);\n }\n get(resource, owner) {\n const ownerMap = this._byResource.get(resource);\n return ownerMap === null || ownerMap === void 0 ? void 0 : ownerMap.get(owner);\n }\n delete(resource, owner) {\n let removedA = false;\n let removedB = false;\n const ownerMap = this._byResource.get(resource);\n if (ownerMap) {\n removedA = ownerMap.delete(owner);\n }\n const resourceMap = this._byOwner.get(owner);\n if (resourceMap) {\n removedB = resourceMap.delete(resource);\n }\n if (removedA !== removedB) {\n throw new Error('illegal state');\n }\n return removedA && removedB;\n }\n values(key) {\n var _a, _b, _c, _d;\n if (typeof key === 'string') {\n return (_b = (_a = this._byOwner.get(key)) === null || _a === void 0 ? void 0 : _a.values()) !== null && _b !== void 0 ? _b : Iterable.empty();\n }\n if (URI.isUri(key)) {\n return (_d = (_c = this._byResource.get(key)) === null || _c === void 0 ? void 0 : _c.values()) !== null && _d !== void 0 ? _d : Iterable.empty();\n }\n return Iterable.map(Iterable.concat(...this._byOwner.values()), map => map[1]);\n }\n}\nclass MarkerStats {\n constructor(service) {\n this.errors = 0;\n this.infos = 0;\n this.warnings = 0;\n this.unknowns = 0;\n this._data = new ResourceMap();\n this._service = service;\n this._subscription = service.onMarkerChanged(this._update, this);\n }\n dispose() {\n this._subscription.dispose();\n }\n _update(resources) {\n for (const resource of resources) {\n const oldStats = this._data.get(resource);\n if (oldStats) {\n this._substract(oldStats);\n }\n const newStats = this._resourceStats(resource);\n this._add(newStats);\n this._data.set(resource, newStats);\n }\n }\n _resourceStats(resource) {\n const result = { errors: 0, warnings: 0, infos: 0, unknowns: 0 };\n // TODO this is a hack\n if (resource.scheme === Schemas.inMemory || resource.scheme === Schemas.walkThrough || resource.scheme === Schemas.walkThroughSnippet || resource.scheme === Schemas.vscodeSourceControl) {\n return result;\n }\n for (const { severity } of this._service.read({ resource })) {\n if (severity === MarkerSeverity.Error) {\n result.errors += 1;\n }\n else if (severity === MarkerSeverity.Warning) {\n result.warnings += 1;\n }\n else if (severity === MarkerSeverity.Info) {\n result.infos += 1;\n }\n else {\n result.unknowns += 1;\n }\n }\n return result;\n }\n _substract(op) {\n this.errors -= op.errors;\n this.warnings -= op.warnings;\n this.infos -= op.infos;\n this.unknowns -= op.unknowns;\n }\n _add(op) {\n this.errors += op.errors;\n this.warnings += op.warnings;\n this.infos += op.infos;\n this.unknowns += op.unknowns;\n }\n}\nexport class MarkerService {\n constructor() {\n this._onMarkerChanged = new DebounceEmitter({\n delay: 0,\n merge: MarkerService._merge\n });\n this.onMarkerChanged = this._onMarkerChanged.event;\n this._data = new DoubleResourceMap();\n this._stats = new MarkerStats(this);\n }\n dispose() {\n this._stats.dispose();\n this._onMarkerChanged.dispose();\n }\n remove(owner, resources) {\n for (const resource of resources || []) {\n this.changeOne(owner, resource, []);\n }\n }\n changeOne(owner, resource, markerData) {\n if (isFalsyOrEmpty(markerData)) {\n // remove marker for this (owner,resource)-tuple\n const removed = this._data.delete(resource, owner);\n if (removed) {\n this._onMarkerChanged.fire([resource]);\n }\n }\n else {\n // insert marker for this (owner,resource)-tuple\n const markers = [];\n for (const data of markerData) {\n const marker = MarkerService._toMarker(owner, resource, data);\n if (marker) {\n markers.push(marker);\n }\n }\n this._data.set(resource, owner, markers);\n this._onMarkerChanged.fire([resource]);\n }\n }\n static _toMarker(owner, resource, data) {\n let { code, severity, message, source, startLineNumber, startColumn, endLineNumber, endColumn, relatedInformation, tags, } = data;\n if (!message) {\n return undefined;\n }\n // santize data\n startLineNumber = startLineNumber > 0 ? startLineNumber : 1;\n startColumn = startColumn > 0 ? startColumn : 1;\n endLineNumber = endLineNumber >= startLineNumber ? endLineNumber : startLineNumber;\n endColumn = endColumn > 0 ? endColumn : startColumn;\n return {\n resource,\n owner,\n code,\n severity,\n message,\n source,\n startLineNumber,\n startColumn,\n endLineNumber,\n endColumn,\n relatedInformation,\n tags,\n };\n }\n changeAll(owner, data) {\n const changes = [];\n // remove old marker\n const existing = this._data.values(owner);\n if (existing) {\n for (const data of existing) {\n const first = Iterable.first(data);\n if (first) {\n changes.push(first.resource);\n this._data.delete(first.resource, owner);\n }\n }\n }\n // add new markers\n if (isNonEmptyArray(data)) {\n // group by resource\n const groups = new ResourceMap();\n for (const { resource, marker: markerData } of data) {\n const marker = MarkerService._toMarker(owner, resource, markerData);\n if (!marker) {\n // filter bad markers\n continue;\n }\n const array = groups.get(resource);\n if (!array) {\n groups.set(resource, [marker]);\n changes.push(resource);\n }\n else {\n array.push(marker);\n }\n }\n // insert all\n for (const [resource, value] of groups) {\n this._data.set(resource, owner, value);\n }\n }\n if (changes.length > 0) {\n this._onMarkerChanged.fire(changes);\n }\n }\n read(filter = Object.create(null)) {\n let { owner, resource, severities, take } = filter;\n if (!take || take < 0) {\n take = -1;\n }\n if (owner && resource) {\n // exactly one owner AND resource\n const data = this._data.get(resource, owner);\n if (!data) {\n return [];\n }\n else {\n const result = [];\n for (const marker of data) {\n if (MarkerService._accept(marker, severities)) {\n const newLen = result.push(marker);\n if (take > 0 && newLen === take) {\n break;\n }\n }\n }\n return result;\n }\n }\n else if (!owner && !resource) {\n // all\n const result = [];\n for (const markers of this._data.values()) {\n for (const data of markers) {\n if (MarkerService._accept(data, severities)) {\n const newLen = result.push(data);\n if (take > 0 && newLen === take) {\n return result;\n }\n }\n }\n }\n return result;\n }\n else {\n // of one resource OR owner\n const iterable = this._data.values(resource !== null && resource !== void 0 ? resource : owner);\n const result = [];\n for (const markers of iterable) {\n for (const data of markers) {\n if (MarkerService._accept(data, severities)) {\n const newLen = result.push(data);\n if (take > 0 && newLen === take) {\n return result;\n }\n }\n }\n }\n return result;\n }\n }\n static _accept(marker, severities) {\n return severities === undefined || (severities & marker.severity) === marker.severity;\n }\n // --- event debounce logic\n static _merge(all) {\n const set = new ResourceMap();\n for (const array of all) {\n for (const item of array) {\n set.set(item, true);\n }\n }\n return Array.from(set.keys());\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { match as matchGlobPattern } from '../../base/common/glob.js';\nimport { normalize } from '../../base/common/path.js';\nexport function score(selector, candidateUri, candidateLanguage, candidateIsSynchronized, candidateNotebookUri, candidateNotebookType) {\n if (Array.isArray(selector)) {\n // array -> take max individual value\n let ret = 0;\n for (const filter of selector) {\n const value = score(filter, candidateUri, candidateLanguage, candidateIsSynchronized, candidateNotebookUri, candidateNotebookType);\n if (value === 10) {\n return value; // already at the highest\n }\n if (value > ret) {\n ret = value;\n }\n }\n return ret;\n }\n else if (typeof selector === 'string') {\n if (!candidateIsSynchronized) {\n return 0;\n }\n // short-hand notion, desugars to\n // 'fooLang' -> { language: 'fooLang'}\n // '*' -> { language: '*' }\n if (selector === '*') {\n return 5;\n }\n else if (selector === candidateLanguage) {\n return 10;\n }\n else {\n return 0;\n }\n }\n else if (selector) {\n // filter -> select accordingly, use defaults for scheme\n const { language, pattern, scheme, hasAccessToAllModels, notebookType } = selector; // TODO: microsoft/TypeScript#42768\n if (!candidateIsSynchronized && !hasAccessToAllModels) {\n return 0;\n }\n // selector targets a notebook -> use the notebook uri instead\n // of the \"normal\" document uri.\n if (notebookType && candidateNotebookUri) {\n candidateUri = candidateNotebookUri;\n }\n let ret = 0;\n if (scheme) {\n if (scheme === candidateUri.scheme) {\n ret = 10;\n }\n else if (scheme === '*') {\n ret = 5;\n }\n else {\n return 0;\n }\n }\n if (language) {\n if (language === candidateLanguage) {\n ret = 10;\n }\n else if (language === '*') {\n ret = Math.max(ret, 5);\n }\n else {\n return 0;\n }\n }\n if (notebookType) {\n if (notebookType === candidateNotebookType) {\n ret = 10;\n }\n else if (notebookType === '*' && candidateNotebookType !== undefined) {\n ret = Math.max(ret, 5);\n }\n else {\n return 0;\n }\n }\n if (pattern) {\n let normalizedPattern;\n if (typeof pattern === 'string') {\n normalizedPattern = pattern;\n }\n else {\n // Since this pattern has a `base` property, we need\n // to normalize this path first before passing it on\n // because we will compare it against `Uri.fsPath`\n // which uses platform specific separators.\n // Refs: https://github.com/microsoft/vscode/issues/99938\n normalizedPattern = Object.assign(Object.assign({}, pattern), { base: normalize(pattern.base) });\n }\n if (normalizedPattern === candidateUri.fsPath || matchGlobPattern(normalizedPattern, candidateUri.fsPath)) {\n ret = 10;\n }\n else {\n return 0;\n }\n }\n return ret;\n }\n else {\n return 0;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../base/common/event.js';\nimport { toDisposable } from '../../base/common/lifecycle.js';\nimport { shouldSynchronizeModel } from './model.js';\nimport { score } from './languageSelector.js';\nfunction isExclusive(selector) {\n if (typeof selector === 'string') {\n return false;\n }\n else if (Array.isArray(selector)) {\n return selector.every(isExclusive);\n }\n else {\n return !!selector.exclusive; // TODO: microsoft/TypeScript#42768\n }\n}\nclass MatchCandidate {\n constructor(uri, languageId, notebookUri, notebookType) {\n this.uri = uri;\n this.languageId = languageId;\n this.notebookUri = notebookUri;\n this.notebookType = notebookType;\n }\n equals(other) {\n var _a, _b;\n return this.notebookType === other.notebookType\n && this.languageId === other.languageId\n && this.uri.toString() === other.uri.toString()\n && ((_a = this.notebookUri) === null || _a === void 0 ? void 0 : _a.toString()) === ((_b = other.notebookUri) === null || _b === void 0 ? void 0 : _b.toString());\n }\n}\nexport class LanguageFeatureRegistry {\n constructor(_notebookInfoResolver) {\n this._notebookInfoResolver = _notebookInfoResolver;\n this._clock = 0;\n this._entries = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n }\n register(selector, provider) {\n let entry = {\n selector,\n provider,\n _score: -1,\n _time: this._clock++\n };\n this._entries.push(entry);\n this._lastCandidate = undefined;\n this._onDidChange.fire(this._entries.length);\n return toDisposable(() => {\n if (entry) {\n const idx = this._entries.indexOf(entry);\n if (idx >= 0) {\n this._entries.splice(idx, 1);\n this._lastCandidate = undefined;\n this._onDidChange.fire(this._entries.length);\n entry = undefined;\n }\n }\n });\n }\n has(model) {\n return this.all(model).length > 0;\n }\n all(model) {\n if (!model) {\n return [];\n }\n this._updateScores(model);\n const result = [];\n // from registry\n for (const entry of this._entries) {\n if (entry._score > 0) {\n result.push(entry.provider);\n }\n }\n return result;\n }\n ordered(model) {\n const result = [];\n this._orderedForEach(model, entry => result.push(entry.provider));\n return result;\n }\n orderedGroups(model) {\n const result = [];\n let lastBucket;\n let lastBucketScore;\n this._orderedForEach(model, entry => {\n if (lastBucket && lastBucketScore === entry._score) {\n lastBucket.push(entry.provider);\n }\n else {\n lastBucketScore = entry._score;\n lastBucket = [entry.provider];\n result.push(lastBucket);\n }\n });\n return result;\n }\n _orderedForEach(model, callback) {\n this._updateScores(model);\n for (const entry of this._entries) {\n if (entry._score > 0) {\n callback(entry);\n }\n }\n }\n _updateScores(model) {\n var _a, _b;\n const notebookInfo = (_a = this._notebookInfoResolver) === null || _a === void 0 ? void 0 : _a.call(this, model.uri);\n // use the uri (scheme, pattern) of the notebook info iff we have one\n // otherwise it's the model's/document's uri\n const candidate = notebookInfo\n ? new MatchCandidate(model.uri, model.getLanguageId(), notebookInfo.uri, notebookInfo.type)\n : new MatchCandidate(model.uri, model.getLanguageId(), undefined, undefined);\n if ((_b = this._lastCandidate) === null || _b === void 0 ? void 0 : _b.equals(candidate)) {\n // nothing has changed\n return;\n }\n this._lastCandidate = candidate;\n for (const entry of this._entries) {\n entry._score = score(entry.selector, candidate.uri, candidate.languageId, shouldSynchronizeModel(model), candidate.notebookUri, candidate.notebookType);\n if (isExclusive(entry.selector) && entry._score > 0) {\n // support for one exclusive selector that overwrites\n // any other selector\n for (const entry of this._entries) {\n entry._score = 0;\n }\n entry._score = 1000;\n break;\n }\n }\n // needs sorting\n this._entries.sort(LanguageFeatureRegistry._compareByScoreAndTime);\n }\n static _compareByScoreAndTime(a, b) {\n if (a._score < b._score) {\n return 1;\n }\n else if (a._score > b._score) {\n return -1;\n }\n else if (a._time < b._time) {\n return 1;\n }\n else if (a._time > b._time) {\n return -1;\n }\n else {\n return 0;\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { LanguageFeatureRegistry } from '../languageFeatureRegistry.js';\nimport { ILanguageFeaturesService } from './languageFeatures.js';\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\nexport class LanguageFeaturesService {\n constructor() {\n this.referenceProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.renameProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.codeActionProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.definitionProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.typeDefinitionProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.declarationProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.implementationProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentSymbolProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.inlayHintsProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.colorProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.codeLensProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentFormattingEditProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentRangeFormattingEditProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.onTypeFormattingEditProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.signatureHelpProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.hoverProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentHighlightProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.selectionRangeProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.foldingRangeProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.linkProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.inlineCompletionsProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.completionProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.linkedEditingRangeProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentRangeSemanticTokensProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentSemanticTokensProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentOnDropEditProvider = new LanguageFeatureRegistry(this._score.bind(this));\n this.documentPasteEditProvider = new LanguageFeatureRegistry(this._score.bind(this));\n }\n _score(uri) {\n var _a;\n return (_a = this._notebookTypeResolver) === null || _a === void 0 ? void 0 : _a.call(this, uri);\n }\n}\nregisterSingleton(ILanguageFeaturesService, LanguageFeaturesService, true);\n","import { addToValueTree, toValuesTree } from './configuration.js';\nimport { ConfigurationModel } from './configurationModels.js';\nimport { Extensions, overrideIdentifiersFromKey, OVERRIDE_PROPERTY_REGEX } from './configurationRegistry.js';\nimport { Registry } from '../../registry/common/platform.js';\nexport class DefaultConfigurationModel extends ConfigurationModel {\n constructor(configurationDefaultsOverrides = {}) {\n const properties = Registry.as(Extensions.Configuration).getConfigurationProperties();\n const keys = Object.keys(properties);\n const contents = Object.create(null);\n const overrides = [];\n for (const key in properties) {\n const defaultOverrideValue = configurationDefaultsOverrides[key];\n const value = defaultOverrideValue !== undefined ? defaultOverrideValue : properties[key].default;\n addToValueTree(contents, key, value, message => console.error(`Conflict in default settings: ${message}`));\n }\n for (const key of Object.keys(contents)) {\n if (OVERRIDE_PROPERTY_REGEX.test(key)) {\n overrides.push({\n identifiers: overrideIdentifiersFromKey(key),\n keys: Object.keys(contents[key]),\n contents: toValuesTree(contents[key], message => console.error(`Conflict in default settings file: ${message}`)),\n });\n }\n }\n super(contents, keys, overrides);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport '../../common/languages/languageConfigurationRegistry.js';\nimport './standaloneCodeEditorService.js';\nimport './standaloneLayoutService.js';\nimport '../../../platform/undoRedo/common/undoRedoService.js';\nimport '../../common/services/languageFeatureDebounce.js';\nimport * as strings from '../../../base/common/strings.js';\nimport * as dom from '../../../base/browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { SimpleKeybinding, createKeybinding } from '../../../base/common/keybindings.js';\nimport { ImmortalReference, toDisposable, DisposableStore, Disposable, combinedDisposable } from '../../../base/common/lifecycle.js';\nimport { OS, isLinux, isMacintosh } from '../../../base/common/platform.js';\nimport Severity from '../../../base/common/severity.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { IBulkEditService, ResourceTextEdit } from '../../browser/services/bulkEditService.js';\nimport { isDiffEditorConfigurationKey, isEditorConfigurationKey } from '../../common/config/editorConfigurationSchema.js';\nimport { EditOperation } from '../../common/core/editOperation.js';\nimport { Position as Pos } from '../../common/core/position.js';\nimport { Range } from '../../common/core/range.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { ITextModelService } from '../../common/services/resolverService.js';\nimport { ITextResourceConfigurationService, ITextResourcePropertiesService } from '../../common/services/textResourceConfiguration.js';\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\nimport { Configuration, ConfigurationModel, ConfigurationChangeEvent } from '../../../platform/configuration/common/configurationModels.js';\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\nimport { IDialogService } from '../../../platform/dialogs/common/dialogs.js';\nimport { createDecorator, IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\nimport { AbstractKeybindingService } from '../../../platform/keybinding/common/abstractKeybindingService.js';\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\nimport { KeybindingResolver } from '../../../platform/keybinding/common/keybindingResolver.js';\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ResolvedKeybindingItem } from '../../../platform/keybinding/common/resolvedKeybindingItem.js';\nimport { USLayoutResolvedKeybinding } from '../../../platform/keybinding/common/usLayoutResolvedKeybinding.js';\nimport { ILabelService } from '../../../platform/label/common/label.js';\nimport { INotificationService, NoOpNotification } from '../../../platform/notification/common/notification.js';\nimport { IEditorProgressService, IProgressService } from '../../../platform/progress/common/progress.js';\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\nimport { IWorkspaceContextService, WorkspaceFolder } from '../../../platform/workspace/common/workspace.js';\nimport { ILayoutService } from '../../../platform/layout/browser/layoutService.js';\nimport { StandaloneServicesNLS } from '../../common/standaloneStrings.js';\nimport { basename } from '../../../base/common/resources.js';\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\nimport { ConsoleLogger, ILogService, LogService } from '../../../platform/log/common/log.js';\nimport { IWorkspaceTrustManagementService } from '../../../platform/workspace/common/workspaceTrust.js';\nimport { IContextMenuService, IContextViewService } from '../../../platform/contextview/browser/contextView.js';\nimport { ContextViewService } from '../../../platform/contextview/browser/contextViewService.js';\nimport { LanguageService } from '../../common/services/languageService.js';\nimport { ContextMenuService } from '../../../platform/contextview/browser/contextMenuService.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\nimport { getSingletonServiceDescriptors, registerSingleton } from '../../../platform/instantiation/common/extensions.js';\nimport { OpenerService } from '../../browser/services/openerService.js';\nimport { IEditorWorkerService } from '../../common/services/editorWorker.js';\nimport { EditorWorkerService } from '../../browser/services/editorWorkerService.js';\nimport { ILanguageService } from '../../common/languages/language.js';\nimport { MarkerDecorationsService } from '../../common/services/markerDecorationsService.js';\nimport { IMarkerDecorationsService } from '../../common/services/markerDecorations.js';\nimport { ModelService } from '../../common/services/modelService.js';\nimport { StandaloneQuickInputService } from './quickInput/standaloneQuickInputService.js';\nimport { StandaloneThemeService } from './standaloneThemeService.js';\nimport { IStandaloneThemeService } from '../common/standaloneTheme.js';\nimport { AccessibilityService } from '../../../platform/accessibility/browser/accessibilityService.js';\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\nimport { IMenuService } from '../../../platform/actions/common/actions.js';\nimport { MenuService } from '../../../platform/actions/common/menuService.js';\nimport { BrowserClipboardService } from '../../../platform/clipboard/browser/clipboardService.js';\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\nimport { ContextKeyService } from '../../../platform/contextkey/browser/contextKeyService.js';\nimport { SyncDescriptor } from '../../../platform/instantiation/common/descriptors.js';\nimport { InstantiationService } from '../../../platform/instantiation/common/instantiationService.js';\nimport { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection.js';\nimport { IListService, ListService } from '../../../platform/list/browser/listService.js';\nimport { IMarkerService } from '../../../platform/markers/common/markers.js';\nimport { MarkerService } from '../../../platform/markers/common/markerService.js';\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\nimport { IQuickInputService } from '../../../platform/quickinput/common/quickInput.js';\nimport { IStorageService, InMemoryStorageService } from '../../../platform/storage/common/storage.js';\nimport '../../common/services/languageFeaturesService.js';\nimport { DefaultConfigurationModel } from '../../../platform/configuration/common/configurations.js';\nclass SimpleModel {\n constructor(model) {\n this.disposed = false;\n this.model = model;\n this._onWillDispose = new Emitter();\n }\n get textEditorModel() {\n return this.model;\n }\n dispose() {\n this.disposed = true;\n this._onWillDispose.fire();\n }\n}\nlet StandaloneTextModelService = class StandaloneTextModelService {\n constructor(modelService) {\n this.modelService = modelService;\n }\n createModelReference(resource) {\n const model = this.modelService.getModel(resource);\n if (!model) {\n return Promise.reject(new Error(`Model not found`));\n }\n return Promise.resolve(new ImmortalReference(new SimpleModel(model)));\n }\n};\nStandaloneTextModelService = __decorate([\n __param(0, IModelService)\n], StandaloneTextModelService);\nclass StandaloneEditorProgressService {\n show() {\n return StandaloneEditorProgressService.NULL_PROGRESS_RUNNER;\n }\n showWhile(promise, delay) {\n return __awaiter(this, void 0, void 0, function* () {\n yield promise;\n });\n }\n}\nStandaloneEditorProgressService.NULL_PROGRESS_RUNNER = {\n done: () => { },\n total: () => { },\n worked: () => { }\n};\nclass StandaloneProgressService {\n withProgress(_options, task, onDidCancel) {\n return task({\n report: () => { },\n });\n }\n}\nclass StandaloneDialogService {\n confirm(confirmation) {\n return this.doConfirm(confirmation).then(confirmed => {\n return {\n confirmed,\n checkboxChecked: false // unsupported\n };\n });\n }\n doConfirm(confirmation) {\n let messageText = confirmation.message;\n if (confirmation.detail) {\n messageText = messageText + '\\n\\n' + confirmation.detail;\n }\n return Promise.resolve(window.confirm(messageText));\n }\n show(severity, message, buttons, options) {\n return Promise.resolve({ choice: 0 });\n }\n}\nexport class StandaloneNotificationService {\n info(message) {\n return this.notify({ severity: Severity.Info, message });\n }\n warn(message) {\n return this.notify({ severity: Severity.Warning, message });\n }\n error(error) {\n return this.notify({ severity: Severity.Error, message: error });\n }\n notify(notification) {\n switch (notification.severity) {\n case Severity.Error:\n console.error(notification.message);\n break;\n case Severity.Warning:\n console.warn(notification.message);\n break;\n default:\n console.log(notification.message);\n break;\n }\n return StandaloneNotificationService.NO_OP;\n }\n status(message, options) {\n return Disposable.None;\n }\n}\nStandaloneNotificationService.NO_OP = new NoOpNotification();\nlet StandaloneCommandService = class StandaloneCommandService {\n constructor(instantiationService) {\n this._onWillExecuteCommand = new Emitter();\n this._onDidExecuteCommand = new Emitter();\n this.onWillExecuteCommand = this._onWillExecuteCommand.event;\n this.onDidExecuteCommand = this._onDidExecuteCommand.event;\n this._instantiationService = instantiationService;\n }\n executeCommand(id, ...args) {\n const command = CommandsRegistry.getCommand(id);\n if (!command) {\n return Promise.reject(new Error(`command '${id}' not found`));\n }\n try {\n this._onWillExecuteCommand.fire({ commandId: id, args });\n const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]);\n this._onDidExecuteCommand.fire({ commandId: id, args });\n return Promise.resolve(result);\n }\n catch (err) {\n return Promise.reject(err);\n }\n }\n};\nStandaloneCommandService = __decorate([\n __param(0, IInstantiationService)\n], StandaloneCommandService);\nexport { StandaloneCommandService };\nlet StandaloneKeybindingService = class StandaloneKeybindingService extends AbstractKeybindingService {\n constructor(contextKeyService, commandService, telemetryService, notificationService, logService, codeEditorService) {\n super(contextKeyService, commandService, telemetryService, notificationService, logService);\n this._cachedResolver = null;\n this._dynamicKeybindings = [];\n this._domNodeListeners = [];\n const addContainer = (domNode) => {\n const disposables = new DisposableStore();\n // for standard keybindings\n disposables.add(dom.addDisposableListener(domNode, dom.EventType.KEY_DOWN, (e) => {\n const keyEvent = new StandardKeyboardEvent(e);\n const shouldPreventDefault = this._dispatch(keyEvent, keyEvent.target);\n if (shouldPreventDefault) {\n keyEvent.preventDefault();\n keyEvent.stopPropagation();\n }\n }));\n // for single modifier chord keybindings (e.g. shift shift)\n disposables.add(dom.addDisposableListener(domNode, dom.EventType.KEY_UP, (e) => {\n const keyEvent = new StandardKeyboardEvent(e);\n const shouldPreventDefault = this._singleModifierDispatch(keyEvent, keyEvent.target);\n if (shouldPreventDefault) {\n keyEvent.preventDefault();\n }\n }));\n this._domNodeListeners.push(new DomNodeListeners(domNode, disposables));\n };\n const removeContainer = (domNode) => {\n for (let i = 0; i < this._domNodeListeners.length; i++) {\n const domNodeListeners = this._domNodeListeners[i];\n if (domNodeListeners.domNode === domNode) {\n this._domNodeListeners.splice(i, 1);\n domNodeListeners.dispose();\n }\n }\n };\n const addCodeEditor = (codeEditor) => {\n if (codeEditor.getOption(56 /* EditorOption.inDiffEditor */)) {\n return;\n }\n addContainer(codeEditor.getContainerDomNode());\n };\n const removeCodeEditor = (codeEditor) => {\n if (codeEditor.getOption(56 /* EditorOption.inDiffEditor */)) {\n return;\n }\n removeContainer(codeEditor.getContainerDomNode());\n };\n this._register(codeEditorService.onCodeEditorAdd(addCodeEditor));\n this._register(codeEditorService.onCodeEditorRemove(removeCodeEditor));\n codeEditorService.listCodeEditors().forEach(addCodeEditor);\n const addDiffEditor = (diffEditor) => {\n addContainer(diffEditor.getContainerDomNode());\n };\n const removeDiffEditor = (diffEditor) => {\n removeContainer(diffEditor.getContainerDomNode());\n };\n this._register(codeEditorService.onDiffEditorAdd(addDiffEditor));\n this._register(codeEditorService.onDiffEditorRemove(removeDiffEditor));\n codeEditorService.listDiffEditors().forEach(addDiffEditor);\n }\n addDynamicKeybinding(command, keybinding, handler, when) {\n return combinedDisposable(CommandsRegistry.registerCommand(command, handler), this.addDynamicKeybindings([{\n keybinding,\n command,\n when\n }]));\n }\n addDynamicKeybindings(rules) {\n const entries = rules.map((rule) => {\n var _a, _b;\n const keybinding = createKeybinding(rule.keybinding, OS);\n return {\n keybinding: (_a = keybinding === null || keybinding === void 0 ? void 0 : keybinding.parts) !== null && _a !== void 0 ? _a : null,\n command: (_b = rule.command) !== null && _b !== void 0 ? _b : null,\n commandArgs: rule.commandArgs,\n when: rule.when,\n weight1: 1000,\n weight2: 0,\n extensionId: null,\n isBuiltinExtension: false\n };\n });\n this._dynamicKeybindings = this._dynamicKeybindings.concat(entries);\n this.updateResolver();\n return toDisposable(() => {\n // Search the first entry and remove them all since they will be contiguous\n for (let i = 0; i < this._dynamicKeybindings.length; i++) {\n if (this._dynamicKeybindings[i] === entries[0]) {\n this._dynamicKeybindings.splice(i, entries.length);\n this.updateResolver();\n return;\n }\n }\n });\n }\n updateResolver() {\n this._cachedResolver = null;\n this._onDidUpdateKeybindings.fire();\n }\n _getResolver() {\n if (!this._cachedResolver) {\n const defaults = this._toNormalizedKeybindingItems(KeybindingsRegistry.getDefaultKeybindings(), true);\n const overrides = this._toNormalizedKeybindingItems(this._dynamicKeybindings, false);\n this._cachedResolver = new KeybindingResolver(defaults, overrides, (str) => this._log(str));\n }\n return this._cachedResolver;\n }\n _documentHasFocus() {\n return document.hasFocus();\n }\n _toNormalizedKeybindingItems(items, isDefault) {\n const result = [];\n let resultLen = 0;\n for (const item of items) {\n const when = item.when || undefined;\n const keybinding = item.keybinding;\n if (!keybinding) {\n // This might be a removal keybinding item in user settings => accept it\n result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null, false);\n }\n else {\n const resolvedKeybindings = USLayoutResolvedKeybinding.resolveUserBinding(keybinding, OS);\n for (const resolvedKeybinding of resolvedKeybindings) {\n result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null, false);\n }\n }\n }\n return result;\n }\n resolveKeyboardEvent(keyboardEvent) {\n const keybinding = new SimpleKeybinding(keyboardEvent.ctrlKey, keyboardEvent.shiftKey, keyboardEvent.altKey, keyboardEvent.metaKey, keyboardEvent.keyCode).toChord();\n return new USLayoutResolvedKeybinding(keybinding, OS);\n }\n};\nStandaloneKeybindingService = __decorate([\n __param(0, IContextKeyService),\n __param(1, ICommandService),\n __param(2, ITelemetryService),\n __param(3, INotificationService),\n __param(4, ILogService),\n __param(5, ICodeEditorService)\n], StandaloneKeybindingService);\nexport { StandaloneKeybindingService };\nclass DomNodeListeners extends Disposable {\n constructor(domNode, disposables) {\n super();\n this.domNode = domNode;\n this._register(disposables);\n }\n}\nfunction isConfigurationOverrides(thing) {\n return thing\n && typeof thing === 'object'\n && (!thing.overrideIdentifier || typeof thing.overrideIdentifier === 'string')\n && (!thing.resource || thing.resource instanceof URI);\n}\nexport class StandaloneConfigurationService {\n constructor() {\n this._onDidChangeConfiguration = new Emitter();\n this.onDidChangeConfiguration = this._onDidChangeConfiguration.event;\n this._configuration = new Configuration(new DefaultConfigurationModel(), new ConfigurationModel(), new ConfigurationModel(), new ConfigurationModel());\n }\n getValue(arg1, arg2) {\n const section = typeof arg1 === 'string' ? arg1 : undefined;\n const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : {};\n return this._configuration.getValue(section, overrides, undefined);\n }\n updateValues(values) {\n const previous = { data: this._configuration.toData() };\n const changedKeys = [];\n for (const entry of values) {\n const [key, value] = entry;\n if (this.getValue(key) === value) {\n continue;\n }\n this._configuration.updateValue(key, value);\n changedKeys.push(key);\n }\n if (changedKeys.length > 0) {\n const configurationChangeEvent = new ConfigurationChangeEvent({ keys: changedKeys, overrides: [] }, previous, this._configuration);\n configurationChangeEvent.source = 8 /* ConfigurationTarget.MEMORY */;\n configurationChangeEvent.sourceConfig = null;\n this._onDidChangeConfiguration.fire(configurationChangeEvent);\n }\n return Promise.resolve();\n }\n updateValue(key, value, arg3, arg4) {\n return this.updateValues([[key, value]]);\n }\n inspect(key, options = {}) {\n return this._configuration.inspect(key, options, undefined);\n }\n}\nlet StandaloneResourceConfigurationService = class StandaloneResourceConfigurationService {\n constructor(configurationService) {\n this.configurationService = configurationService;\n this._onDidChangeConfiguration = new Emitter();\n this.configurationService.onDidChangeConfiguration((e) => {\n this._onDidChangeConfiguration.fire({ affectedKeys: e.affectedKeys, affectsConfiguration: (resource, configuration) => e.affectsConfiguration(configuration) });\n });\n }\n getValue(resource, arg2, arg3) {\n const position = Pos.isIPosition(arg2) ? arg2 : null;\n const section = position ? (typeof arg3 === 'string' ? arg3 : undefined) : (typeof arg2 === 'string' ? arg2 : undefined);\n if (typeof section === 'undefined') {\n return this.configurationService.getValue();\n }\n return this.configurationService.getValue(section);\n }\n};\nStandaloneResourceConfigurationService = __decorate([\n __param(0, IConfigurationService)\n], StandaloneResourceConfigurationService);\nlet StandaloneResourcePropertiesService = class StandaloneResourcePropertiesService {\n constructor(configurationService) {\n this.configurationService = configurationService;\n }\n getEOL(resource, language) {\n const eol = this.configurationService.getValue('files.eol', { overrideIdentifier: language, resource });\n if (eol && typeof eol === 'string' && eol !== 'auto') {\n return eol;\n }\n return (isLinux || isMacintosh) ? '\\n' : '\\r\\n';\n }\n};\nStandaloneResourcePropertiesService = __decorate([\n __param(0, IConfigurationService)\n], StandaloneResourcePropertiesService);\nclass StandaloneTelemetryService {\n publicLog(eventName, data) {\n return Promise.resolve(undefined);\n }\n publicLog2(eventName, data) {\n return this.publicLog(eventName, data);\n }\n}\nclass StandaloneWorkspaceContextService {\n constructor() {\n const resource = URI.from({ scheme: StandaloneWorkspaceContextService.SCHEME, authority: 'model', path: '/' });\n this.workspace = { id: '4064f6ec-cb38-4ad0-af64-ee6467e63c82', folders: [new WorkspaceFolder({ uri: resource, name: '', index: 0 })] };\n }\n getWorkspace() {\n return this.workspace;\n }\n getWorkspaceFolder(resource) {\n return resource && resource.scheme === StandaloneWorkspaceContextService.SCHEME ? this.workspace.folders[0] : null;\n }\n}\nStandaloneWorkspaceContextService.SCHEME = 'inmemory';\nexport function updateConfigurationService(configurationService, source, isDiffEditor) {\n if (!source) {\n return;\n }\n if (!(configurationService instanceof StandaloneConfigurationService)) {\n return;\n }\n const toUpdate = [];\n Object.keys(source).forEach((key) => {\n if (isEditorConfigurationKey(key)) {\n toUpdate.push([`editor.${key}`, source[key]]);\n }\n if (isDiffEditor && isDiffEditorConfigurationKey(key)) {\n toUpdate.push([`diffEditor.${key}`, source[key]]);\n }\n });\n if (toUpdate.length > 0) {\n configurationService.updateValues(toUpdate);\n }\n}\nlet StandaloneBulkEditService = class StandaloneBulkEditService {\n constructor(_modelService) {\n this._modelService = _modelService;\n //\n }\n hasPreviewHandler() {\n return false;\n }\n apply(edits, _options) {\n return __awaiter(this, void 0, void 0, function* () {\n const textEdits = new Map();\n for (const edit of edits) {\n if (!(edit instanceof ResourceTextEdit)) {\n throw new Error('bad edit - only text edits are supported');\n }\n const model = this._modelService.getModel(edit.resource);\n if (!model) {\n throw new Error('bad edit - model not found');\n }\n if (typeof edit.versionId === 'number' && model.getVersionId() !== edit.versionId) {\n throw new Error('bad state - model changed in the meantime');\n }\n let array = textEdits.get(model);\n if (!array) {\n array = [];\n textEdits.set(model, array);\n }\n array.push(EditOperation.replaceMove(Range.lift(edit.textEdit.range), edit.textEdit.text));\n }\n let totalEdits = 0;\n let totalFiles = 0;\n for (const [model, edits] of textEdits) {\n model.pushStackElement();\n model.pushEditOperations([], edits, () => []);\n model.pushStackElement();\n totalFiles += 1;\n totalEdits += edits.length;\n }\n return {\n ariaSummary: strings.format(StandaloneServicesNLS.bulkEditServiceSummary, totalEdits, totalFiles)\n };\n });\n }\n};\nStandaloneBulkEditService = __decorate([\n __param(0, IModelService)\n], StandaloneBulkEditService);\nclass StandaloneUriLabelService {\n getUriLabel(resource, options) {\n if (resource.scheme === 'file') {\n return resource.fsPath;\n }\n return resource.path;\n }\n getUriBasenameLabel(resource) {\n return basename(resource);\n }\n}\nlet StandaloneContextViewService = class StandaloneContextViewService extends ContextViewService {\n constructor(layoutService, _codeEditorService) {\n super(layoutService);\n this._codeEditorService = _codeEditorService;\n }\n showContextView(delegate, container, shadowRoot) {\n if (!container) {\n const codeEditor = this._codeEditorService.getFocusedCodeEditor() || this._codeEditorService.getActiveCodeEditor();\n if (codeEditor) {\n container = codeEditor.getContainerDomNode();\n }\n }\n return super.showContextView(delegate, container, shadowRoot);\n }\n};\nStandaloneContextViewService = __decorate([\n __param(0, ILayoutService),\n __param(1, ICodeEditorService)\n], StandaloneContextViewService);\nclass StandaloneWorkspaceTrustManagementService {\n constructor() {\n this._neverEmitter = new Emitter();\n this.onDidChangeTrust = this._neverEmitter.event;\n }\n isWorkspaceTrusted() {\n return true;\n }\n}\nclass StandaloneLanguageService extends LanguageService {\n constructor() {\n super();\n }\n}\nclass StandaloneLogService extends LogService {\n constructor() {\n super(new ConsoleLogger());\n }\n}\nlet StandaloneContextMenuService = class StandaloneContextMenuService extends ContextMenuService {\n constructor(telemetryService, notificationService, contextViewService, keybindingService, themeService) {\n super(telemetryService, notificationService, contextViewService, keybindingService, themeService);\n this.configure({ blockMouse: false }); // we do not want that in the standalone editor\n }\n};\nStandaloneContextMenuService = __decorate([\n __param(0, ITelemetryService),\n __param(1, INotificationService),\n __param(2, IContextViewService),\n __param(3, IKeybindingService),\n __param(4, IThemeService)\n], StandaloneContextMenuService);\nregisterSingleton(IConfigurationService, StandaloneConfigurationService);\nregisterSingleton(ITextResourceConfigurationService, StandaloneResourceConfigurationService);\nregisterSingleton(ITextResourcePropertiesService, StandaloneResourcePropertiesService);\nregisterSingleton(IWorkspaceContextService, StandaloneWorkspaceContextService);\nregisterSingleton(ILabelService, StandaloneUriLabelService);\nregisterSingleton(ITelemetryService, StandaloneTelemetryService);\nregisterSingleton(IDialogService, StandaloneDialogService);\nregisterSingleton(INotificationService, StandaloneNotificationService);\nregisterSingleton(IMarkerService, MarkerService);\nregisterSingleton(ILanguageService, StandaloneLanguageService);\nregisterSingleton(IStandaloneThemeService, StandaloneThemeService);\nregisterSingleton(ILogService, StandaloneLogService);\nregisterSingleton(IModelService, ModelService);\nregisterSingleton(IMarkerDecorationsService, MarkerDecorationsService);\nregisterSingleton(IContextKeyService, ContextKeyService);\nregisterSingleton(IProgressService, StandaloneProgressService);\nregisterSingleton(IEditorProgressService, StandaloneEditorProgressService);\nregisterSingleton(IStorageService, InMemoryStorageService);\nregisterSingleton(IEditorWorkerService, EditorWorkerService);\nregisterSingleton(IBulkEditService, StandaloneBulkEditService);\nregisterSingleton(IWorkspaceTrustManagementService, StandaloneWorkspaceTrustManagementService);\nregisterSingleton(ITextModelService, StandaloneTextModelService);\nregisterSingleton(IAccessibilityService, AccessibilityService);\nregisterSingleton(IListService, ListService);\nregisterSingleton(ICommandService, StandaloneCommandService);\nregisterSingleton(IKeybindingService, StandaloneKeybindingService);\nregisterSingleton(IQuickInputService, StandaloneQuickInputService);\nregisterSingleton(IContextViewService, StandaloneContextViewService);\nregisterSingleton(IOpenerService, OpenerService);\nregisterSingleton(IClipboardService, BrowserClipboardService);\nregisterSingleton(IContextMenuService, StandaloneContextMenuService);\nregisterSingleton(IMenuService, MenuService);\n/**\n * We don't want to eagerly instantiate services because embedders get a one time chance\n * to override services when they create the first editor.\n */\nexport var StandaloneServices;\n(function (StandaloneServices) {\n const serviceCollection = new ServiceCollection();\n for (const [id, descriptor] of getSingletonServiceDescriptors()) {\n serviceCollection.set(id, descriptor);\n }\n const instantiationService = new InstantiationService(serviceCollection, true);\n serviceCollection.set(IInstantiationService, instantiationService);\n function get(serviceId) {\n const r = serviceCollection.get(serviceId);\n if (!r) {\n throw new Error('Missing service ' + serviceId);\n }\n if (r instanceof SyncDescriptor) {\n return instantiationService.invokeFunction((accessor) => accessor.get(serviceId));\n }\n else {\n return r;\n }\n }\n StandaloneServices.get = get;\n let initialized = false;\n function initialize(overrides) {\n if (initialized) {\n return instantiationService;\n }\n initialized = true;\n // Add singletons that were registered after this module loaded\n for (const [id, descriptor] of getSingletonServiceDescriptors()) {\n if (!serviceCollection.get(id)) {\n serviceCollection.set(id, descriptor);\n }\n }\n // Initialize the service collection with the overrides, but only if the\n // service was not instantiated in the meantime.\n for (const serviceId in overrides) {\n if (overrides.hasOwnProperty(serviceId)) {\n const serviceIdentifier = createDecorator(serviceId);\n const r = serviceCollection.get(serviceIdentifier);\n if (r instanceof SyncDescriptor) {\n serviceCollection.set(serviceIdentifier, overrides[serviceId]);\n }\n }\n }\n return instantiationService;\n }\n StandaloneServices.initialize = initialize;\n})(StandaloneServices || (StandaloneServices = {}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport * as aria from '../../../base/browser/ui/aria/aria.js';\nimport { Disposable, toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\nimport { CodeEditorWidget } from '../../browser/widget/codeEditorWidget.js';\nimport { DiffEditorWidget } from '../../browser/widget/diffEditorWidget.js';\nimport { InternalEditorAction } from '../../common/editorAction.js';\nimport { IEditorWorkerService } from '../../common/services/editorWorker.js';\nimport { StandaloneKeybindingService, updateConfigurationService } from './standaloneServices.js';\nimport { IStandaloneThemeService } from '../common/standaloneTheme.js';\nimport { MenuId, MenuRegistry } from '../../../platform/actions/common/actions.js';\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\nimport { IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\nimport { StandaloneCodeEditorNLS } from '../../common/standaloneStrings.js';\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { ILanguageService } from '../../common/languages/language.js';\nimport { StandaloneCodeEditorService } from './standaloneCodeEditorService.js';\nimport { PLAINTEXT_LANGUAGE_ID } from '../../common/languages/modesRegistry.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';\nlet LAST_GENERATED_COMMAND_ID = 0;\nlet ariaDomNodeCreated = false;\n/**\n * Create ARIA dom node inside parent,\n * or only for the first editor instantiation inside document.body.\n * @param parent container element for ARIA dom node\n */\nfunction createAriaDomNode(parent) {\n if (!parent) {\n if (ariaDomNodeCreated) {\n return;\n }\n ariaDomNodeCreated = true;\n }\n aria.setARIAContainer(parent || document.body);\n}\n/**\n * A code editor to be used both by the standalone editor and the standalone diff editor.\n */\nlet StandaloneCodeEditor = class StandaloneCodeEditor extends CodeEditorWidget {\n constructor(domElement, _options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService, accessibilityService, languageConfigurationService, languageFeaturesService) {\n const options = Object.assign({}, _options);\n options.ariaLabel = options.ariaLabel || StandaloneCodeEditorNLS.editorViewAccessibleLabel;\n options.ariaLabel = options.ariaLabel + ';' + (StandaloneCodeEditorNLS.accessibilityHelpMessage);\n super(domElement, options, {}, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService, languageConfigurationService, languageFeaturesService);\n if (keybindingService instanceof StandaloneKeybindingService) {\n this._standaloneKeybindingService = keybindingService;\n }\n else {\n this._standaloneKeybindingService = null;\n }\n createAriaDomNode(options.ariaContainerElement);\n }\n addCommand(keybinding, handler, context) {\n if (!this._standaloneKeybindingService) {\n console.warn('Cannot add command because the editor is configured with an unrecognized KeybindingService');\n return null;\n }\n const commandId = 'DYNAMIC_' + (++LAST_GENERATED_COMMAND_ID);\n const whenExpression = ContextKeyExpr.deserialize(context);\n this._standaloneKeybindingService.addDynamicKeybinding(commandId, keybinding, handler, whenExpression);\n return commandId;\n }\n createContextKey(key, defaultValue) {\n return this._contextKeyService.createKey(key, defaultValue);\n }\n addAction(_descriptor) {\n if ((typeof _descriptor.id !== 'string') || (typeof _descriptor.label !== 'string') || (typeof _descriptor.run !== 'function')) {\n throw new Error('Invalid action descriptor, `id`, `label` and `run` are required properties!');\n }\n if (!this._standaloneKeybindingService) {\n console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');\n return Disposable.None;\n }\n // Read descriptor options\n const id = _descriptor.id;\n const label = _descriptor.label;\n const precondition = ContextKeyExpr.and(ContextKeyExpr.equals('editorId', this.getId()), ContextKeyExpr.deserialize(_descriptor.precondition));\n const keybindings = _descriptor.keybindings;\n const keybindingsWhen = ContextKeyExpr.and(precondition, ContextKeyExpr.deserialize(_descriptor.keybindingContext));\n const contextMenuGroupId = _descriptor.contextMenuGroupId || null;\n const contextMenuOrder = _descriptor.contextMenuOrder || 0;\n const run = (accessor, ...args) => {\n return Promise.resolve(_descriptor.run(this, ...args));\n };\n const toDispose = new DisposableStore();\n // Generate a unique id to allow the same descriptor.id across multiple editor instances\n const uniqueId = this.getId() + ':' + id;\n // Register the command\n toDispose.add(CommandsRegistry.registerCommand(uniqueId, run));\n // Register the context menu item\n if (contextMenuGroupId) {\n const menuItem = {\n command: {\n id: uniqueId,\n title: label\n },\n when: precondition,\n group: contextMenuGroupId,\n order: contextMenuOrder\n };\n toDispose.add(MenuRegistry.appendMenuItem(MenuId.EditorContext, menuItem));\n }\n // Register the keybindings\n if (Array.isArray(keybindings)) {\n for (const kb of keybindings) {\n toDispose.add(this._standaloneKeybindingService.addDynamicKeybinding(uniqueId, kb, run, keybindingsWhen));\n }\n }\n // Finally, register an internal editor action\n const internalAction = new InternalEditorAction(uniqueId, label, label, precondition, run, this._contextKeyService);\n // Store it under the original id, such that trigger with the original id will work\n this._actions[id] = internalAction;\n toDispose.add(toDisposable(() => {\n delete this._actions[id];\n }));\n return toDispose;\n }\n _triggerCommand(handlerId, payload) {\n if (this._codeEditorService instanceof StandaloneCodeEditorService) {\n // Help commands find this editor as the active editor\n try {\n this._codeEditorService.setActiveCodeEditor(this);\n super._triggerCommand(handlerId, payload);\n }\n finally {\n this._codeEditorService.setActiveCodeEditor(null);\n }\n }\n else {\n super._triggerCommand(handlerId, payload);\n }\n }\n};\nStandaloneCodeEditor = __decorate([\n __param(2, IInstantiationService),\n __param(3, ICodeEditorService),\n __param(4, ICommandService),\n __param(5, IContextKeyService),\n __param(6, IKeybindingService),\n __param(7, IThemeService),\n __param(8, INotificationService),\n __param(9, IAccessibilityService),\n __param(10, ILanguageConfigurationService),\n __param(11, ILanguageFeaturesService)\n], StandaloneCodeEditor);\nexport { StandaloneCodeEditor };\nlet StandaloneEditor = class StandaloneEditor extends StandaloneCodeEditor {\n constructor(domElement, _options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService, configurationService, accessibilityService, modelService, languageService, languageConfigurationService, languageFeaturesService) {\n const options = Object.assign({}, _options);\n updateConfigurationService(configurationService, options, false);\n const themeDomRegistration = themeService.registerEditorContainer(domElement);\n if (typeof options.theme === 'string') {\n themeService.setTheme(options.theme);\n }\n if (typeof options.autoDetectHighContrast !== 'undefined') {\n themeService.setAutoDetectHighContrast(Boolean(options.autoDetectHighContrast));\n }\n const _model = options.model;\n delete options.model;\n super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService, accessibilityService, languageConfigurationService, languageFeaturesService);\n this._configurationService = configurationService;\n this._standaloneThemeService = themeService;\n this._register(themeDomRegistration);\n let model;\n if (typeof _model === 'undefined') {\n const languageId = languageService.getLanguageIdByMimeType(options.language) || options.language || PLAINTEXT_LANGUAGE_ID;\n model = createTextModel(modelService, languageService, options.value || '', languageId, undefined);\n this._ownsModel = true;\n }\n else {\n model = _model;\n this._ownsModel = false;\n }\n this._attachModel(model);\n if (model) {\n const e = {\n oldModelUrl: null,\n newModelUrl: model.uri\n };\n this._onDidChangeModel.fire(e);\n }\n }\n dispose() {\n super.dispose();\n }\n updateOptions(newOptions) {\n updateConfigurationService(this._configurationService, newOptions, false);\n if (typeof newOptions.theme === 'string') {\n this._standaloneThemeService.setTheme(newOptions.theme);\n }\n if (typeof newOptions.autoDetectHighContrast !== 'undefined') {\n this._standaloneThemeService.setAutoDetectHighContrast(Boolean(newOptions.autoDetectHighContrast));\n }\n super.updateOptions(newOptions);\n }\n _postDetachModelCleanup(detachedModel) {\n super._postDetachModelCleanup(detachedModel);\n if (detachedModel && this._ownsModel) {\n detachedModel.dispose();\n this._ownsModel = false;\n }\n }\n};\nStandaloneEditor = __decorate([\n __param(2, IInstantiationService),\n __param(3, ICodeEditorService),\n __param(4, ICommandService),\n __param(5, IContextKeyService),\n __param(6, IKeybindingService),\n __param(7, IStandaloneThemeService),\n __param(8, INotificationService),\n __param(9, IConfigurationService),\n __param(10, IAccessibilityService),\n __param(11, IModelService),\n __param(12, ILanguageService),\n __param(13, ILanguageConfigurationService),\n __param(14, ILanguageFeaturesService)\n], StandaloneEditor);\nexport { StandaloneEditor };\nlet StandaloneDiffEditor = class StandaloneDiffEditor extends DiffEditorWidget {\n constructor(domElement, _options, instantiationService, contextKeyService, editorWorkerService, codeEditorService, themeService, notificationService, configurationService, contextMenuService, editorProgressService, clipboardService) {\n const options = Object.assign({}, _options);\n updateConfigurationService(configurationService, options, true);\n const themeDomRegistration = themeService.registerEditorContainer(domElement);\n if (typeof options.theme === 'string') {\n themeService.setTheme(options.theme);\n }\n if (typeof options.autoDetectHighContrast !== 'undefined') {\n themeService.setAutoDetectHighContrast(Boolean(options.autoDetectHighContrast));\n }\n super(domElement, options, {}, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, editorProgressService);\n this._configurationService = configurationService;\n this._standaloneThemeService = themeService;\n this._register(themeDomRegistration);\n }\n dispose() {\n super.dispose();\n }\n updateOptions(newOptions) {\n updateConfigurationService(this._configurationService, newOptions, true);\n if (typeof newOptions.theme === 'string') {\n this._standaloneThemeService.setTheme(newOptions.theme);\n }\n if (typeof newOptions.autoDetectHighContrast !== 'undefined') {\n this._standaloneThemeService.setAutoDetectHighContrast(Boolean(newOptions.autoDetectHighContrast));\n }\n super.updateOptions(newOptions);\n }\n _createInnerEditor(instantiationService, container, options) {\n return instantiationService.createInstance(StandaloneCodeEditor, container, options);\n }\n getOriginalEditor() {\n return super.getOriginalEditor();\n }\n getModifiedEditor() {\n return super.getModifiedEditor();\n }\n addCommand(keybinding, handler, context) {\n return this.getModifiedEditor().addCommand(keybinding, handler, context);\n }\n createContextKey(key, defaultValue) {\n return this.getModifiedEditor().createContextKey(key, defaultValue);\n }\n addAction(descriptor) {\n return this.getModifiedEditor().addAction(descriptor);\n }\n};\nStandaloneDiffEditor = __decorate([\n __param(2, IInstantiationService),\n __param(3, IContextKeyService),\n __param(4, IEditorWorkerService),\n __param(5, ICodeEditorService),\n __param(6, IStandaloneThemeService),\n __param(7, INotificationService),\n __param(8, IConfigurationService),\n __param(9, IContextMenuService),\n __param(10, IEditorProgressService),\n __param(11, IClipboardService)\n], StandaloneDiffEditor);\nexport { StandaloneDiffEditor };\n/**\n * @internal\n */\nexport function createTextModel(modelService, languageService, value, languageId, uri) {\n value = value || '';\n if (!languageId) {\n const firstLF = value.indexOf('\\n');\n let firstLine = value;\n if (firstLF !== -1) {\n firstLine = value.substring(0, firstLF);\n }\n return doCreateModel(modelService, value, languageService.createByFilepathOrFirstLine(uri || null, firstLine), uri);\n }\n return doCreateModel(modelService, value, languageService.createById(languageId), uri);\n}\n/**\n * @internal\n */\nfunction doCreateModel(modelService, value, languageSelection, uri) {\n return modelService.createModel(value, languageSelection, uri);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport './standalone-tokens.css';\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\nimport { splitLines } from '../../../base/common/strings.js';\nimport { FontMeasurements } from '../../browser/config/fontMeasurements.js';\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\nimport { DiffNavigator } from '../../browser/widget/diffNavigator.js';\nimport { ApplyUpdateResult, ConfigurationChangedEvent, EditorOptions } from '../../common/config/editorOptions.js';\nimport { BareFontInfo, FontInfo } from '../../common/config/fontInfo.js';\nimport { EditorType } from '../../common/editorCommon.js';\nimport { FindMatch, TextModelResolvedOptions } from '../../common/model.js';\nimport * as languages from '../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { NullState, nullTokenize } from '../../common/languages/nullTokenize.js';\nimport { ILanguageService } from '../../common/languages/language.js';\nimport { IModelService } from '../../common/services/model.js';\nimport { createWebWorker as actualCreateWebWorker } from '../../browser/services/webWorker.js';\nimport * as standaloneEnums from '../../common/standalone/standaloneEnums.js';\nimport { Colorizer } from './colorizer.js';\nimport { createTextModel, StandaloneDiffEditor, StandaloneEditor } from './standaloneCodeEditor.js';\nimport { StandaloneKeybindingService, StandaloneServices } from './standaloneServices.js';\nimport { IStandaloneThemeService } from '../common/standaloneTheme.js';\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\nimport { IMarkerService } from '../../../platform/markers/common/markers.js';\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\nimport { EditorCommand } from '../../browser/editorExtensions.js';\nimport { MenuRegistry, MenuId } from '../../../platform/actions/common/actions.js';\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\n/**\n * Create a new editor under `domElement`.\n * `domElement` should be empty (not contain other dom nodes).\n * The editor will read the size of `domElement`.\n */\nexport function create(domElement, options, override) {\n const instantiationService = StandaloneServices.initialize(override || {});\n return instantiationService.createInstance(StandaloneEditor, domElement, options);\n}\n/**\n * Emitted when an editor is created.\n * Creating a diff editor might cause this listener to be invoked with the two editors.\n * @event\n */\nexport function onDidCreateEditor(listener) {\n const codeEditorService = StandaloneServices.get(ICodeEditorService);\n return codeEditorService.onCodeEditorAdd((editor) => {\n listener(editor);\n });\n}\n/**\n * Emitted when an diff editor is created.\n * @event\n */\nexport function onDidCreateDiffEditor(listener) {\n const codeEditorService = StandaloneServices.get(ICodeEditorService);\n return codeEditorService.onDiffEditorAdd((editor) => {\n listener(editor);\n });\n}\n/**\n * Get all the created editors.\n */\nexport function getEditors() {\n const codeEditorService = StandaloneServices.get(ICodeEditorService);\n return codeEditorService.listCodeEditors();\n}\n/**\n * Get all the created diff editors.\n */\nexport function getDiffEditors() {\n const codeEditorService = StandaloneServices.get(ICodeEditorService);\n return codeEditorService.listDiffEditors();\n}\n/**\n * Create a new diff editor under `domElement`.\n * `domElement` should be empty (not contain other dom nodes).\n * The editor will read the size of `domElement`.\n */\nexport function createDiffEditor(domElement, options, override) {\n const instantiationService = StandaloneServices.initialize(override || {});\n return instantiationService.createInstance(StandaloneDiffEditor, domElement, options);\n}\nexport function createDiffNavigator(diffEditor, opts) {\n return new DiffNavigator(diffEditor, opts);\n}\n/**\n * Add a command.\n */\nexport function addCommand(descriptor) {\n if ((typeof descriptor.id !== 'string') || (typeof descriptor.run !== 'function')) {\n throw new Error('Invalid command descriptor, `id` and `run` are required properties!');\n }\n return CommandsRegistry.registerCommand(descriptor.id, descriptor.run);\n}\n/**\n * Add an action to all editors.\n */\nexport function addEditorAction(descriptor) {\n if ((typeof descriptor.id !== 'string') || (typeof descriptor.label !== 'string') || (typeof descriptor.run !== 'function')) {\n throw new Error('Invalid action descriptor, `id`, `label` and `run` are required properties!');\n }\n const precondition = ContextKeyExpr.deserialize(descriptor.precondition);\n const run = (accessor, ...args) => {\n return EditorCommand.runEditorCommand(accessor, args, precondition, (accessor, editor, args) => Promise.resolve(descriptor.run(editor, ...args)));\n };\n const toDispose = new DisposableStore();\n // Register the command\n toDispose.add(CommandsRegistry.registerCommand(descriptor.id, run));\n // Register the context menu item\n if (descriptor.contextMenuGroupId) {\n const menuItem = {\n command: {\n id: descriptor.id,\n title: descriptor.label\n },\n when: precondition,\n group: descriptor.contextMenuGroupId,\n order: descriptor.contextMenuOrder || 0\n };\n toDispose.add(MenuRegistry.appendMenuItem(MenuId.EditorContext, menuItem));\n }\n // Register the keybindings\n if (Array.isArray(descriptor.keybindings)) {\n const keybindingService = StandaloneServices.get(IKeybindingService);\n if (!(keybindingService instanceof StandaloneKeybindingService)) {\n console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');\n }\n else {\n const keybindingsWhen = ContextKeyExpr.and(precondition, ContextKeyExpr.deserialize(descriptor.keybindingContext));\n toDispose.add(keybindingService.addDynamicKeybindings(descriptor.keybindings.map((keybinding) => {\n return {\n keybinding,\n command: descriptor.id,\n when: keybindingsWhen\n };\n })));\n }\n }\n return toDispose;\n}\n/**\n * Add a keybinding rule.\n */\nexport function addKeybindingRule(rule) {\n return addKeybindingRules([rule]);\n}\n/**\n * Add keybinding rules.\n */\nexport function addKeybindingRules(rules) {\n const keybindingService = StandaloneServices.get(IKeybindingService);\n if (!(keybindingService instanceof StandaloneKeybindingService)) {\n console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');\n return Disposable.None;\n }\n return keybindingService.addDynamicKeybindings(rules.map((rule) => {\n return {\n keybinding: rule.keybinding,\n command: rule.command,\n commandArgs: rule.commandArgs,\n when: ContextKeyExpr.deserialize(rule.when),\n };\n }));\n}\n/**\n * Create a new editor model.\n * You can specify the language that should be set for this model or let the language be inferred from the `uri`.\n */\nexport function createModel(value, language, uri) {\n const languageService = StandaloneServices.get(ILanguageService);\n const languageId = languageService.getLanguageIdByMimeType(language) || language;\n return createTextModel(StandaloneServices.get(IModelService), languageService, value, languageId, uri);\n}\n/**\n * Change the language for a model.\n */\nexport function setModelLanguage(model, languageId) {\n const languageService = StandaloneServices.get(ILanguageService);\n const modelService = StandaloneServices.get(IModelService);\n modelService.setMode(model, languageService.createById(languageId));\n}\n/**\n * Set the markers for a model.\n */\nexport function setModelMarkers(model, owner, markers) {\n if (model) {\n const markerService = StandaloneServices.get(IMarkerService);\n markerService.changeOne(owner, model.uri, markers);\n }\n}\n/**\n * Remove all markers of an owner.\n */\nexport function removeAllMarkers(owner) {\n const markerService = StandaloneServices.get(IMarkerService);\n markerService.changeAll(owner, []);\n}\n/**\n * Get markers for owner and/or resource\n *\n * @returns list of markers\n */\nexport function getModelMarkers(filter) {\n const markerService = StandaloneServices.get(IMarkerService);\n return markerService.read(filter);\n}\n/**\n * Emitted when markers change for a model.\n * @event\n */\nexport function onDidChangeMarkers(listener) {\n const markerService = StandaloneServices.get(IMarkerService);\n return markerService.onMarkerChanged(listener);\n}\n/**\n * Get the model that has `uri` if it exists.\n */\nexport function getModel(uri) {\n const modelService = StandaloneServices.get(IModelService);\n return modelService.getModel(uri);\n}\n/**\n * Get all the created models.\n */\nexport function getModels() {\n const modelService = StandaloneServices.get(IModelService);\n return modelService.getModels();\n}\n/**\n * Emitted when a model is created.\n * @event\n */\nexport function onDidCreateModel(listener) {\n const modelService = StandaloneServices.get(IModelService);\n return modelService.onModelAdded(listener);\n}\n/**\n * Emitted right before a model is disposed.\n * @event\n */\nexport function onWillDisposeModel(listener) {\n const modelService = StandaloneServices.get(IModelService);\n return modelService.onModelRemoved(listener);\n}\n/**\n * Emitted when a different language is set to a model.\n * @event\n */\nexport function onDidChangeModelLanguage(listener) {\n const modelService = StandaloneServices.get(IModelService);\n return modelService.onModelLanguageChanged((e) => {\n listener({\n model: e.model,\n oldLanguage: e.oldLanguageId\n });\n });\n}\n/**\n * Create a new web worker that has model syncing capabilities built in.\n * Specify an AMD module to load that will `create` an object that will be proxied.\n */\nexport function createWebWorker(opts) {\n return actualCreateWebWorker(StandaloneServices.get(IModelService), StandaloneServices.get(ILanguageConfigurationService), opts);\n}\n/**\n * Colorize the contents of `domNode` using attribute `data-lang`.\n */\nexport function colorizeElement(domNode, options) {\n const languageService = StandaloneServices.get(ILanguageService);\n const themeService = StandaloneServices.get(IStandaloneThemeService);\n themeService.registerEditorContainer(domNode);\n return Colorizer.colorizeElement(themeService, languageService, domNode, options);\n}\n/**\n * Colorize `text` using language `languageId`.\n */\nexport function colorize(text, languageId, options) {\n const languageService = StandaloneServices.get(ILanguageService);\n const themeService = StandaloneServices.get(IStandaloneThemeService);\n themeService.registerEditorContainer(document.body);\n return Colorizer.colorize(languageService, text, languageId, options);\n}\n/**\n * Colorize a line in a model.\n */\nexport function colorizeModelLine(model, lineNumber, tabSize = 4) {\n const themeService = StandaloneServices.get(IStandaloneThemeService);\n themeService.registerEditorContainer(document.body);\n return Colorizer.colorizeModelLine(model, lineNumber, tabSize);\n}\n/**\n * @internal\n */\nfunction getSafeTokenizationSupport(language) {\n const tokenizationSupport = languages.TokenizationRegistry.get(language);\n if (tokenizationSupport) {\n return tokenizationSupport;\n }\n return {\n getInitialState: () => NullState,\n tokenize: (line, hasEOL, state) => nullTokenize(language, state)\n };\n}\n/**\n * Tokenize `text` using language `languageId`\n */\nexport function tokenize(text, languageId) {\n // Needed in order to get the mode registered for subsequent look-ups\n languages.TokenizationRegistry.getOrCreate(languageId);\n const tokenizationSupport = getSafeTokenizationSupport(languageId);\n const lines = splitLines(text);\n const result = [];\n let state = tokenizationSupport.getInitialState();\n for (let i = 0, len = lines.length; i < len; i++) {\n const line = lines[i];\n const tokenizationResult = tokenizationSupport.tokenize(line, true, state);\n result[i] = tokenizationResult.tokens;\n state = tokenizationResult.endState;\n }\n return result;\n}\n/**\n * Define a new theme or update an existing theme.\n */\nexport function defineTheme(themeName, themeData) {\n const standaloneThemeService = StandaloneServices.get(IStandaloneThemeService);\n standaloneThemeService.defineTheme(themeName, themeData);\n}\n/**\n * Switches to a theme.\n */\nexport function setTheme(themeName) {\n const standaloneThemeService = StandaloneServices.get(IStandaloneThemeService);\n standaloneThemeService.setTheme(themeName);\n}\n/**\n * Clears all cached font measurements and triggers re-measurement.\n */\nexport function remeasureFonts() {\n FontMeasurements.clearAllFontInfos();\n}\n/**\n * Register a command.\n */\nexport function registerCommand(id, handler) {\n return CommandsRegistry.registerCommand({ id, handler });\n}\n/**\n * @internal\n */\nexport function createMonacoEditorAPI() {\n return {\n // methods\n create: create,\n getEditors: getEditors,\n getDiffEditors: getDiffEditors,\n onDidCreateEditor: onDidCreateEditor,\n onDidCreateDiffEditor: onDidCreateDiffEditor,\n createDiffEditor: createDiffEditor,\n createDiffNavigator: createDiffNavigator,\n addCommand: addCommand,\n addEditorAction: addEditorAction,\n addKeybindingRule: addKeybindingRule,\n addKeybindingRules: addKeybindingRules,\n createModel: createModel,\n setModelLanguage: setModelLanguage,\n setModelMarkers: setModelMarkers,\n getModelMarkers: getModelMarkers,\n removeAllMarkers: removeAllMarkers,\n onDidChangeMarkers: onDidChangeMarkers,\n getModels: getModels,\n getModel: getModel,\n onDidCreateModel: onDidCreateModel,\n onWillDisposeModel: onWillDisposeModel,\n onDidChangeModelLanguage: onDidChangeModelLanguage,\n createWebWorker: createWebWorker,\n colorizeElement: colorizeElement,\n colorize: colorize,\n colorizeModelLine: colorizeModelLine,\n tokenize: tokenize,\n defineTheme: defineTheme,\n setTheme: setTheme,\n remeasureFonts: remeasureFonts,\n registerCommand: registerCommand,\n // enums\n AccessibilitySupport: standaloneEnums.AccessibilitySupport,\n ContentWidgetPositionPreference: standaloneEnums.ContentWidgetPositionPreference,\n CursorChangeReason: standaloneEnums.CursorChangeReason,\n DefaultEndOfLine: standaloneEnums.DefaultEndOfLine,\n EditorAutoIndentStrategy: standaloneEnums.EditorAutoIndentStrategy,\n EditorOption: standaloneEnums.EditorOption,\n EndOfLinePreference: standaloneEnums.EndOfLinePreference,\n EndOfLineSequence: standaloneEnums.EndOfLineSequence,\n MinimapPosition: standaloneEnums.MinimapPosition,\n MouseTargetType: standaloneEnums.MouseTargetType,\n OverlayWidgetPositionPreference: standaloneEnums.OverlayWidgetPositionPreference,\n OverviewRulerLane: standaloneEnums.OverviewRulerLane,\n RenderLineNumbersType: standaloneEnums.RenderLineNumbersType,\n RenderMinimap: standaloneEnums.RenderMinimap,\n ScrollbarVisibility: standaloneEnums.ScrollbarVisibility,\n ScrollType: standaloneEnums.ScrollType,\n TextEditorCursorBlinkingStyle: standaloneEnums.TextEditorCursorBlinkingStyle,\n TextEditorCursorStyle: standaloneEnums.TextEditorCursorStyle,\n TrackedRangeStickiness: standaloneEnums.TrackedRangeStickiness,\n WrappingIndent: standaloneEnums.WrappingIndent,\n InjectedTextCursorStops: standaloneEnums.InjectedTextCursorStops,\n PositionAffinity: standaloneEnums.PositionAffinity,\n // classes\n ConfigurationChangedEvent: ConfigurationChangedEvent,\n BareFontInfo: BareFontInfo,\n FontInfo: FontInfo,\n TextModelResolvedOptions: TextModelResolvedOptions,\n FindMatch: FindMatch,\n ApplyUpdateResult: ApplyUpdateResult,\n // vars\n EditorType: EditorType,\n EditorOptions: EditorOptions\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/*\n * This module only exports 'compile' which compiles a JSON language definition\n * into a typed and checked ILexer definition.\n */\nimport * as monarchCommon from './monarchCommon.js';\n/*\n * Type helpers\n *\n * Note: this is just for sanity checks on the JSON description which is\n * helpful for the programmer. No checks are done anymore once the lexer is\n * already 'compiled and checked'.\n *\n */\nfunction isArrayOf(elemType, obj) {\n if (!obj) {\n return false;\n }\n if (!(Array.isArray(obj))) {\n return false;\n }\n for (const el of obj) {\n if (!(elemType(el))) {\n return false;\n }\n }\n return true;\n}\nfunction bool(prop, defValue) {\n if (typeof prop === 'boolean') {\n return prop;\n }\n return defValue;\n}\nfunction string(prop, defValue) {\n if (typeof (prop) === 'string') {\n return prop;\n }\n return defValue;\n}\nfunction arrayToHash(array) {\n const result = {};\n for (const e of array) {\n result[e] = true;\n }\n return result;\n}\nfunction createKeywordMatcher(arr, caseInsensitive = false) {\n if (caseInsensitive) {\n arr = arr.map(function (x) { return x.toLowerCase(); });\n }\n const hash = arrayToHash(arr);\n if (caseInsensitive) {\n return function (word) {\n return hash[word.toLowerCase()] !== undefined && hash.hasOwnProperty(word.toLowerCase());\n };\n }\n else {\n return function (word) {\n return hash[word] !== undefined && hash.hasOwnProperty(word);\n };\n }\n}\n// Lexer helpers\n/**\n * Compiles a regular expression string, adding the 'i' flag if 'ignoreCase' is set, and the 'u' flag if 'unicode' is set.\n * Also replaces @\\w+ or sequences with the content of the specified attribute\n * @\\w+ replacement can be avoided by escaping `@` signs with another `@` sign.\n * @example /@attr/ will be replaced with the value of lexer[attr]\n * @example /@@text/ will not be replaced and will become /@text/.\n */\nfunction compileRegExp(lexer, str) {\n // @@ must be interpreted as a literal @, so we replace all occurences of @@ with a placeholder character\n str = str.replace(/@@/g, `\\x01`);\n let n = 0;\n let hadExpansion;\n do {\n hadExpansion = false;\n str = str.replace(/@(\\w+)/g, function (s, attr) {\n hadExpansion = true;\n let sub = '';\n if (typeof (lexer[attr]) === 'string') {\n sub = lexer[attr];\n }\n else if (lexer[attr] && lexer[attr] instanceof RegExp) {\n sub = lexer[attr].source;\n }\n else {\n if (lexer[attr] === undefined) {\n throw monarchCommon.createError(lexer, 'language definition does not contain attribute \\'' + attr + '\\', used at: ' + str);\n }\n else {\n throw monarchCommon.createError(lexer, 'attribute reference \\'' + attr + '\\' must be a string, used at: ' + str);\n }\n }\n return (monarchCommon.empty(sub) ? '' : '(?:' + sub + ')');\n });\n n++;\n } while (hadExpansion && n < 5);\n // handle escaped @@\n str = str.replace(/\\x01/g, '@');\n const flags = (lexer.ignoreCase ? 'i' : '') + (lexer.unicode ? 'u' : '');\n return new RegExp(str, flags);\n}\n/**\n * Compiles guard functions for case matches.\n * This compiles 'cases' attributes into efficient match functions.\n *\n */\nfunction selectScrutinee(id, matches, state, num) {\n if (num < 0) {\n return id;\n }\n if (num < matches.length) {\n return matches[num];\n }\n if (num >= 100) {\n num = num - 100;\n const parts = state.split('.');\n parts.unshift(state);\n if (num < parts.length) {\n return parts[num];\n }\n }\n return null;\n}\nfunction createGuard(lexer, ruleName, tkey, val) {\n // get the scrutinee and pattern\n let scrut = -1; // -1: $!, 0-99: $n, 100+n: $Sn\n let oppat = tkey;\n let matches = tkey.match(/^\\$(([sS]?)(\\d\\d?)|#)(.*)$/);\n if (matches) {\n if (matches[3]) { // if digits\n scrut = parseInt(matches[3]);\n if (matches[2]) {\n scrut = scrut + 100; // if [sS] present\n }\n }\n oppat = matches[4];\n }\n // get operator\n let op = '~';\n let pat = oppat;\n if (!oppat || oppat.length === 0) {\n op = '!=';\n pat = '';\n }\n else if (/^\\w*$/.test(pat)) { // just a word\n op = '==';\n }\n else {\n matches = oppat.match(/^(@|!@|~|!~|==|!=)(.*)$/);\n if (matches) {\n op = matches[1];\n pat = matches[2];\n }\n }\n // set the tester function\n let tester;\n // special case a regexp that matches just words\n if ((op === '~' || op === '!~') && /^(\\w|\\|)*$/.test(pat)) {\n const inWords = createKeywordMatcher(pat.split('|'), lexer.ignoreCase);\n tester = function (s) { return (op === '~' ? inWords(s) : !inWords(s)); };\n }\n else if (op === '@' || op === '!@') {\n const words = lexer[pat];\n if (!words) {\n throw monarchCommon.createError(lexer, 'the @ match target \\'' + pat + '\\' is not defined, in rule: ' + ruleName);\n }\n if (!(isArrayOf(function (elem) { return (typeof (elem) === 'string'); }, words))) {\n throw monarchCommon.createError(lexer, 'the @ match target \\'' + pat + '\\' must be an array of strings, in rule: ' + ruleName);\n }\n const inWords = createKeywordMatcher(words, lexer.ignoreCase);\n tester = function (s) { return (op === '@' ? inWords(s) : !inWords(s)); };\n }\n else if (op === '~' || op === '!~') {\n if (pat.indexOf('$') < 0) {\n // precompile regular expression\n const re = compileRegExp(lexer, '^' + pat + '$');\n tester = function (s) { return (op === '~' ? re.test(s) : !re.test(s)); };\n }\n else {\n tester = function (s, id, matches, state) {\n const re = compileRegExp(lexer, '^' + monarchCommon.substituteMatches(lexer, pat, id, matches, state) + '$');\n return re.test(s);\n };\n }\n }\n else { // if (op==='==' || op==='!=') {\n if (pat.indexOf('$') < 0) {\n const patx = monarchCommon.fixCase(lexer, pat);\n tester = function (s) { return (op === '==' ? s === patx : s !== patx); };\n }\n else {\n const patx = monarchCommon.fixCase(lexer, pat);\n tester = function (s, id, matches, state, eos) {\n const patexp = monarchCommon.substituteMatches(lexer, patx, id, matches, state);\n return (op === '==' ? s === patexp : s !== patexp);\n };\n }\n }\n // return the branch object\n if (scrut === -1) {\n return {\n name: tkey, value: val, test: function (id, matches, state, eos) {\n return tester(id, id, matches, state, eos);\n }\n };\n }\n else {\n return {\n name: tkey, value: val, test: function (id, matches, state, eos) {\n const scrutinee = selectScrutinee(id, matches, state, scrut);\n return tester(!scrutinee ? '' : scrutinee, id, matches, state, eos);\n }\n };\n }\n}\n/**\n * Compiles an action: i.e. optimize regular expressions and case matches\n * and do many sanity checks.\n *\n * This is called only during compilation but if the lexer definition\n * contains user functions as actions (which is usually not allowed), then this\n * may be called during lexing. It is important therefore to compile common cases efficiently\n */\nfunction compileAction(lexer, ruleName, action) {\n if (!action) {\n return { token: '' };\n }\n else if (typeof (action) === 'string') {\n return action; // { token: action };\n }\n else if (action.token || action.token === '') {\n if (typeof (action.token) !== 'string') {\n throw monarchCommon.createError(lexer, 'a \\'token\\' attribute must be of type string, in rule: ' + ruleName);\n }\n else {\n // only copy specific typed fields (only happens once during compile Lexer)\n const newAction = { token: action.token };\n if (action.token.indexOf('$') >= 0) {\n newAction.tokenSubst = true;\n }\n if (typeof (action.bracket) === 'string') {\n if (action.bracket === '@open') {\n newAction.bracket = 1 /* monarchCommon.MonarchBracket.Open */;\n }\n else if (action.bracket === '@close') {\n newAction.bracket = -1 /* monarchCommon.MonarchBracket.Close */;\n }\n else {\n throw monarchCommon.createError(lexer, 'a \\'bracket\\' attribute must be either \\'@open\\' or \\'@close\\', in rule: ' + ruleName);\n }\n }\n if (action.next) {\n if (typeof (action.next) !== 'string') {\n throw monarchCommon.createError(lexer, 'the next state must be a string value in rule: ' + ruleName);\n }\n else {\n let next = action.next;\n if (!/^(@pop|@push|@popall)$/.test(next)) {\n if (next[0] === '@') {\n next = next.substr(1); // peel off starting @ sign\n }\n if (next.indexOf('$') < 0) { // no dollar substitution, we can check if the state exists\n if (!monarchCommon.stateExists(lexer, monarchCommon.substituteMatches(lexer, next, '', [], ''))) {\n throw monarchCommon.createError(lexer, 'the next state \\'' + action.next + '\\' is not defined in rule: ' + ruleName);\n }\n }\n }\n newAction.next = next;\n }\n }\n if (typeof (action.goBack) === 'number') {\n newAction.goBack = action.goBack;\n }\n if (typeof (action.switchTo) === 'string') {\n newAction.switchTo = action.switchTo;\n }\n if (typeof (action.log) === 'string') {\n newAction.log = action.log;\n }\n if (typeof (action.nextEmbedded) === 'string') {\n newAction.nextEmbedded = action.nextEmbedded;\n lexer.usesEmbedded = true;\n }\n return newAction;\n }\n }\n else if (Array.isArray(action)) {\n const results = [];\n for (let i = 0, len = action.length; i < len; i++) {\n results[i] = compileAction(lexer, ruleName, action[i]);\n }\n return { group: results };\n }\n else if (action.cases) {\n // build an array of test cases\n const cases = [];\n // for each case, push a test function and result value\n for (const tkey in action.cases) {\n if (action.cases.hasOwnProperty(tkey)) {\n const val = compileAction(lexer, ruleName, action.cases[tkey]);\n // what kind of case\n if (tkey === '@default' || tkey === '@' || tkey === '') {\n cases.push({ test: undefined, value: val, name: tkey });\n }\n else if (tkey === '@eos') {\n cases.push({ test: function (id, matches, state, eos) { return eos; }, value: val, name: tkey });\n }\n else {\n cases.push(createGuard(lexer, ruleName, tkey, val)); // call separate function to avoid local variable capture\n }\n }\n }\n // create a matching function\n const def = lexer.defaultToken;\n return {\n test: function (id, matches, state, eos) {\n for (const _case of cases) {\n const didmatch = (!_case.test || _case.test(id, matches, state, eos));\n if (didmatch) {\n return _case.value;\n }\n }\n return def;\n }\n };\n }\n else {\n throw monarchCommon.createError(lexer, 'an action must be a string, an object with a \\'token\\' or \\'cases\\' attribute, or an array of actions; in rule: ' + ruleName);\n }\n}\n/**\n * Helper class for creating matching rules\n */\nclass Rule {\n constructor(name) {\n this.regex = new RegExp('');\n this.action = { token: '' };\n this.matchOnlyAtLineStart = false;\n this.name = '';\n this.name = name;\n }\n setRegex(lexer, re) {\n let sregex;\n if (typeof (re) === 'string') {\n sregex = re;\n }\n else if (re instanceof RegExp) {\n sregex = re.source;\n }\n else {\n throw monarchCommon.createError(lexer, 'rules must start with a match string or regular expression: ' + this.name);\n }\n this.matchOnlyAtLineStart = (sregex.length > 0 && sregex[0] === '^');\n this.name = this.name + ': ' + sregex;\n this.regex = compileRegExp(lexer, '^(?:' + (this.matchOnlyAtLineStart ? sregex.substr(1) : sregex) + ')');\n }\n setAction(lexer, act) {\n this.action = compileAction(lexer, this.name, act);\n }\n}\n/**\n * Compiles a json description function into json where all regular expressions,\n * case matches etc, are compiled and all include rules are expanded.\n * We also compile the bracket definitions, supply defaults, and do many sanity checks.\n * If the 'jsonStrict' parameter is 'false', we allow at certain locations\n * regular expression objects and functions that get called during lexing.\n * (Currently we have no samples that need this so perhaps we should always have\n * jsonStrict to true).\n */\nexport function compile(languageId, json) {\n if (!json || typeof (json) !== 'object') {\n throw new Error('Monarch: expecting a language definition object');\n }\n // Create our lexer\n const lexer = {};\n lexer.languageId = languageId;\n lexer.includeLF = bool(json.includeLF, false);\n lexer.noThrow = false; // raise exceptions during compilation\n lexer.maxStack = 100;\n // Set standard fields: be defensive about types\n lexer.start = (typeof json.start === 'string' ? json.start : null);\n lexer.ignoreCase = bool(json.ignoreCase, false);\n lexer.unicode = bool(json.unicode, false);\n lexer.tokenPostfix = string(json.tokenPostfix, '.' + lexer.languageId);\n lexer.defaultToken = string(json.defaultToken, 'source');\n lexer.usesEmbedded = false; // becomes true if we find a nextEmbedded action\n // For calling compileAction later on\n const lexerMin = json;\n lexerMin.languageId = languageId;\n lexerMin.includeLF = lexer.includeLF;\n lexerMin.ignoreCase = lexer.ignoreCase;\n lexerMin.unicode = lexer.unicode;\n lexerMin.noThrow = lexer.noThrow;\n lexerMin.usesEmbedded = lexer.usesEmbedded;\n lexerMin.stateNames = json.tokenizer;\n lexerMin.defaultToken = lexer.defaultToken;\n // Compile an array of rules into newrules where RegExp objects are created.\n function addRules(state, newrules, rules) {\n for (const rule of rules) {\n let include = rule.include;\n if (include) {\n if (typeof (include) !== 'string') {\n throw monarchCommon.createError(lexer, 'an \\'include\\' attribute must be a string at: ' + state);\n }\n if (include[0] === '@') {\n include = include.substr(1); // peel off starting @\n }\n if (!json.tokenizer[include]) {\n throw monarchCommon.createError(lexer, 'include target \\'' + include + '\\' is not defined at: ' + state);\n }\n addRules(state + '.' + include, newrules, json.tokenizer[include]);\n }\n else {\n const newrule = new Rule(state);\n // Set up new rule attributes\n if (Array.isArray(rule) && rule.length >= 1 && rule.length <= 3) {\n newrule.setRegex(lexerMin, rule[0]);\n if (rule.length >= 3) {\n if (typeof (rule[1]) === 'string') {\n newrule.setAction(lexerMin, { token: rule[1], next: rule[2] });\n }\n else if (typeof (rule[1]) === 'object') {\n const rule1 = rule[1];\n rule1.next = rule[2];\n newrule.setAction(lexerMin, rule1);\n }\n else {\n throw monarchCommon.createError(lexer, 'a next state as the last element of a rule can only be given if the action is either an object or a string, at: ' + state);\n }\n }\n else {\n newrule.setAction(lexerMin, rule[1]);\n }\n }\n else {\n if (!rule.regex) {\n throw monarchCommon.createError(lexer, 'a rule must either be an array, or an object with a \\'regex\\' or \\'include\\' field at: ' + state);\n }\n if (rule.name) {\n if (typeof rule.name === 'string') {\n newrule.name = rule.name;\n }\n }\n if (rule.matchOnlyAtStart) {\n newrule.matchOnlyAtLineStart = bool(rule.matchOnlyAtLineStart, false);\n }\n newrule.setRegex(lexerMin, rule.regex);\n newrule.setAction(lexerMin, rule.action);\n }\n newrules.push(newrule);\n }\n }\n }\n // compile the tokenizer rules\n if (!json.tokenizer || typeof (json.tokenizer) !== 'object') {\n throw monarchCommon.createError(lexer, 'a language definition must define the \\'tokenizer\\' attribute as an object');\n }\n lexer.tokenizer = [];\n for (const key in json.tokenizer) {\n if (json.tokenizer.hasOwnProperty(key)) {\n if (!lexer.start) {\n lexer.start = key;\n }\n const rules = json.tokenizer[key];\n lexer.tokenizer[key] = new Array();\n addRules('tokenizer.' + key, lexer.tokenizer[key], rules);\n }\n }\n lexer.usesEmbedded = lexerMin.usesEmbedded; // can be set during compileAction\n // Set simple brackets\n if (json.brackets) {\n if (!(Array.isArray(json.brackets))) {\n throw monarchCommon.createError(lexer, 'the \\'brackets\\' attribute must be defined as an array');\n }\n }\n else {\n json.brackets = [\n { open: '{', close: '}', token: 'delimiter.curly' },\n { open: '[', close: ']', token: 'delimiter.square' },\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\n { open: '<', close: '>', token: 'delimiter.angle' }\n ];\n }\n const brackets = [];\n for (const el of json.brackets) {\n let desc = el;\n if (desc && Array.isArray(desc) && desc.length === 3) {\n desc = { token: desc[2], open: desc[0], close: desc[1] };\n }\n if (desc.open === desc.close) {\n throw monarchCommon.createError(lexer, 'open and close brackets in a \\'brackets\\' attribute must be different: ' + desc.open +\n '\\n hint: use the \\'bracket\\' attribute if matching on equal brackets is required.');\n }\n if (typeof desc.open === 'string' && typeof desc.token === 'string' && typeof desc.close === 'string') {\n brackets.push({\n token: desc.token + lexer.tokenPostfix,\n open: monarchCommon.fixCase(lexer, desc.open),\n close: monarchCommon.fixCase(lexer, desc.close)\n });\n }\n else {\n throw monarchCommon.createError(lexer, 'every element in the \\'brackets\\' array must be a \\'{open,close,token}\\' object or array');\n }\n }\n lexer.brackets = brackets;\n // Disable throw so the syntax highlighter goes, no matter what\n lexer.noThrow = true;\n return lexer;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Color } from '../../../base/common/color.js';\nimport { Range } from '../../common/core/range.js';\nimport * as languages from '../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../common/languages/languageConfigurationRegistry.js';\nimport { ModesRegistry } from '../../common/languages/modesRegistry.js';\nimport { ILanguageService } from '../../common/languages/language.js';\nimport * as standaloneEnums from '../../common/standalone/standaloneEnums.js';\nimport { StandaloneServices } from './standaloneServices.js';\nimport { compile } from '../common/monarch/monarchCompile.js';\nimport { MonarchTokenizer } from '../common/monarch/monarchLexer.js';\nimport { IStandaloneThemeService } from '../common/standaloneTheme.js';\nimport { IMarkerService } from '../../../platform/markers/common/markers.js';\nimport { ILanguageFeaturesService } from '../../common/services/languageFeatures.js';\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\n/**\n * Register information about a new language.\n */\nexport function register(language) {\n // Intentionally using the `ModesRegistry` here to avoid\n // instantiating services too quickly in the standalone editor.\n ModesRegistry.registerLanguage(language);\n}\n/**\n * Get the information of all the registered languages.\n */\nexport function getLanguages() {\n let result = [];\n result = result.concat(ModesRegistry.getLanguages());\n return result;\n}\nexport function getEncodedLanguageId(languageId) {\n const languageService = StandaloneServices.get(ILanguageService);\n return languageService.languageIdCodec.encodeLanguageId(languageId);\n}\n/**\n * An event emitted when a language is needed for the first time (e.g. a model has it set).\n * @event\n */\nexport function onLanguage(languageId, callback) {\n const languageService = StandaloneServices.get(ILanguageService);\n const disposable = languageService.onDidEncounterLanguage((encounteredLanguageId) => {\n if (encounteredLanguageId === languageId) {\n // stop listening\n disposable.dispose();\n // invoke actual listener\n callback();\n }\n });\n return disposable;\n}\n/**\n * Set the editing configuration for a language.\n */\nexport function setLanguageConfiguration(languageId, configuration) {\n const languageService = StandaloneServices.get(ILanguageService);\n if (!languageService.isRegisteredLanguageId(languageId)) {\n throw new Error(`Cannot set configuration for unknown language ${languageId}`);\n }\n const languageConfigurationService = StandaloneServices.get(ILanguageConfigurationService);\n return languageConfigurationService.register(languageId, configuration, 100);\n}\n/**\n * @internal\n */\nexport class EncodedTokenizationSupportAdapter {\n constructor(languageId, actual) {\n this._languageId = languageId;\n this._actual = actual;\n }\n getInitialState() {\n return this._actual.getInitialState();\n }\n tokenize(line, hasEOL, state) {\n if (typeof this._actual.tokenize === 'function') {\n return TokenizationSupportAdapter.adaptTokenize(this._languageId, this._actual, line, state);\n }\n throw new Error('Not supported!');\n }\n tokenizeEncoded(line, hasEOL, state) {\n const result = this._actual.tokenizeEncoded(line, state);\n return new languages.EncodedTokenizationResult(result.tokens, result.endState);\n }\n}\n/**\n * @internal\n */\nexport class TokenizationSupportAdapter {\n constructor(_languageId, _actual, _languageService, _standaloneThemeService) {\n this._languageId = _languageId;\n this._actual = _actual;\n this._languageService = _languageService;\n this._standaloneThemeService = _standaloneThemeService;\n }\n getInitialState() {\n return this._actual.getInitialState();\n }\n static _toClassicTokens(tokens, language) {\n const result = [];\n let previousStartIndex = 0;\n for (let i = 0, len = tokens.length; i < len; i++) {\n const t = tokens[i];\n let startIndex = t.startIndex;\n // Prevent issues stemming from a buggy external tokenizer.\n if (i === 0) {\n // Force first token to start at first index!\n startIndex = 0;\n }\n else if (startIndex < previousStartIndex) {\n // Force tokens to be after one another!\n startIndex = previousStartIndex;\n }\n result[i] = new languages.Token(startIndex, t.scopes, language);\n previousStartIndex = startIndex;\n }\n return result;\n }\n static adaptTokenize(language, actual, line, state) {\n const actualResult = actual.tokenize(line, state);\n const tokens = TokenizationSupportAdapter._toClassicTokens(actualResult.tokens, language);\n let endState;\n // try to save an object if possible\n if (actualResult.endState.equals(state)) {\n endState = state;\n }\n else {\n endState = actualResult.endState;\n }\n return new languages.TokenizationResult(tokens, endState);\n }\n tokenize(line, hasEOL, state) {\n return TokenizationSupportAdapter.adaptTokenize(this._languageId, this._actual, line, state);\n }\n _toBinaryTokens(languageIdCodec, tokens) {\n const languageId = languageIdCodec.encodeLanguageId(this._languageId);\n const tokenTheme = this._standaloneThemeService.getColorTheme().tokenTheme;\n const result = [];\n let resultLen = 0;\n let previousStartIndex = 0;\n for (let i = 0, len = tokens.length; i < len; i++) {\n const t = tokens[i];\n const metadata = tokenTheme.match(languageId, t.scopes);\n if (resultLen > 0 && result[resultLen - 1] === metadata) {\n // same metadata\n continue;\n }\n let startIndex = t.startIndex;\n // Prevent issues stemming from a buggy external tokenizer.\n if (i === 0) {\n // Force first token to start at first index!\n startIndex = 0;\n }\n else if (startIndex < previousStartIndex) {\n // Force tokens to be after one another!\n startIndex = previousStartIndex;\n }\n result[resultLen++] = startIndex;\n result[resultLen++] = metadata;\n previousStartIndex = startIndex;\n }\n const actualResult = new Uint32Array(resultLen);\n for (let i = 0; i < resultLen; i++) {\n actualResult[i] = result[i];\n }\n return actualResult;\n }\n tokenizeEncoded(line, hasEOL, state) {\n const actualResult = this._actual.tokenize(line, state);\n const tokens = this._toBinaryTokens(this._languageService.languageIdCodec, actualResult.tokens);\n let endState;\n // try to save an object if possible\n if (actualResult.endState.equals(state)) {\n endState = state;\n }\n else {\n endState = actualResult.endState;\n }\n return new languages.EncodedTokenizationResult(tokens, endState);\n }\n}\nfunction isATokensProvider(provider) {\n return (typeof provider.getInitialState === 'function');\n}\nfunction isEncodedTokensProvider(provider) {\n return 'tokenizeEncoded' in provider;\n}\nfunction isThenable(obj) {\n return obj && typeof obj.then === 'function';\n}\n/**\n * Change the color map that is used for token colors.\n * Supported formats (hex): #RRGGBB, $RRGGBBAA, #RGB, #RGBA\n */\nexport function setColorMap(colorMap) {\n const standaloneThemeService = StandaloneServices.get(IStandaloneThemeService);\n if (colorMap) {\n const result = [null];\n for (let i = 1, len = colorMap.length; i < len; i++) {\n result[i] = Color.fromHex(colorMap[i]);\n }\n standaloneThemeService.setColorMapOverride(result);\n }\n else {\n standaloneThemeService.setColorMapOverride(null);\n }\n}\n/**\n * @internal\n */\nfunction createTokenizationSupportAdapter(languageId, provider) {\n if (isEncodedTokensProvider(provider)) {\n return new EncodedTokenizationSupportAdapter(languageId, provider);\n }\n else {\n return new TokenizationSupportAdapter(languageId, provider, StandaloneServices.get(ILanguageService), StandaloneServices.get(IStandaloneThemeService));\n }\n}\n/**\n * Register a tokens provider factory for a language. This tokenizer will be exclusive with a tokenizer\n * set using `setTokensProvider` or one created using `setMonarchTokensProvider`, but will work together\n * with a tokens provider set using `registerDocumentSemanticTokensProvider` or `registerDocumentRangeSemanticTokensProvider`.\n */\nexport function registerTokensProviderFactory(languageId, factory) {\n const adaptedFactory = {\n createTokenizationSupport: () => __awaiter(this, void 0, void 0, function* () {\n const result = yield Promise.resolve(factory.create());\n if (!result) {\n return null;\n }\n if (isATokensProvider(result)) {\n return createTokenizationSupportAdapter(languageId, result);\n }\n return new MonarchTokenizer(StandaloneServices.get(ILanguageService), StandaloneServices.get(IStandaloneThemeService), languageId, compile(languageId, result), StandaloneServices.get(IConfigurationService));\n })\n };\n return languages.TokenizationRegistry.registerFactory(languageId, adaptedFactory);\n}\n/**\n * Set the tokens provider for a language (manual implementation). This tokenizer will be exclusive\n * with a tokenizer created using `setMonarchTokensProvider`, or with `registerTokensProviderFactory`,\n * but will work together with a tokens provider set using `registerDocumentSemanticTokensProvider`\n * or `registerDocumentRangeSemanticTokensProvider`.\n */\nexport function setTokensProvider(languageId, provider) {\n const languageService = StandaloneServices.get(ILanguageService);\n if (!languageService.isRegisteredLanguageId(languageId)) {\n throw new Error(`Cannot set tokens provider for unknown language ${languageId}`);\n }\n if (isThenable(provider)) {\n return registerTokensProviderFactory(languageId, { create: () => provider });\n }\n return languages.TokenizationRegistry.register(languageId, createTokenizationSupportAdapter(languageId, provider));\n}\n/**\n * Set the tokens provider for a language (monarch implementation). This tokenizer will be exclusive\n * with a tokenizer set using `setTokensProvider`, or with `registerTokensProviderFactory`, but will\n * work together with a tokens provider set using `registerDocumentSemanticTokensProvider` or\n * `registerDocumentRangeSemanticTokensProvider`.\n */\nexport function setMonarchTokensProvider(languageId, languageDef) {\n const create = (languageDef) => {\n return new MonarchTokenizer(StandaloneServices.get(ILanguageService), StandaloneServices.get(IStandaloneThemeService), languageId, compile(languageId, languageDef), StandaloneServices.get(IConfigurationService));\n };\n if (isThenable(languageDef)) {\n return registerTokensProviderFactory(languageId, { create: () => languageDef });\n }\n return languages.TokenizationRegistry.register(languageId, create(languageDef));\n}\n/**\n * Register a reference provider (used by e.g. reference search).\n */\nexport function registerReferenceProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.referenceProvider.register(languageSelector, provider);\n}\n/**\n * Register a rename provider (used by e.g. rename symbol).\n */\nexport function registerRenameProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.renameProvider.register(languageSelector, provider);\n}\n/**\n * Register a signature help provider (used by e.g. parameter hints).\n */\nexport function registerSignatureHelpProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.signatureHelpProvider.register(languageSelector, provider);\n}\n/**\n * Register a hover provider (used by e.g. editor hover).\n */\nexport function registerHoverProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.hoverProvider.register(languageSelector, {\n provideHover: (model, position, token) => {\n const word = model.getWordAtPosition(position);\n return Promise.resolve(provider.provideHover(model, position, token)).then((value) => {\n if (!value) {\n return undefined;\n }\n if (!value.range && word) {\n value.range = new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\n }\n if (!value.range) {\n value.range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\n }\n return value;\n });\n }\n });\n}\n/**\n * Register a document symbol provider (used by e.g. outline).\n */\nexport function registerDocumentSymbolProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.documentSymbolProvider.register(languageSelector, provider);\n}\n/**\n * Register a document highlight provider (used by e.g. highlight occurrences).\n */\nexport function registerDocumentHighlightProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.documentHighlightProvider.register(languageSelector, provider);\n}\n/**\n * Register an linked editing range provider.\n */\nexport function registerLinkedEditingRangeProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.linkedEditingRangeProvider.register(languageSelector, provider);\n}\n/**\n * Register a definition provider (used by e.g. go to definition).\n */\nexport function registerDefinitionProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.definitionProvider.register(languageSelector, provider);\n}\n/**\n * Register a implementation provider (used by e.g. go to implementation).\n */\nexport function registerImplementationProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.implementationProvider.register(languageSelector, provider);\n}\n/**\n * Register a type definition provider (used by e.g. go to type definition).\n */\nexport function registerTypeDefinitionProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.typeDefinitionProvider.register(languageSelector, provider);\n}\n/**\n * Register a code lens provider (used by e.g. inline code lenses).\n */\nexport function registerCodeLensProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.codeLensProvider.register(languageSelector, provider);\n}\n/**\n * Register a code action provider (used by e.g. quick fix).\n */\nexport function registerCodeActionProvider(languageSelector, provider, metadata) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.codeActionProvider.register(languageSelector, {\n providedCodeActionKinds: metadata === null || metadata === void 0 ? void 0 : metadata.providedCodeActionKinds,\n documentation: metadata === null || metadata === void 0 ? void 0 : metadata.documentation,\n provideCodeActions: (model, range, context, token) => {\n const markerService = StandaloneServices.get(IMarkerService);\n const markers = markerService.read({ resource: model.uri }).filter(m => {\n return Range.areIntersectingOrTouching(m, range);\n });\n return provider.provideCodeActions(model, range, { markers, only: context.only, trigger: context.trigger }, token);\n },\n resolveCodeAction: provider.resolveCodeAction\n });\n}\n/**\n * Register a formatter that can handle only entire models.\n */\nexport function registerDocumentFormattingEditProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.documentFormattingEditProvider.register(languageSelector, provider);\n}\n/**\n * Register a formatter that can handle a range inside a model.\n */\nexport function registerDocumentRangeFormattingEditProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.documentRangeFormattingEditProvider.register(languageSelector, provider);\n}\n/**\n * Register a formatter than can do formatting as the user types.\n */\nexport function registerOnTypeFormattingEditProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.onTypeFormattingEditProvider.register(languageSelector, provider);\n}\n/**\n * Register a link provider that can find links in text.\n */\nexport function registerLinkProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.linkProvider.register(languageSelector, provider);\n}\n/**\n * Register a completion item provider (use by e.g. suggestions).\n */\nexport function registerCompletionItemProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.completionProvider.register(languageSelector, provider);\n}\n/**\n * Register a document color provider (used by Color Picker, Color Decorator).\n */\nexport function registerColorProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.colorProvider.register(languageSelector, provider);\n}\n/**\n * Register a folding range provider\n */\nexport function registerFoldingRangeProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.foldingRangeProvider.register(languageSelector, provider);\n}\n/**\n * Register a declaration provider\n */\nexport function registerDeclarationProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.declarationProvider.register(languageSelector, provider);\n}\n/**\n * Register a selection range provider\n */\nexport function registerSelectionRangeProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.selectionRangeProvider.register(languageSelector, provider);\n}\n/**\n * Register a document semantic tokens provider. A semantic tokens provider will complement and enhance a\n * simple top-down tokenizer. Simple top-down tokenizers can be set either via `setMonarchTokensProvider`\n * or `setTokensProvider`.\n *\n * For the best user experience, register both a semantic tokens provider and a top-down tokenizer.\n */\nexport function registerDocumentSemanticTokensProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.documentSemanticTokensProvider.register(languageSelector, provider);\n}\n/**\n * Register a document range semantic tokens provider. A semantic tokens provider will complement and enhance a\n * simple top-down tokenizer. Simple top-down tokenizers can be set either via `setMonarchTokensProvider`\n * or `setTokensProvider`.\n *\n * For the best user experience, register both a semantic tokens provider and a top-down tokenizer.\n */\nexport function registerDocumentRangeSemanticTokensProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.documentRangeSemanticTokensProvider.register(languageSelector, provider);\n}\n/**\n * Register an inline completions provider.\n */\nexport function registerInlineCompletionsProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.inlineCompletionsProvider.register(languageSelector, provider);\n}\n/**\n * Register an inlay hints provider.\n */\nexport function registerInlayHintsProvider(languageSelector, provider) {\n const languageFeaturesService = StandaloneServices.get(ILanguageFeaturesService);\n return languageFeaturesService.inlayHintsProvider.register(languageSelector, provider);\n}\n/**\n * @internal\n */\nexport function createMonacoLanguagesAPI() {\n return {\n register: register,\n getLanguages: getLanguages,\n onLanguage: onLanguage,\n getEncodedLanguageId: getEncodedLanguageId,\n // provider methods\n setLanguageConfiguration: setLanguageConfiguration,\n setColorMap: setColorMap,\n registerTokensProviderFactory: registerTokensProviderFactory,\n setTokensProvider: setTokensProvider,\n setMonarchTokensProvider: setMonarchTokensProvider,\n registerReferenceProvider: registerReferenceProvider,\n registerRenameProvider: registerRenameProvider,\n registerCompletionItemProvider: registerCompletionItemProvider,\n registerSignatureHelpProvider: registerSignatureHelpProvider,\n registerHoverProvider: registerHoverProvider,\n registerDocumentSymbolProvider: registerDocumentSymbolProvider,\n registerDocumentHighlightProvider: registerDocumentHighlightProvider,\n registerLinkedEditingRangeProvider: registerLinkedEditingRangeProvider,\n registerDefinitionProvider: registerDefinitionProvider,\n registerImplementationProvider: registerImplementationProvider,\n registerTypeDefinitionProvider: registerTypeDefinitionProvider,\n registerCodeLensProvider: registerCodeLensProvider,\n registerCodeActionProvider: registerCodeActionProvider,\n registerDocumentFormattingEditProvider: registerDocumentFormattingEditProvider,\n registerDocumentRangeFormattingEditProvider: registerDocumentRangeFormattingEditProvider,\n registerOnTypeFormattingEditProvider: registerOnTypeFormattingEditProvider,\n registerLinkProvider: registerLinkProvider,\n registerColorProvider: registerColorProvider,\n registerFoldingRangeProvider: registerFoldingRangeProvider,\n registerDeclarationProvider: registerDeclarationProvider,\n registerSelectionRangeProvider: registerSelectionRangeProvider,\n registerDocumentSemanticTokensProvider: registerDocumentSemanticTokensProvider,\n registerDocumentRangeSemanticTokensProvider: registerDocumentRangeSemanticTokensProvider,\n registerInlineCompletionsProvider: registerInlineCompletionsProvider,\n registerInlayHintsProvider: registerInlayHintsProvider,\n // enums\n DocumentHighlightKind: standaloneEnums.DocumentHighlightKind,\n CompletionItemKind: standaloneEnums.CompletionItemKind,\n CompletionItemTag: standaloneEnums.CompletionItemTag,\n CompletionItemInsertTextRule: standaloneEnums.CompletionItemInsertTextRule,\n SymbolKind: standaloneEnums.SymbolKind,\n SymbolTag: standaloneEnums.SymbolTag,\n IndentAction: standaloneEnums.IndentAction,\n CompletionTriggerKind: standaloneEnums.CompletionTriggerKind,\n SignatureHelpTriggerKind: standaloneEnums.SignatureHelpTriggerKind,\n InlayHintKind: standaloneEnums.InlayHintKind,\n InlineCompletionTriggerKind: standaloneEnums.InlineCompletionTriggerKind,\n CodeActionTriggerType: standaloneEnums.CodeActionTriggerType,\n // classes\n FoldingRangeKind: languages.FoldingRangeKind,\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nimport { EditorOptions } from './common/config/editorOptions.js';\nimport { createMonacoBaseAPI } from './common/services/editorBaseApi.js';\nimport { createMonacoEditorAPI } from './standalone/browser/standaloneEditor.js';\nimport { createMonacoLanguagesAPI } from './standalone/browser/standaloneLanguages.js';\nimport { globals } from '../base/common/platform.js';\nimport { FormattingConflicts } from './contrib/format/browser/format.js';\n// Set defaults for standalone editor\nEditorOptions.wrappingIndent.defaultValue = 0 /* WrappingIndent.None */;\nEditorOptions.glyphMargin.defaultValue = false;\nEditorOptions.autoIndent.defaultValue = 3 /* EditorAutoIndentStrategy.Advanced */;\nEditorOptions.overviewRulerLanes.defaultValue = 2;\n// We need to register a formatter selector which simply picks the first available formatter.\n// See https://github.com/microsoft/monaco-editor/issues/2327\nFormattingConflicts.setFormatterSelector((formatter, document, mode) => Promise.resolve(formatter[0]));\nconst api = createMonacoBaseAPI();\napi.editor = createMonacoEditorAPI();\napi.languages = createMonacoLanguagesAPI();\nexport const CancellationTokenSource = api.CancellationTokenSource;\nexport const Emitter = api.Emitter;\nexport const KeyCode = api.KeyCode;\nexport const KeyMod = api.KeyMod;\nexport const Position = api.Position;\nexport const Range = api.Range;\nexport const Selection = api.Selection;\nexport const SelectionDirection = api.SelectionDirection;\nexport const MarkerSeverity = api.MarkerSeverity;\nexport const MarkerTag = api.MarkerTag;\nexport const Uri = api.Uri;\nexport const Token = api.Token;\nexport const editor = api.editor;\nexport const languages = api.languages;\nif (((_a = globals.MonacoEnvironment) === null || _a === void 0 ? void 0 : _a.globalAPI) || (typeof define === 'function' && define.amd)) {\n self.monaco = api;\n}\nif (typeof self.require !== 'undefined' && typeof self.require.config === 'function') {\n self.require.config({\n ignoreDuplicateModules: [\n 'vscode-languageserver-types',\n 'vscode-languageserver-types/main',\n 'vscode-languageserver-textdocument',\n 'vscode-languageserver-textdocument/main',\n 'vscode-nls',\n 'vscode-nls/vscode-nls',\n 'jsonc-parser',\n 'jsonc-parser/main',\n 'vscode-uri',\n 'vscode-uri/index',\n 'vs/basic-languages/typescript/typescript'\n ]\n });\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport './accessibilityHelp.css';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\nimport { renderFormattedText } from '../../../../base/browser/formattedTextRenderer.js';\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { Widget } from '../../../../base/browser/ui/widget.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ToggleTabFocusModeAction } from '../../../contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js';\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { contrastBorder, editorWidgetBackground, widgetShadow, editorWidgetForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { AccessibilityHelpNLS } from '../../../common/standaloneStrings.js';\nconst CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE = new RawContextKey('accessibilityHelpWidgetVisible', false);\nlet AccessibilityHelpController = class AccessibilityHelpController extends Disposable {\n constructor(editor, instantiationService) {\n super();\n this._editor = editor;\n this._widget = this._register(instantiationService.createInstance(AccessibilityHelpWidget, this._editor));\n }\n static get(editor) {\n return editor.getContribution(AccessibilityHelpController.ID);\n }\n show() {\n this._widget.show();\n }\n hide() {\n this._widget.hide();\n }\n};\nAccessibilityHelpController.ID = 'editor.contrib.accessibilityHelpController';\nAccessibilityHelpController = __decorate([\n __param(1, IInstantiationService)\n], AccessibilityHelpController);\nfunction getSelectionLabel(selections, charactersSelected) {\n if (!selections || selections.length === 0) {\n return AccessibilityHelpNLS.noSelection;\n }\n if (selections.length === 1) {\n if (charactersSelected) {\n return strings.format(AccessibilityHelpNLS.singleSelectionRange, selections[0].positionLineNumber, selections[0].positionColumn, charactersSelected);\n }\n return strings.format(AccessibilityHelpNLS.singleSelection, selections[0].positionLineNumber, selections[0].positionColumn);\n }\n if (charactersSelected) {\n return strings.format(AccessibilityHelpNLS.multiSelectionRange, selections.length, charactersSelected);\n }\n if (selections.length > 0) {\n return strings.format(AccessibilityHelpNLS.multiSelection, selections.length);\n }\n return '';\n}\nlet AccessibilityHelpWidget = class AccessibilityHelpWidget extends Widget {\n constructor(editor, _contextKeyService, _keybindingService, _openerService) {\n super();\n this._contextKeyService = _contextKeyService;\n this._keybindingService = _keybindingService;\n this._openerService = _openerService;\n this._editor = editor;\n this._isVisibleKey = CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE.bindTo(this._contextKeyService);\n this._domNode = createFastDomNode(document.createElement('div'));\n this._domNode.setClassName('accessibilityHelpWidget');\n this._domNode.setDisplay('none');\n this._domNode.setAttribute('role', 'dialog');\n this._domNode.setAttribute('aria-hidden', 'true');\n this._contentDomNode = createFastDomNode(document.createElement('div'));\n this._contentDomNode.setAttribute('role', 'document');\n this._domNode.appendChild(this._contentDomNode);\n this._isVisible = false;\n this._register(this._editor.onDidLayoutChange(() => {\n if (this._isVisible) {\n this._layout();\n }\n }));\n // Intentionally not configurable!\n this._register(dom.addStandardDisposableListener(this._contentDomNode.domNode, 'keydown', (e) => {\n if (!this._isVisible) {\n return;\n }\n if (e.equals(2048 /* KeyMod.CtrlCmd */ | 35 /* KeyCode.KeyE */)) {\n alert(AccessibilityHelpNLS.emergencyConfOn);\n this._editor.updateOptions({\n accessibilitySupport: 'on'\n });\n dom.clearNode(this._contentDomNode.domNode);\n this._buildContent();\n this._contentDomNode.domNode.focus();\n e.preventDefault();\n e.stopPropagation();\n }\n if (e.equals(2048 /* KeyMod.CtrlCmd */ | 38 /* KeyCode.KeyH */)) {\n alert(AccessibilityHelpNLS.openingDocs);\n let url = this._editor.getRawOptions().accessibilityHelpUrl;\n if (typeof url === 'undefined') {\n url = 'https://go.microsoft.com/fwlink/?linkid=852450';\n }\n this._openerService.open(URI.parse(url));\n e.preventDefault();\n e.stopPropagation();\n }\n }));\n this.onblur(this._contentDomNode.domNode, () => {\n this.hide();\n });\n this._editor.addOverlayWidget(this);\n }\n dispose() {\n this._editor.removeOverlayWidget(this);\n super.dispose();\n }\n getId() {\n return AccessibilityHelpWidget.ID;\n }\n getDomNode() {\n return this._domNode.domNode;\n }\n getPosition() {\n return {\n preference: null\n };\n }\n show() {\n if (this._isVisible) {\n return;\n }\n this._isVisible = true;\n this._isVisibleKey.set(true);\n this._layout();\n this._domNode.setDisplay('block');\n this._domNode.setAttribute('aria-hidden', 'false');\n this._contentDomNode.domNode.tabIndex = 0;\n this._buildContent();\n this._contentDomNode.domNode.focus();\n }\n _descriptionForCommand(commandId, msg, noKbMsg) {\n const kb = this._keybindingService.lookupKeybinding(commandId);\n if (kb) {\n return strings.format(msg, kb.getAriaLabel());\n }\n return strings.format(noKbMsg, commandId);\n }\n _buildContent() {\n const options = this._editor.getOptions();\n const selections = this._editor.getSelections();\n let charactersSelected = 0;\n if (selections) {\n const model = this._editor.getModel();\n if (model) {\n selections.forEach((selection) => {\n charactersSelected += model.getValueLengthInRange(selection);\n });\n }\n }\n let text = getSelectionLabel(selections, charactersSelected);\n if (options.get(56 /* EditorOption.inDiffEditor */)) {\n if (options.get(83 /* EditorOption.readOnly */)) {\n text += AccessibilityHelpNLS.readonlyDiffEditor;\n }\n else {\n text += AccessibilityHelpNLS.editableDiffEditor;\n }\n }\n else {\n if (options.get(83 /* EditorOption.readOnly */)) {\n text += AccessibilityHelpNLS.readonlyEditor;\n }\n else {\n text += AccessibilityHelpNLS.editableEditor;\n }\n }\n const turnOnMessage = (platform.isMacintosh\n ? AccessibilityHelpNLS.changeConfigToOnMac\n : AccessibilityHelpNLS.changeConfigToOnWinLinux);\n switch (options.get(2 /* EditorOption.accessibilitySupport */)) {\n case 0 /* AccessibilitySupport.Unknown */:\n text += '\\n\\n - ' + turnOnMessage;\n break;\n case 2 /* AccessibilitySupport.Enabled */:\n text += '\\n\\n - ' + AccessibilityHelpNLS.auto_on;\n break;\n case 1 /* AccessibilitySupport.Disabled */:\n text += '\\n\\n - ' + AccessibilityHelpNLS.auto_off;\n text += ' ' + turnOnMessage;\n break;\n }\n if (options.get(132 /* EditorOption.tabFocusMode */)) {\n text += '\\n\\n - ' + this._descriptionForCommand(ToggleTabFocusModeAction.ID, AccessibilityHelpNLS.tabFocusModeOnMsg, AccessibilityHelpNLS.tabFocusModeOnMsgNoKb);\n }\n else {\n text += '\\n\\n - ' + this._descriptionForCommand(ToggleTabFocusModeAction.ID, AccessibilityHelpNLS.tabFocusModeOffMsg, AccessibilityHelpNLS.tabFocusModeOffMsgNoKb);\n }\n const openDocMessage = (platform.isMacintosh\n ? AccessibilityHelpNLS.openDocMac\n : AccessibilityHelpNLS.openDocWinLinux);\n text += '\\n\\n - ' + openDocMessage;\n text += '\\n\\n' + AccessibilityHelpNLS.outroMsg;\n this._contentDomNode.domNode.appendChild(renderFormattedText(text));\n // Per https://www.w3.org/TR/wai-aria/roles#document, Authors SHOULD provide a title or label for documents\n this._contentDomNode.domNode.setAttribute('aria-label', text);\n }\n hide() {\n if (!this._isVisible) {\n return;\n }\n this._isVisible = false;\n this._isVisibleKey.reset();\n this._domNode.setDisplay('none');\n this._domNode.setAttribute('aria-hidden', 'true');\n this._contentDomNode.domNode.tabIndex = -1;\n dom.clearNode(this._contentDomNode.domNode);\n this._editor.focus();\n }\n _layout() {\n const editorLayout = this._editor.getLayoutInfo();\n const w = Math.max(5, Math.min(AccessibilityHelpWidget.WIDTH, editorLayout.width - 40));\n const h = Math.max(5, Math.min(AccessibilityHelpWidget.HEIGHT, editorLayout.height - 40));\n this._domNode.setWidth(w);\n this._domNode.setHeight(h);\n const top = Math.round((editorLayout.height - h) / 2);\n this._domNode.setTop(top);\n const left = Math.round((editorLayout.width - w) / 2);\n this._domNode.setLeft(left);\n }\n};\nAccessibilityHelpWidget.ID = 'editor.contrib.accessibilityHelpWidget';\nAccessibilityHelpWidget.WIDTH = 500;\nAccessibilityHelpWidget.HEIGHT = 300;\nAccessibilityHelpWidget = __decorate([\n __param(1, IContextKeyService),\n __param(2, IKeybindingService),\n __param(3, IOpenerService)\n], AccessibilityHelpWidget);\nclass ShowAccessibilityHelpAction extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.showAccessibilityHelp',\n label: AccessibilityHelpNLS.showAccessibilityHelpAction,\n alias: 'Show Accessibility Help',\n precondition: undefined,\n kbOpts: {\n primary: 512 /* KeyMod.Alt */ | 59 /* KeyCode.F1 */,\n weight: 100 /* KeybindingWeight.EditorContrib */,\n linux: {\n primary: 512 /* KeyMod.Alt */ | 1024 /* KeyMod.Shift */ | 59 /* KeyCode.F1 */,\n secondary: [512 /* KeyMod.Alt */ | 59 /* KeyCode.F1 */]\n }\n }\n });\n }\n run(accessor, editor) {\n const controller = AccessibilityHelpController.get(editor);\n if (controller) {\n controller.show();\n }\n }\n}\nregisterEditorContribution(AccessibilityHelpController.ID, AccessibilityHelpController);\nregisterEditorAction(ShowAccessibilityHelpAction);\nconst AccessibilityHelpCommand = EditorCommand.bindToContribution(AccessibilityHelpController.get);\nregisterEditorCommand(new AccessibilityHelpCommand({\n id: 'closeAccessibilityHelp',\n precondition: CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE,\n handler: x => x.hide(),\n kbOpts: {\n weight: 100 /* KeybindingWeight.EditorContrib */ + 100,\n kbExpr: EditorContextKeys.focus,\n primary: 9 /* KeyCode.Escape */,\n secondary: [1024 /* KeyMod.Shift */ | 9 /* KeyCode.Escape */]\n }\n}));\nregisterThemingParticipant((theme, collector) => {\n const widgetBackground = theme.getColor(editorWidgetBackground);\n if (widgetBackground) {\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { background-color: ${widgetBackground}; }`);\n }\n const widgetForeground = theme.getColor(editorWidgetForeground);\n if (widgetForeground) {\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { color: ${widgetForeground}; }`);\n }\n const widgetShadowColor = theme.getColor(widgetShadow);\n if (widgetShadowColor) {\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { box-shadow: 0 2px 8px ${widgetShadowColor}; }`);\n }\n const hcBorder = theme.getColor(contrastBorder);\n if (hcBorder) {\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { border: 2px solid ${hcBorder}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport './iPadShowKeyboard.css';\nimport * as dom from '../../../../base/browser/dom.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { isIOS } from '../../../../base/common/platform.js';\nexport class IPadShowKeyboard extends Disposable {\n constructor(editor) {\n super();\n this.editor = editor;\n this.widget = null;\n if (isIOS) {\n this._register(editor.onDidChangeConfiguration(() => this.update()));\n this.update();\n }\n }\n update() {\n const shouldHaveWidget = (!this.editor.getOption(83 /* EditorOption.readOnly */));\n if (!this.widget && shouldHaveWidget) {\n this.widget = new ShowKeyboardWidget(this.editor);\n }\n else if (this.widget && !shouldHaveWidget) {\n this.widget.dispose();\n this.widget = null;\n }\n }\n dispose() {\n super.dispose();\n if (this.widget) {\n this.widget.dispose();\n this.widget = null;\n }\n }\n}\nIPadShowKeyboard.ID = 'editor.contrib.iPadShowKeyboard';\nclass ShowKeyboardWidget extends Disposable {\n constructor(editor) {\n super();\n this.editor = editor;\n this._domNode = document.createElement('textarea');\n this._domNode.className = 'iPadShowKeyboard';\n this._register(dom.addDisposableListener(this._domNode, 'touchstart', (e) => {\n this.editor.focus();\n }));\n this._register(dom.addDisposableListener(this._domNode, 'focus', (e) => {\n this.editor.focus();\n }));\n this.editor.addOverlayWidget(this);\n }\n dispose() {\n this.editor.removeOverlayWidget(this);\n super.dispose();\n }\n // ----- IOverlayWidget API\n getId() {\n return ShowKeyboardWidget.ID;\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return {\n preference: 1 /* OverlayWidgetPositionPreference.BOTTOM_RIGHT_CORNER */\n };\n }\n}\nShowKeyboardWidget.ID = 'editor.contrib.ShowKeyboardWidget';\nregisterEditorContribution(IPadShowKeyboard.ID, IPadShowKeyboard);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport './inspectTokens.css';\nimport { $, append, reset } from '../../../../base/browser/dom.js';\nimport { Color } from '../../../../base/common/color.js';\nimport { Disposable } from '../../../../base/common/lifecycle.js';\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { TokenizationRegistry } from '../../../common/languages.js';\nimport { TokenMetadata } from '../../../common/encodedTokenAttributes.js';\nimport { NullState, nullTokenize, nullTokenizeEncoded } from '../../../common/languages/nullTokenize.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { IStandaloneThemeService } from '../../common/standaloneTheme.js';\nimport { editorHoverBackground, editorHoverBorder, editorHoverForeground } from '../../../../platform/theme/common/colorRegistry.js';\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\nimport { InspectTokensNLS } from '../../../common/standaloneStrings.js';\nimport { isHighContrast } from '../../../../platform/theme/common/theme.js';\nlet InspectTokensController = class InspectTokensController extends Disposable {\n constructor(editor, standaloneColorService, languageService) {\n super();\n this._editor = editor;\n this._languageService = languageService;\n this._widget = null;\n this._register(this._editor.onDidChangeModel((e) => this.stop()));\n this._register(this._editor.onDidChangeModelLanguage((e) => this.stop()));\n this._register(TokenizationRegistry.onDidChange((e) => this.stop()));\n this._register(this._editor.onKeyUp((e) => e.keyCode === 9 /* KeyCode.Escape */ && this.stop()));\n }\n static get(editor) {\n return editor.getContribution(InspectTokensController.ID);\n }\n dispose() {\n this.stop();\n super.dispose();\n }\n launch() {\n if (this._widget) {\n return;\n }\n if (!this._editor.hasModel()) {\n return;\n }\n this._widget = new InspectTokensWidget(this._editor, this._languageService);\n }\n stop() {\n if (this._widget) {\n this._widget.dispose();\n this._widget = null;\n }\n }\n};\nInspectTokensController.ID = 'editor.contrib.inspectTokens';\nInspectTokensController = __decorate([\n __param(1, IStandaloneThemeService),\n __param(2, ILanguageService)\n], InspectTokensController);\nclass InspectTokens extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.inspectTokens',\n label: InspectTokensNLS.inspectTokensAction,\n alias: 'Developer: Inspect Tokens',\n precondition: undefined\n });\n }\n run(accessor, editor) {\n const controller = InspectTokensController.get(editor);\n if (controller) {\n controller.launch();\n }\n }\n}\nfunction renderTokenText(tokenText) {\n let result = '';\n for (let charIndex = 0, len = tokenText.length; charIndex < len; charIndex++) {\n const charCode = tokenText.charCodeAt(charIndex);\n switch (charCode) {\n case 9 /* CharCode.Tab */:\n result += '\\u2192'; // →\n break;\n case 32 /* CharCode.Space */:\n result += '\\u00B7'; // ·\n break;\n default:\n result += String.fromCharCode(charCode);\n }\n }\n return result;\n}\nfunction getSafeTokenizationSupport(languageIdCodec, languageId) {\n const tokenizationSupport = TokenizationRegistry.get(languageId);\n if (tokenizationSupport) {\n return tokenizationSupport;\n }\n const encodedLanguageId = languageIdCodec.encodeLanguageId(languageId);\n return {\n getInitialState: () => NullState,\n tokenize: (line, hasEOL, state) => nullTokenize(languageId, state),\n tokenizeEncoded: (line, hasEOL, state) => nullTokenizeEncoded(encodedLanguageId, state)\n };\n}\nclass InspectTokensWidget extends Disposable {\n constructor(editor, languageService) {\n super();\n // Editor.IContentWidget.allowEditorOverflow\n this.allowEditorOverflow = true;\n this._editor = editor;\n this._languageService = languageService;\n this._model = this._editor.getModel();\n this._domNode = document.createElement('div');\n this._domNode.className = 'tokens-inspect-widget';\n this._tokenizationSupport = getSafeTokenizationSupport(this._languageService.languageIdCodec, this._model.getLanguageId());\n this._compute(this._editor.getPosition());\n this._register(this._editor.onDidChangeCursorPosition((e) => this._compute(this._editor.getPosition())));\n this._editor.addContentWidget(this);\n }\n dispose() {\n this._editor.removeContentWidget(this);\n super.dispose();\n }\n getId() {\n return InspectTokensWidget._ID;\n }\n _compute(position) {\n const data = this._getTokensAtLine(position.lineNumber);\n let token1Index = 0;\n for (let i = data.tokens1.length - 1; i >= 0; i--) {\n const t = data.tokens1[i];\n if (position.column - 1 >= t.offset) {\n token1Index = i;\n break;\n }\n }\n let token2Index = 0;\n for (let i = (data.tokens2.length >>> 1); i >= 0; i--) {\n if (position.column - 1 >= data.tokens2[(i << 1)]) {\n token2Index = i;\n break;\n }\n }\n const lineContent = this._model.getLineContent(position.lineNumber);\n let tokenText = '';\n if (token1Index < data.tokens1.length) {\n const tokenStartIndex = data.tokens1[token1Index].offset;\n const tokenEndIndex = token1Index + 1 < data.tokens1.length ? data.tokens1[token1Index + 1].offset : lineContent.length;\n tokenText = lineContent.substring(tokenStartIndex, tokenEndIndex);\n }\n reset(this._domNode, $('h2.tm-token', undefined, renderTokenText(tokenText), $('span.tm-token-length', undefined, `${tokenText.length} ${tokenText.length === 1 ? 'char' : 'chars'}`)));\n append(this._domNode, $('hr.tokens-inspect-separator', { 'style': 'clear:both' }));\n const metadata = (token2Index << 1) + 1 < data.tokens2.length ? this._decodeMetadata(data.tokens2[(token2Index << 1) + 1]) : null;\n append(this._domNode, $('table.tm-metadata-table', undefined, $('tbody', undefined, $('tr', undefined, $('td.tm-metadata-key', undefined, 'language'), $('td.tm-metadata-value', undefined, `${metadata ? metadata.languageId : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'token type'), $('td.tm-metadata-value', undefined, `${metadata ? this._tokenTypeToString(metadata.tokenType) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'font style'), $('td.tm-metadata-value', undefined, `${metadata ? this._fontStyleToString(metadata.fontStyle) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'foreground'), $('td.tm-metadata-value', undefined, `${metadata ? Color.Format.CSS.formatHex(metadata.foreground) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'background'), $('td.tm-metadata-value', undefined, `${metadata ? Color.Format.CSS.formatHex(metadata.background) : '-?-'}`)))));\n append(this._domNode, $('hr.tokens-inspect-separator'));\n if (token1Index < data.tokens1.length) {\n append(this._domNode, $('span.tm-token-type', undefined, data.tokens1[token1Index].type));\n }\n this._editor.layoutContentWidget(this);\n }\n _decodeMetadata(metadata) {\n const colorMap = TokenizationRegistry.getColorMap();\n const languageId = TokenMetadata.getLanguageId(metadata);\n const tokenType = TokenMetadata.getTokenType(metadata);\n const fontStyle = TokenMetadata.getFontStyle(metadata);\n const foreground = TokenMetadata.getForeground(metadata);\n const background = TokenMetadata.getBackground(metadata);\n return {\n languageId: this._languageService.languageIdCodec.decodeLanguageId(languageId),\n tokenType: tokenType,\n fontStyle: fontStyle,\n foreground: colorMap[foreground],\n background: colorMap[background]\n };\n }\n _tokenTypeToString(tokenType) {\n switch (tokenType) {\n case 0 /* StandardTokenType.Other */: return 'Other';\n case 1 /* StandardTokenType.Comment */: return 'Comment';\n case 2 /* StandardTokenType.String */: return 'String';\n case 3 /* StandardTokenType.RegEx */: return 'RegEx';\n default: return '??';\n }\n }\n _fontStyleToString(fontStyle) {\n let r = '';\n if (fontStyle & 1 /* FontStyle.Italic */) {\n r += 'italic ';\n }\n if (fontStyle & 2 /* FontStyle.Bold */) {\n r += 'bold ';\n }\n if (fontStyle & 4 /* FontStyle.Underline */) {\n r += 'underline ';\n }\n if (fontStyle & 8 /* FontStyle.Strikethrough */) {\n r += 'strikethrough ';\n }\n if (r.length === 0) {\n r = '---';\n }\n return r;\n }\n _getTokensAtLine(lineNumber) {\n const stateBeforeLine = this._getStateBeforeLine(lineNumber);\n const tokenizationResult1 = this._tokenizationSupport.tokenize(this._model.getLineContent(lineNumber), true, stateBeforeLine);\n const tokenizationResult2 = this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(lineNumber), true, stateBeforeLine);\n return {\n startState: stateBeforeLine,\n tokens1: tokenizationResult1.tokens,\n tokens2: tokenizationResult2.tokens,\n endState: tokenizationResult1.endState\n };\n }\n _getStateBeforeLine(lineNumber) {\n let state = this._tokenizationSupport.getInitialState();\n for (let i = 1; i < lineNumber; i++) {\n const tokenizationResult = this._tokenizationSupport.tokenize(this._model.getLineContent(i), true, state);\n state = tokenizationResult.endState;\n }\n return state;\n }\n getDomNode() {\n return this._domNode;\n }\n getPosition() {\n return {\n position: this._editor.getPosition(),\n preference: [2 /* ContentWidgetPositionPreference.BELOW */, 1 /* ContentWidgetPositionPreference.ABOVE */]\n };\n }\n}\nInspectTokensWidget._ID = 'editor.contrib.inspectTokensWidget';\nregisterEditorContribution(InspectTokensController.ID, InspectTokensController);\nregisterEditorAction(InspectTokens);\nregisterThemingParticipant((theme, collector) => {\n const border = theme.getColor(editorHoverBorder);\n if (border) {\n const borderWidth = isHighContrast(theme.type) ? 2 : 1;\n collector.addRule(`.monaco-editor .tokens-inspect-widget { border: ${borderWidth}px solid ${border}; }`);\n collector.addRule(`.monaco-editor .tokens-inspect-widget .tokens-inspect-separator { background-color: ${border}; }`);\n }\n const background = theme.getColor(editorHoverBackground);\n if (background) {\n collector.addRule(`.monaco-editor .tokens-inspect-widget { background-color: ${background}; }`);\n }\n const foreground = theme.getColor(editorHoverForeground);\n if (foreground) {\n collector.addRule(`.monaco-editor .tokens-inspect-widget { color: ${foreground}; }`);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as arrays from './arrays.js';\nimport * as types from './types.js';\nimport * as nls from '../../nls.js';\nfunction exceptionToErrorMessage(exception, verbose) {\n if (verbose && (exception.stack || exception.stacktrace)) {\n return nls.localize('stackTrace.format', \"{0}: {1}\", detectSystemErrorMessage(exception), stackToString(exception.stack) || stackToString(exception.stacktrace));\n }\n return detectSystemErrorMessage(exception);\n}\nfunction stackToString(stack) {\n if (Array.isArray(stack)) {\n return stack.join('\\n');\n }\n return stack;\n}\nfunction detectSystemErrorMessage(exception) {\n // See https://nodejs.org/api/errors.html#errors_class_system_error\n if (typeof exception.code === 'string' && typeof exception.errno === 'number' && typeof exception.syscall === 'string') {\n return nls.localize('nodeExceptionMessage', \"A system error occurred ({0})\", exception.message);\n }\n return exception.message || nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n}\n/**\n * Tries to generate a human readable error message out of the error. If the verbose parameter\n * is set to true, the error message will include stacktrace details if provided.\n *\n * @returns A string containing the error message.\n */\nexport function toErrorMessage(error = null, verbose = false) {\n if (!error) {\n return nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n }\n if (Array.isArray(error)) {\n const errors = arrays.coalesce(error);\n const msg = toErrorMessage(errors[0], verbose);\n if (errors.length > 1) {\n return nls.localize('error.moreErrors', \"{0} ({1} errors in total)\", msg, errors.length);\n }\n return msg;\n }\n if (types.isString(error)) {\n return error;\n }\n if (error.detail) {\n const detail = error.detail;\n if (detail.error) {\n return exceptionToErrorMessage(detail.error, verbose);\n }\n if (detail.exception) {\n return exceptionToErrorMessage(detail.exception, verbose);\n }\n }\n if (error.stack) {\n return exceptionToErrorMessage(error, verbose);\n }\n if (error.message) {\n return error.message;\n }\n return nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { timeout } from '../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\nimport { Disposable, DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\nexport var TriggerAction;\n(function (TriggerAction) {\n /**\n * Do nothing after the button was clicked.\n */\n TriggerAction[TriggerAction[\"NO_ACTION\"] = 0] = \"NO_ACTION\";\n /**\n * Close the picker.\n */\n TriggerAction[TriggerAction[\"CLOSE_PICKER\"] = 1] = \"CLOSE_PICKER\";\n /**\n * Update the results of the picker.\n */\n TriggerAction[TriggerAction[\"REFRESH_PICKER\"] = 2] = \"REFRESH_PICKER\";\n /**\n * Remove the item from the picker.\n */\n TriggerAction[TriggerAction[\"REMOVE_ITEM\"] = 3] = \"REMOVE_ITEM\";\n})(TriggerAction || (TriggerAction = {}));\nfunction isPicksWithActive(obj) {\n const candidate = obj;\n return Array.isArray(candidate.items);\n}\nfunction isFastAndSlowPicks(obj) {\n const candidate = obj;\n return !!candidate.picks && candidate.additionalPicks instanceof Promise;\n}\nexport class PickerQuickAccessProvider extends Disposable {\n constructor(prefix, options) {\n super();\n this.prefix = prefix;\n this.options = options;\n }\n provide(picker, token) {\n var _a;\n const disposables = new DisposableStore();\n // Apply options if any\n picker.canAcceptInBackground = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.canAcceptInBackground);\n // Disable filtering & sorting, we control the results\n picker.matchOnLabel = picker.matchOnDescription = picker.matchOnDetail = picker.sortByLabel = false;\n // Set initial picks and update on type\n let picksCts = undefined;\n const picksDisposable = disposables.add(new MutableDisposable());\n const updatePickerItems = () => __awaiter(this, void 0, void 0, function* () {\n const picksDisposables = picksDisposable.value = new DisposableStore();\n // Cancel any previous ask for picks and busy\n picksCts === null || picksCts === void 0 ? void 0 : picksCts.dispose(true);\n picker.busy = false;\n // Create new cancellation source for this run\n picksCts = new CancellationTokenSource(token);\n // Collect picks and support both long running and short or combined\n const picksToken = picksCts.token;\n const picksFilter = picker.value.substr(this.prefix.length).trim();\n const providedPicks = this._getPicks(picksFilter, picksDisposables, picksToken);\n const applyPicks = (picks, skipEmpty) => {\n var _a;\n let items;\n let activeItem = undefined;\n if (isPicksWithActive(picks)) {\n items = picks.items;\n activeItem = picks.active;\n }\n else {\n items = picks;\n }\n if (items.length === 0) {\n if (skipEmpty) {\n return false;\n }\n if (picksFilter.length > 0 && ((_a = this.options) === null || _a === void 0 ? void 0 : _a.noResultsPick)) {\n items = [this.options.noResultsPick];\n }\n }\n picker.items = items;\n if (activeItem) {\n picker.activeItems = [activeItem];\n }\n return true;\n };\n // No Picks\n if (providedPicks === null) {\n // Ignore\n }\n // Fast and Slow Picks\n else if (isFastAndSlowPicks(providedPicks)) {\n let fastPicksApplied = false;\n let slowPicksApplied = false;\n yield Promise.all([\n // Fast Picks: to reduce amount of flicker, we race against\n // the slow picks over 500ms and then set the fast picks.\n // If the slow picks are faster, we reduce the flicker by\n // only setting the items once.\n (() => __awaiter(this, void 0, void 0, function* () {\n yield timeout(PickerQuickAccessProvider.FAST_PICKS_RACE_DELAY);\n if (picksToken.isCancellationRequested) {\n return;\n }\n if (!slowPicksApplied) {\n fastPicksApplied = applyPicks(providedPicks.picks, true /* skip over empty to reduce flicker */);\n }\n }))(),\n // Slow Picks: we await the slow picks and then set them at\n // once together with the fast picks, but only if we actually\n // have additional results.\n (() => __awaiter(this, void 0, void 0, function* () {\n picker.busy = true;\n try {\n const awaitedAdditionalPicks = yield providedPicks.additionalPicks;\n if (picksToken.isCancellationRequested) {\n return;\n }\n let picks;\n let activePick = undefined;\n if (isPicksWithActive(providedPicks.picks)) {\n picks = providedPicks.picks.items;\n activePick = providedPicks.picks.active;\n }\n else {\n picks = providedPicks.picks;\n }\n let additionalPicks;\n let additionalActivePick = undefined;\n if (isPicksWithActive(awaitedAdditionalPicks)) {\n additionalPicks = awaitedAdditionalPicks.items;\n additionalActivePick = awaitedAdditionalPicks.active;\n }\n else {\n additionalPicks = awaitedAdditionalPicks;\n }\n if (additionalPicks.length > 0 || !fastPicksApplied) {\n // If we do not have any activePick or additionalActivePick\n // we try to preserve the currently active pick from the\n // fast results. This fixes an issue where the user might\n // have made a pick active before the additional results\n // kick in.\n // See https://github.com/microsoft/vscode/issues/102480\n let fallbackActivePick = undefined;\n if (!activePick && !additionalActivePick) {\n const fallbackActivePickCandidate = picker.activeItems[0];\n if (fallbackActivePickCandidate && picks.indexOf(fallbackActivePickCandidate) !== -1) {\n fallbackActivePick = fallbackActivePickCandidate;\n }\n }\n applyPicks({\n items: [...picks, ...additionalPicks],\n active: activePick || additionalActivePick || fallbackActivePick\n });\n }\n }\n finally {\n if (!picksToken.isCancellationRequested) {\n picker.busy = false;\n }\n slowPicksApplied = true;\n }\n }))()\n ]);\n }\n // Fast Picks\n else if (!(providedPicks instanceof Promise)) {\n applyPicks(providedPicks);\n }\n // Slow Picks\n else {\n picker.busy = true;\n try {\n const awaitedPicks = yield providedPicks;\n if (picksToken.isCancellationRequested) {\n return;\n }\n applyPicks(awaitedPicks);\n }\n finally {\n if (!picksToken.isCancellationRequested) {\n picker.busy = false;\n }\n }\n }\n });\n disposables.add(picker.onDidChangeValue(() => updatePickerItems()));\n updatePickerItems();\n // Accept the pick on accept and hide picker\n disposables.add(picker.onDidAccept(event => {\n const [item] = picker.selectedItems;\n if (typeof (item === null || item === void 0 ? void 0 : item.accept) === 'function') {\n if (!event.inBackground) {\n picker.hide(); // hide picker unless we accept in background\n }\n item.accept(picker.keyMods, event);\n }\n }));\n // Trigger the pick with button index if button triggered\n disposables.add(picker.onDidTriggerItemButton(({ button, item }) => __awaiter(this, void 0, void 0, function* () {\n var _b, _c;\n if (typeof item.trigger === 'function') {\n const buttonIndex = (_c = (_b = item.buttons) === null || _b === void 0 ? void 0 : _b.indexOf(button)) !== null && _c !== void 0 ? _c : -1;\n if (buttonIndex >= 0) {\n const result = item.trigger(buttonIndex, picker.keyMods);\n const action = (typeof result === 'number') ? result : yield result;\n if (token.isCancellationRequested) {\n return;\n }\n switch (action) {\n case TriggerAction.NO_ACTION:\n break;\n case TriggerAction.CLOSE_PICKER:\n picker.hide();\n break;\n case TriggerAction.REFRESH_PICKER:\n updatePickerItems();\n break;\n case TriggerAction.REMOVE_ITEM: {\n const index = picker.items.indexOf(item);\n if (index !== -1) {\n const items = picker.items.slice();\n const removed = items.splice(index, 1);\n const activeItems = picker.activeItems.filter(activeItem => activeItem !== removed[0]);\n const keepScrollPositionBefore = picker.keepScrollPosition;\n picker.keepScrollPosition = true;\n picker.items = items;\n if (activeItems) {\n picker.activeItems = activeItems;\n }\n picker.keepScrollPosition = keepScrollPositionBefore;\n }\n break;\n }\n }\n }\n }\n })));\n return disposables;\n }\n}\nPickerQuickAccessProvider.FAST_PICKS_RACE_DELAY = 200; // timeout before we accept fast results before slow results are present\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { toErrorMessage } from '../../../base/common/errorMessage.js';\nimport { isCancellationError } from '../../../base/common/errors.js';\nimport { matchesContiguousSubString, matchesPrefix, matchesWords, or } from '../../../base/common/filters.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { LRUCache } from '../../../base/common/map.js';\nimport Severity from '../../../base/common/severity.js';\nimport { withNullAsUndefined } from '../../../base/common/types.js';\nimport { localize } from '../../../nls.js';\nimport { ICommandService } from '../../commands/common/commands.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { IDialogService } from '../../dialogs/common/dialogs.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { PickerQuickAccessProvider } from './pickerQuickAccess.js';\nimport { IStorageService } from '../../storage/common/storage.js';\nimport { ITelemetryService } from '../../telemetry/common/telemetry.js';\nlet AbstractCommandsQuickAccessProvider = class AbstractCommandsQuickAccessProvider extends PickerQuickAccessProvider {\n constructor(options, instantiationService, keybindingService, commandService, telemetryService, dialogService) {\n super(AbstractCommandsQuickAccessProvider.PREFIX, options);\n this.instantiationService = instantiationService;\n this.keybindingService = keybindingService;\n this.commandService = commandService;\n this.telemetryService = telemetryService;\n this.dialogService = dialogService;\n this.commandsHistory = this._register(this.instantiationService.createInstance(CommandsHistory));\n this.options = options;\n }\n _getPicks(filter, disposables, token) {\n return __awaiter(this, void 0, void 0, function* () {\n // Ask subclass for all command picks\n const allCommandPicks = yield this.getCommandPicks(disposables, token);\n if (token.isCancellationRequested) {\n return [];\n }\n // Filter\n const filteredCommandPicks = [];\n for (const commandPick of allCommandPicks) {\n const labelHighlights = withNullAsUndefined(AbstractCommandsQuickAccessProvider.WORD_FILTER(filter, commandPick.label));\n const aliasHighlights = commandPick.commandAlias ? withNullAsUndefined(AbstractCommandsQuickAccessProvider.WORD_FILTER(filter, commandPick.commandAlias)) : undefined;\n // Add if matching in label or alias\n if (labelHighlights || aliasHighlights) {\n commandPick.highlights = {\n label: labelHighlights,\n detail: this.options.showAlias ? aliasHighlights : undefined\n };\n filteredCommandPicks.push(commandPick);\n }\n // Also add if we have a 100% command ID match\n else if (filter === commandPick.commandId) {\n filteredCommandPicks.push(commandPick);\n }\n }\n // Add description to commands that have duplicate labels\n const mapLabelToCommand = new Map();\n for (const commandPick of filteredCommandPicks) {\n const existingCommandForLabel = mapLabelToCommand.get(commandPick.label);\n if (existingCommandForLabel) {\n commandPick.description = commandPick.commandId;\n existingCommandForLabel.description = existingCommandForLabel.commandId;\n }\n else {\n mapLabelToCommand.set(commandPick.label, commandPick);\n }\n }\n // Sort by MRU order and fallback to name otherwise\n filteredCommandPicks.sort((commandPickA, commandPickB) => {\n const commandACounter = this.commandsHistory.peek(commandPickA.commandId);\n const commandBCounter = this.commandsHistory.peek(commandPickB.commandId);\n if (commandACounter && commandBCounter) {\n return commandACounter > commandBCounter ? -1 : 1; // use more recently used command before older\n }\n if (commandACounter) {\n return -1; // first command was used, so it wins over the non used one\n }\n if (commandBCounter) {\n return 1; // other command was used so it wins over the command\n }\n // both commands were never used, so we sort by name\n return commandPickA.label.localeCompare(commandPickB.label);\n });\n const commandPicks = [];\n let addSeparator = false;\n for (let i = 0; i < filteredCommandPicks.length; i++) {\n const commandPick = filteredCommandPicks[i];\n const keybinding = this.keybindingService.lookupKeybinding(commandPick.commandId);\n const ariaLabel = keybinding ?\n localize('commandPickAriaLabelWithKeybinding', \"{0}, {1}\", commandPick.label, keybinding.getAriaLabel()) :\n commandPick.label;\n // Separator: recently used\n if (i === 0 && this.commandsHistory.peek(commandPick.commandId)) {\n commandPicks.push({ type: 'separator', label: localize('recentlyUsed', \"recently used\") });\n addSeparator = true;\n }\n // Separator: other commands\n if (i !== 0 && addSeparator && !this.commandsHistory.peek(commandPick.commandId)) {\n commandPicks.push({ type: 'separator', label: localize('morecCommands', \"other commands\") });\n addSeparator = false; // only once\n }\n // Command\n commandPicks.push(Object.assign(Object.assign({}, commandPick), { ariaLabel, detail: this.options.showAlias && commandPick.commandAlias !== commandPick.label ? commandPick.commandAlias : undefined, keybinding, accept: () => __awaiter(this, void 0, void 0, function* () {\n // Add to history\n this.commandsHistory.push(commandPick.commandId);\n // Telementry\n this.telemetryService.publicLog2('workbenchActionExecuted', {\n id: commandPick.commandId,\n from: 'quick open'\n });\n // Run\n try {\n yield this.commandService.executeCommand(commandPick.commandId);\n }\n catch (error) {\n if (!isCancellationError(error)) {\n this.dialogService.show(Severity.Error, localize('canNotRun', \"Command '{0}' resulted in an error ({1})\", commandPick.label, toErrorMessage(error)));\n }\n }\n }) }));\n }\n return commandPicks;\n });\n }\n};\nAbstractCommandsQuickAccessProvider.PREFIX = '>';\nAbstractCommandsQuickAccessProvider.WORD_FILTER = or(matchesPrefix, matchesWords, matchesContiguousSubString);\nAbstractCommandsQuickAccessProvider = __decorate([\n __param(1, IInstantiationService),\n __param(2, IKeybindingService),\n __param(3, ICommandService),\n __param(4, ITelemetryService),\n __param(5, IDialogService)\n], AbstractCommandsQuickAccessProvider);\nexport { AbstractCommandsQuickAccessProvider };\nlet CommandsHistory = class CommandsHistory extends Disposable {\n constructor(storageService, configurationService) {\n super();\n this.storageService = storageService;\n this.configurationService = configurationService;\n this.configuredCommandsHistoryLength = 0;\n this.updateConfiguration();\n this.load();\n this.registerListeners();\n }\n registerListeners() {\n this._register(this.configurationService.onDidChangeConfiguration(() => this.updateConfiguration()));\n }\n updateConfiguration() {\n this.configuredCommandsHistoryLength = CommandsHistory.getConfiguredCommandHistoryLength(this.configurationService);\n if (CommandsHistory.cache && CommandsHistory.cache.limit !== this.configuredCommandsHistoryLength) {\n CommandsHistory.cache.limit = this.configuredCommandsHistoryLength;\n CommandsHistory.saveState(this.storageService);\n }\n }\n load() {\n const raw = this.storageService.get(CommandsHistory.PREF_KEY_CACHE, 0 /* StorageScope.PROFILE */);\n let serializedCache;\n if (raw) {\n try {\n serializedCache = JSON.parse(raw);\n }\n catch (error) {\n // invalid data\n }\n }\n const cache = CommandsHistory.cache = new LRUCache(this.configuredCommandsHistoryLength, 1);\n if (serializedCache) {\n let entries;\n if (serializedCache.usesLRU) {\n entries = serializedCache.entries;\n }\n else {\n entries = serializedCache.entries.sort((a, b) => a.value - b.value);\n }\n entries.forEach(entry => cache.set(entry.key, entry.value));\n }\n CommandsHistory.counter = this.storageService.getNumber(CommandsHistory.PREF_KEY_COUNTER, 0 /* StorageScope.PROFILE */, CommandsHistory.counter);\n }\n push(commandId) {\n if (!CommandsHistory.cache) {\n return;\n }\n CommandsHistory.cache.set(commandId, CommandsHistory.counter++); // set counter to command\n CommandsHistory.saveState(this.storageService);\n }\n peek(commandId) {\n var _a;\n return (_a = CommandsHistory.cache) === null || _a === void 0 ? void 0 : _a.peek(commandId);\n }\n static saveState(storageService) {\n if (!CommandsHistory.cache) {\n return;\n }\n const serializedCache = { usesLRU: true, entries: [] };\n CommandsHistory.cache.forEach((value, key) => serializedCache.entries.push({ key, value }));\n storageService.store(CommandsHistory.PREF_KEY_CACHE, JSON.stringify(serializedCache), 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n storageService.store(CommandsHistory.PREF_KEY_COUNTER, CommandsHistory.counter, 0 /* StorageScope.PROFILE */, 0 /* StorageTarget.USER */);\n }\n static getConfiguredCommandHistoryLength(configurationService) {\n var _a, _b;\n const config = configurationService.getValue();\n const configuredCommandHistoryLength = (_b = (_a = config.workbench) === null || _a === void 0 ? void 0 : _a.commandPalette) === null || _b === void 0 ? void 0 : _b.history;\n if (typeof configuredCommandHistoryLength === 'number') {\n return configuredCommandHistoryLength;\n }\n return CommandsHistory.DEFAULT_COMMANDS_HISTORY_LENGTH;\n }\n};\nCommandsHistory.DEFAULT_COMMANDS_HISTORY_LENGTH = 50;\nCommandsHistory.PREF_KEY_CACHE = 'commandPalette.mru.cache';\nCommandsHistory.PREF_KEY_COUNTER = 'commandPalette.mru.counter';\nCommandsHistory.counter = 1;\nCommandsHistory = __decorate([\n __param(0, IStorageService),\n __param(1, IConfigurationService)\n], CommandsHistory);\nexport { CommandsHistory };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { stripIcons } from '../../../../base/common/iconLabels.js';\nimport { AbstractCommandsQuickAccessProvider } from '../../../../platform/quickinput/browser/commandsQuickAccess.js';\nexport class AbstractEditorCommandsQuickAccessProvider extends AbstractCommandsQuickAccessProvider {\n constructor(options, instantiationService, keybindingService, commandService, telemetryService, dialogService) {\n super(options, instantiationService, keybindingService, commandService, telemetryService, dialogService);\n }\n getCodeEditorCommandPicks() {\n const activeTextEditorControl = this.activeTextEditorControl;\n if (!activeTextEditorControl) {\n return [];\n }\n const editorCommandPicks = [];\n for (const editorAction of activeTextEditorControl.getSupportedActions()) {\n editorCommandPicks.push({\n commandId: editorAction.id,\n commandAlias: editorAction.alias,\n label: stripIcons(editorAction.label) || editorAction.id,\n });\n }\n return editorCommandPicks;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { QuickCommandNLS } from '../../../common/standaloneStrings.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { AbstractEditorCommandsQuickAccessProvider } from '../../../contrib/quickAccess/browser/commandsQuickAccess.js';\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nlet StandaloneCommandsQuickAccessProvider = class StandaloneCommandsQuickAccessProvider extends AbstractEditorCommandsQuickAccessProvider {\n constructor(instantiationService, codeEditorService, keybindingService, commandService, telemetryService, dialogService) {\n super({ showAlias: false }, instantiationService, keybindingService, commandService, telemetryService, dialogService);\n this.codeEditorService = codeEditorService;\n }\n get activeTextEditorControl() { return withNullAsUndefined(this.codeEditorService.getFocusedCodeEditor()); }\n getCommandPicks() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.getCodeEditorCommandPicks();\n });\n }\n};\nStandaloneCommandsQuickAccessProvider = __decorate([\n __param(0, IInstantiationService),\n __param(1, ICodeEditorService),\n __param(2, IKeybindingService),\n __param(3, ICommandService),\n __param(4, ITelemetryService),\n __param(5, IDialogService)\n], StandaloneCommandsQuickAccessProvider);\nexport { StandaloneCommandsQuickAccessProvider };\nexport class GotoLineAction extends EditorAction {\n constructor() {\n super({\n id: GotoLineAction.ID,\n label: QuickCommandNLS.quickCommandActionLabel,\n alias: 'Command Palette',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 59 /* KeyCode.F1 */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: 'z_commands',\n order: 1\n }\n });\n }\n run(accessor) {\n accessor.get(IQuickInputService).quickAccess.show(StandaloneCommandsQuickAccessProvider.PREFIX);\n }\n}\nGotoLineAction.ID = 'editor.action.quickCommand';\nregisterEditorAction(GotoLineAction);\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n ctor: StandaloneCommandsQuickAccessProvider,\n prefix: StandaloneCommandsQuickAccessProvider.PREFIX,\n helpEntries: [{ description: QuickCommandNLS.quickCommandHelp, commandId: GotoLineAction.ID }]\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { getCodeEditor } from '../../../browser/editorBrowser.js';\nimport { AbstractEditorNavigationQuickAccessProvider } from './editorNavigationQuickAccess.js';\nimport { localize } from '../../../../nls.js';\nexport class AbstractGotoLineQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider {\n constructor() {\n super({ canAcceptInBackground: true });\n }\n provideWithoutTextEditor(picker) {\n const label = localize('cannotRunGotoLine', \"Open a text editor first to go to a line.\");\n picker.items = [{ label }];\n picker.ariaLabel = label;\n return Disposable.None;\n }\n provideWithTextEditor(context, picker, token) {\n const editor = context.editor;\n const disposables = new DisposableStore();\n // Goto line once picked\n disposables.add(picker.onDidAccept(event => {\n const [item] = picker.selectedItems;\n if (item) {\n if (!this.isValidLineNumber(editor, item.lineNumber)) {\n return;\n }\n this.gotoLocation(context, { range: this.toRange(item.lineNumber, item.column), keyMods: picker.keyMods, preserveFocus: event.inBackground });\n if (!event.inBackground) {\n picker.hide();\n }\n }\n }));\n // React to picker changes\n const updatePickerAndEditor = () => {\n const position = this.parsePosition(editor, picker.value.trim().substr(AbstractGotoLineQuickAccessProvider.PREFIX.length));\n const label = this.getPickLabel(editor, position.lineNumber, position.column);\n // Picker\n picker.items = [{\n lineNumber: position.lineNumber,\n column: position.column,\n label\n }];\n // ARIA Label\n picker.ariaLabel = label;\n // Clear decorations for invalid range\n if (!this.isValidLineNumber(editor, position.lineNumber)) {\n this.clearDecorations(editor);\n return;\n }\n // Reveal\n const range = this.toRange(position.lineNumber, position.column);\n editor.revealRangeInCenter(range, 0 /* ScrollType.Smooth */);\n // Decorate\n this.addDecorations(editor, range);\n };\n updatePickerAndEditor();\n disposables.add(picker.onDidChangeValue(() => updatePickerAndEditor()));\n // Adjust line number visibility as needed\n const codeEditor = getCodeEditor(editor);\n if (codeEditor) {\n const options = codeEditor.getOptions();\n const lineNumbers = options.get(62 /* EditorOption.lineNumbers */);\n if (lineNumbers.renderType === 2 /* RenderLineNumbersType.Relative */) {\n codeEditor.updateOptions({ lineNumbers: 'on' });\n disposables.add(toDisposable(() => codeEditor.updateOptions({ lineNumbers: 'relative' })));\n }\n }\n return disposables;\n }\n toRange(lineNumber = 1, column = 1) {\n return {\n startLineNumber: lineNumber,\n startColumn: column,\n endLineNumber: lineNumber,\n endColumn: column\n };\n }\n parsePosition(editor, value) {\n // Support line-col formats of `line,col`, `line:col`, `line#col`\n const numbers = value.split(/,|:|#/).map(part => parseInt(part, 10)).filter(part => !isNaN(part));\n const endLine = this.lineCount(editor) + 1;\n return {\n lineNumber: numbers[0] > 0 ? numbers[0] : endLine + numbers[0],\n column: numbers[1]\n };\n }\n getPickLabel(editor, lineNumber, column) {\n // Location valid: indicate this as picker label\n if (this.isValidLineNumber(editor, lineNumber)) {\n if (this.isValidColumn(editor, lineNumber, column)) {\n return localize('gotoLineColumnLabel', \"Go to line {0} and character {1}.\", lineNumber, column);\n }\n return localize('gotoLineLabel', \"Go to line {0}.\", lineNumber);\n }\n // Location invalid: show generic label\n const position = editor.getPosition() || { lineNumber: 1, column: 1 };\n const lineCount = this.lineCount(editor);\n if (lineCount > 1) {\n return localize('gotoLineLabelEmptyWithLimit', \"Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.\", position.lineNumber, position.column, lineCount);\n }\n return localize('gotoLineLabelEmpty', \"Current Line: {0}, Character: {1}. Type a line number to navigate to.\", position.lineNumber, position.column);\n }\n isValidLineNumber(editor, lineNumber) {\n if (!lineNumber || typeof lineNumber !== 'number') {\n return false;\n }\n return lineNumber > 0 && lineNumber <= this.lineCount(editor);\n }\n isValidColumn(editor, lineNumber, column) {\n if (!column || typeof column !== 'number') {\n return false;\n }\n const model = this.getModel(editor);\n if (!model) {\n return false;\n }\n const positionCandidate = { lineNumber, column };\n return model.validatePosition(positionCandidate).equals(positionCandidate);\n }\n lineCount(editor) {\n var _a, _b;\n return (_b = (_a = this.getModel(editor)) === null || _a === void 0 ? void 0 : _a.getLineCount()) !== null && _b !== void 0 ? _b : 0;\n }\n}\nAbstractGotoLineQuickAccessProvider.PREFIX = ':';\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { AbstractGotoLineQuickAccessProvider } from '../../../contrib/quickAccess/browser/gotoLineQuickAccess.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\nimport { GoToLineNLS } from '../../../common/standaloneStrings.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nlet StandaloneGotoLineQuickAccessProvider = class StandaloneGotoLineQuickAccessProvider extends AbstractGotoLineQuickAccessProvider {\n constructor(editorService) {\n super();\n this.editorService = editorService;\n this.onDidActiveTextEditorControlChange = Event.None;\n }\n get activeTextEditorControl() {\n return withNullAsUndefined(this.editorService.getFocusedCodeEditor());\n }\n};\nStandaloneGotoLineQuickAccessProvider = __decorate([\n __param(0, ICodeEditorService)\n], StandaloneGotoLineQuickAccessProvider);\nexport { StandaloneGotoLineQuickAccessProvider };\nexport class GotoLineAction extends EditorAction {\n constructor() {\n super({\n id: GotoLineAction.ID,\n label: GoToLineNLS.gotoLineActionLabel,\n alias: 'Go to Line/Column...',\n precondition: undefined,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 37 /* KeyCode.KeyG */,\n mac: { primary: 256 /* KeyMod.WinCtrl */ | 37 /* KeyCode.KeyG */ },\n weight: 100 /* KeybindingWeight.EditorContrib */\n }\n });\n }\n run(accessor) {\n accessor.get(IQuickInputService).quickAccess.show(StandaloneGotoLineQuickAccessProvider.PREFIX);\n }\n}\nGotoLineAction.ID = 'editor.action.gotoLine';\nregisterEditorAction(GotoLineAction);\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n ctor: StandaloneGotoLineQuickAccessProvider,\n prefix: StandaloneGotoLineQuickAccessProvider.PREFIX,\n helpEntries: [{ description: GoToLineNLS.gotoLineActionLabel, commandId: GotoLineAction.ID }]\n});\n","import { createMatches as createFuzzyMatches, fuzzyScore } from './filters.js';\nimport { sep } from './path.js';\nimport { isWindows } from './platform.js';\nimport { stripWildcards } from './strings.js';\nconst NO_SCORE2 = [undefined, []];\nexport function scoreFuzzy2(target, query, patternStart = 0, wordStart = 0) {\n // Score: multiple inputs\n const preparedQuery = query;\n if (preparedQuery.values && preparedQuery.values.length > 1) {\n return doScoreFuzzy2Multiple(target, preparedQuery.values, patternStart, wordStart);\n }\n // Score: single input\n return doScoreFuzzy2Single(target, query, patternStart, wordStart);\n}\nfunction doScoreFuzzy2Multiple(target, query, patternStart, wordStart) {\n let totalScore = 0;\n const totalMatches = [];\n for (const queryPiece of query) {\n const [score, matches] = doScoreFuzzy2Single(target, queryPiece, patternStart, wordStart);\n if (typeof score !== 'number') {\n // if a single query value does not match, return with\n // no score entirely, we require all queries to match\n return NO_SCORE2;\n }\n totalScore += score;\n totalMatches.push(...matches);\n }\n // if we have a score, ensure that the positions are\n // sorted in ascending order and distinct\n return [totalScore, normalizeMatches(totalMatches)];\n}\nfunction doScoreFuzzy2Single(target, query, patternStart, wordStart) {\n const score = fuzzyScore(query.original, query.originalLowercase, patternStart, target, target.toLowerCase(), wordStart, { firstMatchCanBeWeak: true, boostFullMatch: true });\n if (!score) {\n return NO_SCORE2;\n }\n return [score[0], createFuzzyMatches(score)];\n}\nconst NO_ITEM_SCORE = Object.freeze({ score: 0 });\nfunction normalizeMatches(matches) {\n // sort matches by start to be able to normalize\n const sortedMatches = matches.sort((matchA, matchB) => {\n return matchA.start - matchB.start;\n });\n // merge matches that overlap\n const normalizedMatches = [];\n let currentMatch = undefined;\n for (const match of sortedMatches) {\n // if we have no current match or the matches\n // do not overlap, we take it as is and remember\n // it for future merging\n if (!currentMatch || !matchOverlaps(currentMatch, match)) {\n currentMatch = match;\n normalizedMatches.push(match);\n }\n // otherwise we merge the matches\n else {\n currentMatch.start = Math.min(currentMatch.start, match.start);\n currentMatch.end = Math.max(currentMatch.end, match.end);\n }\n }\n return normalizedMatches;\n}\nfunction matchOverlaps(matchA, matchB) {\n if (matchA.end < matchB.start) {\n return false; // A ends before B starts\n }\n if (matchB.end < matchA.start) {\n return false; // B ends before A starts\n }\n return true;\n}\n/*\n * If a query is wrapped in quotes, the user does not want to\n * use fuzzy search for this query.\n */\nfunction queryExpectsExactMatch(query) {\n return query.startsWith('\"') && query.endsWith('\"');\n}\n/**\n * Helper function to prepare a search value for scoring by removing unwanted characters\n * and allowing to score on multiple pieces separated by whitespace character.\n */\nconst MULTIPLE_QUERY_VALUES_SEPARATOR = ' ';\nexport function prepareQuery(original) {\n if (typeof original !== 'string') {\n original = '';\n }\n const originalLowercase = original.toLowerCase();\n const { pathNormalized, normalized, normalizedLowercase } = normalizeQuery(original);\n const containsPathSeparator = pathNormalized.indexOf(sep) >= 0;\n const expectExactMatch = queryExpectsExactMatch(original);\n let values = undefined;\n const originalSplit = original.split(MULTIPLE_QUERY_VALUES_SEPARATOR);\n if (originalSplit.length > 1) {\n for (const originalPiece of originalSplit) {\n const expectExactMatchPiece = queryExpectsExactMatch(originalPiece);\n const { pathNormalized: pathNormalizedPiece, normalized: normalizedPiece, normalizedLowercase: normalizedLowercasePiece } = normalizeQuery(originalPiece);\n if (normalizedPiece) {\n if (!values) {\n values = [];\n }\n values.push({\n original: originalPiece,\n originalLowercase: originalPiece.toLowerCase(),\n pathNormalized: pathNormalizedPiece,\n normalized: normalizedPiece,\n normalizedLowercase: normalizedLowercasePiece,\n expectContiguousMatch: expectExactMatchPiece\n });\n }\n }\n }\n return { original, originalLowercase, pathNormalized, normalized, normalizedLowercase, values, containsPathSeparator, expectContiguousMatch: expectExactMatch };\n}\nfunction normalizeQuery(original) {\n let pathNormalized;\n if (isWindows) {\n pathNormalized = original.replace(/\\//g, sep); // Help Windows users to search for paths when using slash\n }\n else {\n pathNormalized = original.replace(/\\\\/g, sep); // Help macOS/Linux users to search for paths when using backslash\n }\n // we remove quotes here because quotes are used for exact match search\n const normalized = stripWildcards(pathNormalized).replace(/\\s|\"/g, '');\n return {\n pathNormalized,\n normalized,\n normalizedLowercase: normalized.toLowerCase()\n };\n}\nexport function pieceToQuery(arg1) {\n if (Array.isArray(arg1)) {\n return prepareQuery(arg1.map(piece => piece.original).join(MULTIPLE_QUERY_VALUES_SEPARATOR));\n }\n return prepareQuery(arg1.original);\n}\n//#endregion\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { DeferredPromise } from '../../../../base/common/async.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { pieceToQuery, prepareQuery, scoreFuzzy2 } from '../../../../base/common/fuzzyScorer.js';\nimport { Disposable, DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { format, trim } from '../../../../base/common/strings.js';\nimport { Range } from '../../../common/core/range.js';\nimport { SymbolKinds } from '../../../common/languages.js';\nimport { IOutlineModelService } from '../../documentSymbols/browser/outlineModel.js';\nimport { AbstractEditorNavigationQuickAccessProvider } from './editorNavigationQuickAccess.js';\nimport { localize } from '../../../../nls.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { findLast } from '../../../../base/common/arrays.js';\nlet AbstractGotoSymbolQuickAccessProvider = class AbstractGotoSymbolQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider {\n constructor(_languageFeaturesService, _outlineModelService, options = Object.create(null)) {\n super(options);\n this._languageFeaturesService = _languageFeaturesService;\n this._outlineModelService = _outlineModelService;\n this.options = options;\n this.options.canAcceptInBackground = true;\n }\n provideWithoutTextEditor(picker) {\n this.provideLabelPick(picker, localize('cannotRunGotoSymbolWithoutEditor', \"To go to a symbol, first open a text editor with symbol information.\"));\n return Disposable.None;\n }\n provideWithTextEditor(context, picker, token) {\n const editor = context.editor;\n const model = this.getModel(editor);\n if (!model) {\n return Disposable.None;\n }\n // Provide symbols from model if available in registry\n if (this._languageFeaturesService.documentSymbolProvider.has(model)) {\n return this.doProvideWithEditorSymbols(context, model, picker, token);\n }\n // Otherwise show an entry for a model without registry\n // But give a chance to resolve the symbols at a later\n // point if possible\n return this.doProvideWithoutEditorSymbols(context, model, picker, token);\n }\n doProvideWithoutEditorSymbols(context, model, picker, token) {\n const disposables = new DisposableStore();\n // Generic pick for not having any symbol information\n this.provideLabelPick(picker, localize('cannotRunGotoSymbolWithoutSymbolProvider', \"The active text editor does not provide symbol information.\"));\n // Wait for changes to the registry and see if eventually\n // we do get symbols. This can happen if the picker is opened\n // very early after the model has loaded but before the\n // language registry is ready.\n // https://github.com/microsoft/vscode/issues/70607\n (() => __awaiter(this, void 0, void 0, function* () {\n const result = yield this.waitForLanguageSymbolRegistry(model, disposables);\n if (!result || token.isCancellationRequested) {\n return;\n }\n disposables.add(this.doProvideWithEditorSymbols(context, model, picker, token));\n }))();\n return disposables;\n }\n provideLabelPick(picker, label) {\n picker.items = [{ label, index: 0, kind: 14 /* SymbolKind.String */ }];\n picker.ariaLabel = label;\n }\n waitForLanguageSymbolRegistry(model, disposables) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._languageFeaturesService.documentSymbolProvider.has(model)) {\n return true;\n }\n const symbolProviderRegistryPromise = new DeferredPromise();\n // Resolve promise when registry knows model\n const symbolProviderListener = disposables.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(() => {\n if (this._languageFeaturesService.documentSymbolProvider.has(model)) {\n symbolProviderListener.dispose();\n symbolProviderRegistryPromise.complete(true);\n }\n }));\n // Resolve promise when we get disposed too\n disposables.add(toDisposable(() => symbolProviderRegistryPromise.complete(false)));\n return symbolProviderRegistryPromise.p;\n });\n }\n doProvideWithEditorSymbols(context, model, picker, token) {\n var _a;\n const editor = context.editor;\n const disposables = new DisposableStore();\n // Goto symbol once picked\n disposables.add(picker.onDidAccept(event => {\n const [item] = picker.selectedItems;\n if (item && item.range) {\n this.gotoLocation(context, { range: item.range.selection, keyMods: picker.keyMods, preserveFocus: event.inBackground });\n if (!event.inBackground) {\n picker.hide();\n }\n }\n }));\n // Goto symbol side by side if enabled\n disposables.add(picker.onDidTriggerItemButton(({ item }) => {\n if (item && item.range) {\n this.gotoLocation(context, { range: item.range.selection, keyMods: picker.keyMods, forceSideBySide: true });\n picker.hide();\n }\n }));\n // Resolve symbols from document once and reuse this\n // request for all filtering and typing then on\n const symbolsPromise = this.getDocumentSymbols(model, token);\n // Set initial picks and update on type\n let picksCts = undefined;\n const updatePickerItems = (positionToEnclose) => __awaiter(this, void 0, void 0, function* () {\n // Cancel any previous ask for picks and busy\n picksCts === null || picksCts === void 0 ? void 0 : picksCts.dispose(true);\n picker.busy = false;\n // Create new cancellation source for this run\n picksCts = new CancellationTokenSource(token);\n // Collect symbol picks\n picker.busy = true;\n try {\n const query = prepareQuery(picker.value.substr(AbstractGotoSymbolQuickAccessProvider.PREFIX.length).trim());\n const items = yield this.doGetSymbolPicks(symbolsPromise, query, undefined, picksCts.token);\n if (token.isCancellationRequested) {\n return;\n }\n if (items.length > 0) {\n picker.items = items;\n if (positionToEnclose && query.original.length === 0) {\n const candidate = findLast(items, item => Boolean(item.type !== 'separator' && item.range && Range.containsPosition(item.range.decoration, positionToEnclose)));\n if (candidate) {\n picker.activeItems = [candidate];\n }\n }\n }\n else {\n if (query.original.length > 0) {\n this.provideLabelPick(picker, localize('noMatchingSymbolResults', \"No matching editor symbols\"));\n }\n else {\n this.provideLabelPick(picker, localize('noSymbolResults', \"No editor symbols\"));\n }\n }\n }\n finally {\n if (!token.isCancellationRequested) {\n picker.busy = false;\n }\n }\n });\n disposables.add(picker.onDidChangeValue(() => updatePickerItems(undefined)));\n updatePickerItems((_a = editor.getSelection()) === null || _a === void 0 ? void 0 : _a.getPosition());\n // Reveal and decorate when active item changes\n // However, ignore the very first two events so that\n // opening the picker is not immediately revealing\n // and decorating the first entry.\n let ignoreFirstActiveEvent = 2;\n disposables.add(picker.onDidChangeActive(() => {\n const [item] = picker.activeItems;\n if (item && item.range) {\n if (ignoreFirstActiveEvent-- > 0) {\n return;\n }\n // Reveal\n editor.revealRangeInCenter(item.range.selection, 0 /* ScrollType.Smooth */);\n // Decorate\n this.addDecorations(editor, item.range.decoration);\n }\n }));\n return disposables;\n }\n doGetSymbolPicks(symbolsPromise, query, options, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const symbols = yield symbolsPromise;\n if (token.isCancellationRequested) {\n return [];\n }\n const filterBySymbolKind = query.original.indexOf(AbstractGotoSymbolQuickAccessProvider.SCOPE_PREFIX) === 0;\n const filterPos = filterBySymbolKind ? 1 : 0;\n // Split between symbol and container query\n let symbolQuery;\n let containerQuery;\n if (query.values && query.values.length > 1) {\n symbolQuery = pieceToQuery(query.values[0]); // symbol: only match on first part\n containerQuery = pieceToQuery(query.values.slice(1)); // container: match on all but first parts\n }\n else {\n symbolQuery = query;\n }\n // Convert to symbol picks and apply filtering\n const filteredSymbolPicks = [];\n for (let index = 0; index < symbols.length; index++) {\n const symbol = symbols[index];\n const symbolLabel = trim(symbol.name);\n const symbolLabelWithIcon = `$(${SymbolKinds.toIcon(symbol.kind).id}) ${symbolLabel}`;\n const symbolLabelIconOffset = symbolLabelWithIcon.length - symbolLabel.length;\n let containerLabel = symbol.containerName;\n if (options === null || options === void 0 ? void 0 : options.extraContainerLabel) {\n if (containerLabel) {\n containerLabel = `${options.extraContainerLabel} • ${containerLabel}`;\n }\n else {\n containerLabel = options.extraContainerLabel;\n }\n }\n let symbolScore = undefined;\n let symbolMatches = undefined;\n let containerScore = undefined;\n let containerMatches = undefined;\n if (query.original.length > filterPos) {\n // First: try to score on the entire query, it is possible that\n // the symbol matches perfectly (e.g. searching for \"change log\"\n // can be a match on a markdown symbol \"change log\"). In that\n // case we want to skip the container query altogether.\n let skipContainerQuery = false;\n if (symbolQuery !== query) {\n [symbolScore, symbolMatches] = scoreFuzzy2(symbolLabelWithIcon, Object.assign(Object.assign({}, query), { values: undefined /* disable multi-query support */ }), filterPos, symbolLabelIconOffset);\n if (typeof symbolScore === 'number') {\n skipContainerQuery = true; // since we consumed the query, skip any container matching\n }\n }\n // Otherwise: score on the symbol query and match on the container later\n if (typeof symbolScore !== 'number') {\n [symbolScore, symbolMatches] = scoreFuzzy2(symbolLabelWithIcon, symbolQuery, filterPos, symbolLabelIconOffset);\n if (typeof symbolScore !== 'number') {\n continue;\n }\n }\n // Score by container if specified\n if (!skipContainerQuery && containerQuery) {\n if (containerLabel && containerQuery.original.length > 0) {\n [containerScore, containerMatches] = scoreFuzzy2(containerLabel, containerQuery);\n }\n if (typeof containerScore !== 'number') {\n continue;\n }\n if (typeof symbolScore === 'number') {\n symbolScore += containerScore; // boost symbolScore by containerScore\n }\n }\n }\n const deprecated = symbol.tags && symbol.tags.indexOf(1 /* SymbolTag.Deprecated */) >= 0;\n filteredSymbolPicks.push({\n index,\n kind: symbol.kind,\n score: symbolScore,\n label: symbolLabelWithIcon,\n ariaLabel: symbolLabel,\n description: containerLabel,\n highlights: deprecated ? undefined : {\n label: symbolMatches,\n description: containerMatches\n },\n range: {\n selection: Range.collapseToStart(symbol.selectionRange),\n decoration: symbol.range\n },\n strikethrough: deprecated,\n buttons: (() => {\n var _a, _b;\n const openSideBySideDirection = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.openSideBySideDirection) ? (_b = this.options) === null || _b === void 0 ? void 0 : _b.openSideBySideDirection() : undefined;\n if (!openSideBySideDirection) {\n return undefined;\n }\n return [\n {\n iconClass: openSideBySideDirection === 'right' ? Codicon.splitHorizontal.classNames : Codicon.splitVertical.classNames,\n tooltip: openSideBySideDirection === 'right' ? localize('openToSide', \"Open to the Side\") : localize('openToBottom', \"Open to the Bottom\")\n }\n ];\n })()\n });\n }\n // Sort by score\n const sortedFilteredSymbolPicks = filteredSymbolPicks.sort((symbolA, symbolB) => filterBySymbolKind ?\n this.compareByKindAndScore(symbolA, symbolB) :\n this.compareByScore(symbolA, symbolB));\n // Add separator for types\n // - @ only total number of symbols\n // - @: grouped by symbol kind\n let symbolPicks = [];\n if (filterBySymbolKind) {\n let lastSymbolKind = undefined;\n let lastSeparator = undefined;\n let lastSymbolKindCounter = 0;\n function updateLastSeparatorLabel() {\n if (lastSeparator && typeof lastSymbolKind === 'number' && lastSymbolKindCounter > 0) {\n lastSeparator.label = format(NLS_SYMBOL_KIND_CACHE[lastSymbolKind] || FALLBACK_NLS_SYMBOL_KIND, lastSymbolKindCounter);\n }\n }\n for (const symbolPick of sortedFilteredSymbolPicks) {\n // Found new kind\n if (lastSymbolKind !== symbolPick.kind) {\n // Update last separator with number of symbols we found for kind\n updateLastSeparatorLabel();\n lastSymbolKind = symbolPick.kind;\n lastSymbolKindCounter = 1;\n // Add new separator for new kind\n lastSeparator = { type: 'separator' };\n symbolPicks.push(lastSeparator);\n }\n // Existing kind, keep counting\n else {\n lastSymbolKindCounter++;\n }\n // Add to final result\n symbolPicks.push(symbolPick);\n }\n // Update last separator with number of symbols we found for kind\n updateLastSeparatorLabel();\n }\n else if (sortedFilteredSymbolPicks.length > 0) {\n symbolPicks = [\n { label: localize('symbols', \"symbols ({0})\", filteredSymbolPicks.length), type: 'separator' },\n ...sortedFilteredSymbolPicks\n ];\n }\n return symbolPicks;\n });\n }\n compareByScore(symbolA, symbolB) {\n if (typeof symbolA.score !== 'number' && typeof symbolB.score === 'number') {\n return 1;\n }\n else if (typeof symbolA.score === 'number' && typeof symbolB.score !== 'number') {\n return -1;\n }\n if (typeof symbolA.score === 'number' && typeof symbolB.score === 'number') {\n if (symbolA.score > symbolB.score) {\n return -1;\n }\n else if (symbolA.score < symbolB.score) {\n return 1;\n }\n }\n if (symbolA.index < symbolB.index) {\n return -1;\n }\n else if (symbolA.index > symbolB.index) {\n return 1;\n }\n return 0;\n }\n compareByKindAndScore(symbolA, symbolB) {\n const kindA = NLS_SYMBOL_KIND_CACHE[symbolA.kind] || FALLBACK_NLS_SYMBOL_KIND;\n const kindB = NLS_SYMBOL_KIND_CACHE[symbolB.kind] || FALLBACK_NLS_SYMBOL_KIND;\n // Sort by type first if scoped search\n const result = kindA.localeCompare(kindB);\n if (result === 0) {\n return this.compareByScore(symbolA, symbolB);\n }\n return result;\n }\n getDocumentSymbols(document, token) {\n return __awaiter(this, void 0, void 0, function* () {\n const model = yield this._outlineModelService.getOrCreate(document, token);\n return token.isCancellationRequested ? [] : model.asListOfDocumentSymbols();\n });\n }\n};\nAbstractGotoSymbolQuickAccessProvider.PREFIX = '@';\nAbstractGotoSymbolQuickAccessProvider.SCOPE_PREFIX = ':';\nAbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY = `${AbstractGotoSymbolQuickAccessProvider.PREFIX}${AbstractGotoSymbolQuickAccessProvider.SCOPE_PREFIX}`;\nAbstractGotoSymbolQuickAccessProvider = __decorate([\n __param(0, ILanguageFeaturesService),\n __param(1, IOutlineModelService)\n], AbstractGotoSymbolQuickAccessProvider);\nexport { AbstractGotoSymbolQuickAccessProvider };\n// #region NLS Helpers\nconst FALLBACK_NLS_SYMBOL_KIND = localize('property', \"properties ({0})\");\nconst NLS_SYMBOL_KIND_CACHE = {\n [5 /* SymbolKind.Method */]: localize('method', \"methods ({0})\"),\n [11 /* SymbolKind.Function */]: localize('function', \"functions ({0})\"),\n [8 /* SymbolKind.Constructor */]: localize('_constructor', \"constructors ({0})\"),\n [12 /* SymbolKind.Variable */]: localize('variable', \"variables ({0})\"),\n [4 /* SymbolKind.Class */]: localize('class', \"classes ({0})\"),\n [22 /* SymbolKind.Struct */]: localize('struct', \"structs ({0})\"),\n [23 /* SymbolKind.Event */]: localize('event', \"events ({0})\"),\n [24 /* SymbolKind.Operator */]: localize('operator', \"operators ({0})\"),\n [10 /* SymbolKind.Interface */]: localize('interface', \"interfaces ({0})\"),\n [2 /* SymbolKind.Namespace */]: localize('namespace', \"namespaces ({0})\"),\n [3 /* SymbolKind.Package */]: localize('package', \"packages ({0})\"),\n [25 /* SymbolKind.TypeParameter */]: localize('typeParameter', \"type parameters ({0})\"),\n [1 /* SymbolKind.Module */]: localize('modules', \"modules ({0})\"),\n [6 /* SymbolKind.Property */]: localize('property', \"properties ({0})\"),\n [9 /* SymbolKind.Enum */]: localize('enum', \"enumerations ({0})\"),\n [21 /* SymbolKind.EnumMember */]: localize('enumMember', \"enumeration members ({0})\"),\n [14 /* SymbolKind.String */]: localize('string', \"strings ({0})\"),\n [0 /* SymbolKind.File */]: localize('file', \"files ({0})\"),\n [17 /* SymbolKind.Array */]: localize('array', \"arrays ({0})\"),\n [15 /* SymbolKind.Number */]: localize('number', \"numbers ({0})\"),\n [16 /* SymbolKind.Boolean */]: localize('boolean', \"booleans ({0})\"),\n [18 /* SymbolKind.Object */]: localize('object', \"objects ({0})\"),\n [19 /* SymbolKind.Key */]: localize('key', \"keys ({0})\"),\n [7 /* SymbolKind.Field */]: localize('field', \"fields ({0})\"),\n [13 /* SymbolKind.Constant */]: localize('constant', \"constants ({0})\")\n};\n//#endregion\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\nimport '../../../contrib/symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors\nimport { AbstractGotoSymbolQuickAccessProvider } from '../../../contrib/quickAccess/browser/gotoSymbolQuickAccess.js';\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\nimport { QuickOutlineNLS } from '../../../common/standaloneStrings.js';\nimport { Event } from '../../../../base/common/event.js';\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { IOutlineModelService } from '../../../contrib/documentSymbols/browser/outlineModel.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nlet StandaloneGotoSymbolQuickAccessProvider = class StandaloneGotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccessProvider {\n constructor(editorService, languageFeaturesService, outlineModelService) {\n super(languageFeaturesService, outlineModelService);\n this.editorService = editorService;\n this.onDidActiveTextEditorControlChange = Event.None;\n }\n get activeTextEditorControl() {\n return withNullAsUndefined(this.editorService.getFocusedCodeEditor());\n }\n};\nStandaloneGotoSymbolQuickAccessProvider = __decorate([\n __param(0, ICodeEditorService),\n __param(1, ILanguageFeaturesService),\n __param(2, IOutlineModelService)\n], StandaloneGotoSymbolQuickAccessProvider);\nexport { StandaloneGotoSymbolQuickAccessProvider };\nexport class GotoSymbolAction extends EditorAction {\n constructor() {\n super({\n id: GotoSymbolAction.ID,\n label: QuickOutlineNLS.quickOutlineActionLabel,\n alias: 'Go to Symbol...',\n precondition: EditorContextKeys.hasDocumentSymbolProvider,\n kbOpts: {\n kbExpr: EditorContextKeys.focus,\n primary: 2048 /* KeyMod.CtrlCmd */ | 1024 /* KeyMod.Shift */ | 45 /* KeyCode.KeyO */,\n weight: 100 /* KeybindingWeight.EditorContrib */\n },\n contextMenuOpts: {\n group: 'navigation',\n order: 3\n }\n });\n }\n run(accessor) {\n accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX);\n }\n}\nGotoSymbolAction.ID = 'editor.action.quickOutline';\nregisterEditorAction(GotoSymbolAction);\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n ctor: StandaloneGotoSymbolQuickAccessProvider,\n prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX,\n helpEntries: [\n { description: QuickOutlineNLS.quickOutlineActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX, commandId: GotoSymbolAction.ID },\n { description: QuickOutlineNLS.quickOutlineByCategoryActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY }\n ]\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { localize } from '../../../nls.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { Extensions } from '../common/quickAccess.js';\nimport { IQuickInputService } from '../common/quickInput.js';\nlet HelpQuickAccessProvider = class HelpQuickAccessProvider {\n constructor(quickInputService, keybindingService) {\n this.quickInputService = quickInputService;\n this.keybindingService = keybindingService;\n this.registry = Registry.as(Extensions.Quickaccess);\n }\n provide(picker) {\n const disposables = new DisposableStore();\n // Open a picker with the selected value if picked\n disposables.add(picker.onDidAccept(() => {\n const [item] = picker.selectedItems;\n if (item) {\n this.quickInputService.quickAccess.show(item.prefix, { preserveValue: true });\n }\n }));\n // Also open a picker when we detect the user typed the exact\n // name of a provider (e.g. `?term` for terminals)\n disposables.add(picker.onDidChangeValue(value => {\n const providerDescriptor = this.registry.getQuickAccessProvider(value.substr(HelpQuickAccessProvider.PREFIX.length));\n if (providerDescriptor && providerDescriptor.prefix && providerDescriptor.prefix !== HelpQuickAccessProvider.PREFIX) {\n this.quickInputService.quickAccess.show(providerDescriptor.prefix, { preserveValue: true });\n }\n }));\n // Fill in all providers\n picker.items = this.getQuickAccessProviders();\n return disposables;\n }\n getQuickAccessProviders() {\n const providers = [];\n for (const provider of this.registry.getQuickAccessProviders().sort((providerA, providerB) => providerA.prefix.localeCompare(providerB.prefix))) {\n if (provider.prefix === HelpQuickAccessProvider.PREFIX) {\n continue; // exclude help which is already active\n }\n for (const helpEntry of provider.helpEntries) {\n const prefix = helpEntry.prefix || provider.prefix;\n const label = prefix || '\\u2026' /* ... */;\n providers.push({\n prefix,\n label,\n keybinding: helpEntry.commandId ? this.keybindingService.lookupKeybinding(helpEntry.commandId) : undefined,\n ariaLabel: localize('helpPickAriaLabel', \"{0}, {1}\", label, helpEntry.description),\n description: helpEntry.description\n });\n }\n }\n return providers;\n }\n};\nHelpQuickAccessProvider.PREFIX = '?';\nHelpQuickAccessProvider = __decorate([\n __param(0, IQuickInputService),\n __param(1, IKeybindingService)\n], HelpQuickAccessProvider);\nexport { HelpQuickAccessProvider };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Registry } from '../../../../platform/registry/common/platform.js';\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\nimport { QuickHelpNLS } from '../../../common/standaloneStrings.js';\nimport { HelpQuickAccessProvider } from '../../../../platform/quickinput/browser/helpQuickAccess.js';\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\n ctor: HelpQuickAccessProvider,\n prefix: '',\n helpEntries: [{ description: QuickHelpNLS.helpQuickAccessActionLabel }]\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { ReferencesController } from '../../../contrib/gotoSymbol/browser/peek/referencesController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\nlet StandaloneReferencesController = class StandaloneReferencesController extends ReferencesController {\n constructor(editor, contextKeyService, editorService, notificationService, instantiationService, storageService, configurationService) {\n super(true, editor, contextKeyService, editorService, notificationService, instantiationService, storageService, configurationService);\n }\n};\nStandaloneReferencesController = __decorate([\n __param(1, IContextKeyService),\n __param(2, ICodeEditorService),\n __param(3, INotificationService),\n __param(4, IInstantiationService),\n __param(5, IStorageService),\n __param(6, IConfigurationService)\n], StandaloneReferencesController);\nexport { StandaloneReferencesController };\nregisterEditorContribution(ReferencesController.ID, StandaloneReferencesController);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Color } from '../../../../base/common/color.js';\nexport class ParsedTokenThemeRule {\n constructor(token, index, fontStyle, foreground, background) {\n this._parsedThemeRuleBrand = undefined;\n this.token = token;\n this.index = index;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n}\n/**\n * Parse a raw theme into rules.\n */\nexport function parseTokenTheme(source) {\n if (!source || !Array.isArray(source)) {\n return [];\n }\n const result = [];\n let resultLen = 0;\n for (let i = 0, len = source.length; i < len; i++) {\n const entry = source[i];\n let fontStyle = -1 /* FontStyle.NotSet */;\n if (typeof entry.fontStyle === 'string') {\n fontStyle = 0 /* FontStyle.None */;\n const segments = entry.fontStyle.split(' ');\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n const segment = segments[j];\n switch (segment) {\n case 'italic':\n fontStyle = fontStyle | 1 /* FontStyle.Italic */;\n break;\n case 'bold':\n fontStyle = fontStyle | 2 /* FontStyle.Bold */;\n break;\n case 'underline':\n fontStyle = fontStyle | 4 /* FontStyle.Underline */;\n break;\n case 'strikethrough':\n fontStyle = fontStyle | 8 /* FontStyle.Strikethrough */;\n break;\n }\n }\n }\n let foreground = null;\n if (typeof entry.foreground === 'string') {\n foreground = entry.foreground;\n }\n let background = null;\n if (typeof entry.background === 'string') {\n background = entry.background;\n }\n result[resultLen++] = new ParsedTokenThemeRule(entry.token || '', i, fontStyle, foreground, background);\n }\n return result;\n}\n/**\n * Resolve rules (i.e. inheritance).\n */\nfunction resolveParsedTokenThemeRules(parsedThemeRules, customTokenColors) {\n // Sort rules lexicographically, and then by index if necessary\n parsedThemeRules.sort((a, b) => {\n const r = strcmp(a.token, b.token);\n if (r !== 0) {\n return r;\n }\n return a.index - b.index;\n });\n // Determine defaults\n let defaultFontStyle = 0 /* FontStyle.None */;\n let defaultForeground = '000000';\n let defaultBackground = 'ffffff';\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].token === '') {\n const incomingDefaults = parsedThemeRules.shift();\n if (incomingDefaults.fontStyle !== -1 /* FontStyle.NotSet */) {\n defaultFontStyle = incomingDefaults.fontStyle;\n }\n if (incomingDefaults.foreground !== null) {\n defaultForeground = incomingDefaults.foreground;\n }\n if (incomingDefaults.background !== null) {\n defaultBackground = incomingDefaults.background;\n }\n }\n const colorMap = new ColorMap();\n // start with token colors from custom token themes\n for (const color of customTokenColors) {\n colorMap.getId(color);\n }\n const foregroundColorId = colorMap.getId(defaultForeground);\n const backgroundColorId = colorMap.getId(defaultBackground);\n const defaults = new ThemeTrieElementRule(defaultFontStyle, foregroundColorId, backgroundColorId);\n const root = new ThemeTrieElement(defaults);\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n const rule = parsedThemeRules[i];\n root.insert(rule.token, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n }\n return new TokenTheme(colorMap, root);\n}\nconst colorRegExp = /^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;\nexport class ColorMap {\n constructor() {\n this._lastColorId = 0;\n this._id2color = [];\n this._color2id = new Map();\n }\n getId(color) {\n if (color === null) {\n return 0;\n }\n const match = color.match(colorRegExp);\n if (!match) {\n throw new Error('Illegal value for token color: ' + color);\n }\n color = match[1].toUpperCase();\n let value = this._color2id.get(color);\n if (value) {\n return value;\n }\n value = ++this._lastColorId;\n this._color2id.set(color, value);\n this._id2color[value] = Color.fromHex('#' + color);\n return value;\n }\n getColorMap() {\n return this._id2color.slice(0);\n }\n}\nexport class TokenTheme {\n constructor(colorMap, root) {\n this._colorMap = colorMap;\n this._root = root;\n this._cache = new Map();\n }\n static createFromRawTokenTheme(source, customTokenColors) {\n return this.createFromParsedTokenTheme(parseTokenTheme(source), customTokenColors);\n }\n static createFromParsedTokenTheme(source, customTokenColors) {\n return resolveParsedTokenThemeRules(source, customTokenColors);\n }\n getColorMap() {\n return this._colorMap.getColorMap();\n }\n _match(token) {\n return this._root.match(token);\n }\n match(languageId, token) {\n // The cache contains the metadata without the language bits set.\n let result = this._cache.get(token);\n if (typeof result === 'undefined') {\n const rule = this._match(token);\n const standardToken = toStandardTokenType(token);\n result = (rule.metadata\n | (standardToken << 8 /* MetadataConsts.TOKEN_TYPE_OFFSET */)) >>> 0;\n this._cache.set(token, result);\n }\n return (result\n | (languageId << 0 /* MetadataConsts.LANGUAGEID_OFFSET */)) >>> 0;\n }\n}\nconst STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|regexp)\\b/;\nexport function toStandardTokenType(tokenType) {\n const m = tokenType.match(STANDARD_TOKEN_TYPE_REGEXP);\n if (!m) {\n return 0 /* StandardTokenType.Other */;\n }\n switch (m[1]) {\n case 'comment':\n return 1 /* StandardTokenType.Comment */;\n case 'string':\n return 2 /* StandardTokenType.String */;\n case 'regex':\n return 3 /* StandardTokenType.RegEx */;\n case 'regexp':\n return 3 /* StandardTokenType.RegEx */;\n }\n throw new Error('Unexpected match for standard token type!');\n}\nexport function strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nexport class ThemeTrieElementRule {\n constructor(fontStyle, foreground, background) {\n this._themeTrieElementRuleBrand = undefined;\n this._fontStyle = fontStyle;\n this._foreground = foreground;\n this._background = background;\n this.metadata = ((this._fontStyle << 11 /* MetadataConsts.FONT_STYLE_OFFSET */)\n | (this._foreground << 15 /* MetadataConsts.FOREGROUND_OFFSET */)\n | (this._background << 24 /* MetadataConsts.BACKGROUND_OFFSET */)) >>> 0;\n }\n clone() {\n return new ThemeTrieElementRule(this._fontStyle, this._foreground, this._background);\n }\n acceptOverwrite(fontStyle, foreground, background) {\n if (fontStyle !== -1 /* FontStyle.NotSet */) {\n this._fontStyle = fontStyle;\n }\n if (foreground !== 0 /* ColorId.None */) {\n this._foreground = foreground;\n }\n if (background !== 0 /* ColorId.None */) {\n this._background = background;\n }\n this.metadata = ((this._fontStyle << 11 /* MetadataConsts.FONT_STYLE_OFFSET */)\n | (this._foreground << 15 /* MetadataConsts.FOREGROUND_OFFSET */)\n | (this._background << 24 /* MetadataConsts.BACKGROUND_OFFSET */)) >>> 0;\n }\n}\nexport class ThemeTrieElement {\n constructor(mainRule) {\n this._themeTrieElementBrand = undefined;\n this._mainRule = mainRule;\n this._children = new Map();\n }\n match(token) {\n if (token === '') {\n return this._mainRule;\n }\n const dotIndex = token.indexOf('.');\n let head;\n let tail;\n if (dotIndex === -1) {\n head = token;\n tail = '';\n }\n else {\n head = token.substring(0, dotIndex);\n tail = token.substring(dotIndex + 1);\n }\n const child = this._children.get(head);\n if (typeof child !== 'undefined') {\n return child.match(tail);\n }\n return this._mainRule;\n }\n insert(token, fontStyle, foreground, background) {\n if (token === '') {\n // Merge into the main rule\n this._mainRule.acceptOverwrite(fontStyle, foreground, background);\n return;\n }\n const dotIndex = token.indexOf('.');\n let head;\n let tail;\n if (dotIndex === -1) {\n head = token;\n tail = '';\n }\n else {\n head = token.substring(0, dotIndex);\n tail = token.substring(dotIndex + 1);\n }\n let child = this._children.get(head);\n if (typeof child === 'undefined') {\n child = new ThemeTrieElement(this._mainRule.clone());\n this._children.set(head, child);\n }\n child.insert(tail, fontStyle, foreground, background);\n }\n}\nexport function generateTokensCSSForColorMap(colorMap) {\n const rules = [];\n for (let i = 1, len = colorMap.length; i < len; i++) {\n const color = colorMap[i];\n rules[i] = `.mtk${i} { color: ${color}; }`;\n }\n rules.push('.mtki { font-style: italic; }');\n rules.push('.mtkb { font-weight: bold; }');\n rules.push('.mtku { text-decoration: underline; text-underline-position: under; }');\n rules.push('.mtks { text-decoration: line-through; }');\n rules.push('.mtks.mtku { text-decoration: underline line-through; text-underline-position: under; }');\n return rules.join('\\n');\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { editorActiveIndentGuides, editorIndentGuides } from '../../common/core/editorColorRegistry.js';\nimport { editorBackground, editorForeground, editorInactiveSelection, editorSelectionHighlight } from '../../../platform/theme/common/colorRegistry.js';\n/* -------------------------------- Begin vs theme -------------------------------- */\nexport const vs = {\n base: 'vs',\n inherit: false,\n rules: [\n { token: '', foreground: '000000', background: 'fffffe' },\n { token: 'invalid', foreground: 'cd3131' },\n { token: 'emphasis', fontStyle: 'italic' },\n { token: 'strong', fontStyle: 'bold' },\n { token: 'variable', foreground: '001188' },\n { token: 'variable.predefined', foreground: '4864AA' },\n { token: 'constant', foreground: 'dd0000' },\n { token: 'comment', foreground: '008000' },\n { token: 'number', foreground: '098658' },\n { token: 'number.hex', foreground: '3030c0' },\n { token: 'regexp', foreground: '800000' },\n { token: 'annotation', foreground: '808080' },\n { token: 'type', foreground: '008080' },\n { token: 'delimiter', foreground: '000000' },\n { token: 'delimiter.html', foreground: '383838' },\n { token: 'delimiter.xml', foreground: '0000FF' },\n { token: 'tag', foreground: '800000' },\n { token: 'tag.id.pug', foreground: '4F76AC' },\n { token: 'tag.class.pug', foreground: '4F76AC' },\n { token: 'meta.scss', foreground: '800000' },\n { token: 'metatag', foreground: 'e00000' },\n { token: 'metatag.content.html', foreground: 'FF0000' },\n { token: 'metatag.html', foreground: '808080' },\n { token: 'metatag.xml', foreground: '808080' },\n { token: 'metatag.php', fontStyle: 'bold' },\n { token: 'key', foreground: '863B00' },\n { token: 'string.key.json', foreground: 'A31515' },\n { token: 'string.value.json', foreground: '0451A5' },\n { token: 'attribute.name', foreground: 'FF0000' },\n { token: 'attribute.value', foreground: '0451A5' },\n { token: 'attribute.value.number', foreground: '098658' },\n { token: 'attribute.value.unit', foreground: '098658' },\n { token: 'attribute.value.html', foreground: '0000FF' },\n { token: 'attribute.value.xml', foreground: '0000FF' },\n { token: 'string', foreground: 'A31515' },\n { token: 'string.html', foreground: '0000FF' },\n { token: 'string.sql', foreground: 'FF0000' },\n { token: 'string.yaml', foreground: '0451A5' },\n { token: 'keyword', foreground: '0000FF' },\n { token: 'keyword.json', foreground: '0451A5' },\n { token: 'keyword.flow', foreground: 'AF00DB' },\n { token: 'keyword.flow.scss', foreground: '0000FF' },\n { token: 'operator.scss', foreground: '666666' },\n { token: 'operator.sql', foreground: '778899' },\n { token: 'operator.swift', foreground: '666666' },\n { token: 'predefined.sql', foreground: 'C700C7' },\n ],\n colors: {\n [editorBackground]: '#FFFFFE',\n [editorForeground]: '#000000',\n [editorInactiveSelection]: '#E5EBF1',\n [editorIndentGuides]: '#D3D3D3',\n [editorActiveIndentGuides]: '#939393',\n [editorSelectionHighlight]: '#ADD6FF4D'\n }\n};\n/* -------------------------------- End vs theme -------------------------------- */\n/* -------------------------------- Begin vs-dark theme -------------------------------- */\nexport const vs_dark = {\n base: 'vs-dark',\n inherit: false,\n rules: [\n { token: '', foreground: 'D4D4D4', background: '1E1E1E' },\n { token: 'invalid', foreground: 'f44747' },\n { token: 'emphasis', fontStyle: 'italic' },\n { token: 'strong', fontStyle: 'bold' },\n { token: 'variable', foreground: '74B0DF' },\n { token: 'variable.predefined', foreground: '4864AA' },\n { token: 'variable.parameter', foreground: '9CDCFE' },\n { token: 'constant', foreground: '569CD6' },\n { token: 'comment', foreground: '608B4E' },\n { token: 'number', foreground: 'B5CEA8' },\n { token: 'number.hex', foreground: '5BB498' },\n { token: 'regexp', foreground: 'B46695' },\n { token: 'annotation', foreground: 'cc6666' },\n { token: 'type', foreground: '3DC9B0' },\n { token: 'delimiter', foreground: 'DCDCDC' },\n { token: 'delimiter.html', foreground: '808080' },\n { token: 'delimiter.xml', foreground: '808080' },\n { token: 'tag', foreground: '569CD6' },\n { token: 'tag.id.pug', foreground: '4F76AC' },\n { token: 'tag.class.pug', foreground: '4F76AC' },\n { token: 'meta.scss', foreground: 'A79873' },\n { token: 'meta.tag', foreground: 'CE9178' },\n { token: 'metatag', foreground: 'DD6A6F' },\n { token: 'metatag.content.html', foreground: '9CDCFE' },\n { token: 'metatag.html', foreground: '569CD6' },\n { token: 'metatag.xml', foreground: '569CD6' },\n { token: 'metatag.php', fontStyle: 'bold' },\n { token: 'key', foreground: '9CDCFE' },\n { token: 'string.key.json', foreground: '9CDCFE' },\n { token: 'string.value.json', foreground: 'CE9178' },\n { token: 'attribute.name', foreground: '9CDCFE' },\n { token: 'attribute.value', foreground: 'CE9178' },\n { token: 'attribute.value.number.css', foreground: 'B5CEA8' },\n { token: 'attribute.value.unit.css', foreground: 'B5CEA8' },\n { token: 'attribute.value.hex.css', foreground: 'D4D4D4' },\n { token: 'string', foreground: 'CE9178' },\n { token: 'string.sql', foreground: 'FF0000' },\n { token: 'keyword', foreground: '569CD6' },\n { token: 'keyword.flow', foreground: 'C586C0' },\n { token: 'keyword.json', foreground: 'CE9178' },\n { token: 'keyword.flow.scss', foreground: '569CD6' },\n { token: 'operator.scss', foreground: '909090' },\n { token: 'operator.sql', foreground: '778899' },\n { token: 'operator.swift', foreground: '909090' },\n { token: 'predefined.sql', foreground: 'FF00FF' },\n ],\n colors: {\n [editorBackground]: '#1E1E1E',\n [editorForeground]: '#D4D4D4',\n [editorInactiveSelection]: '#3A3D41',\n [editorIndentGuides]: '#404040',\n [editorActiveIndentGuides]: '#707070',\n [editorSelectionHighlight]: '#ADD6FF26'\n }\n};\n/* -------------------------------- End vs-dark theme -------------------------------- */\n/* -------------------------------- Begin hc-black theme -------------------------------- */\nexport const hc_black = {\n base: 'hc-black',\n inherit: false,\n rules: [\n { token: '', foreground: 'FFFFFF', background: '000000' },\n { token: 'invalid', foreground: 'f44747' },\n { token: 'emphasis', fontStyle: 'italic' },\n { token: 'strong', fontStyle: 'bold' },\n { token: 'variable', foreground: '1AEBFF' },\n { token: 'variable.parameter', foreground: '9CDCFE' },\n { token: 'constant', foreground: '569CD6' },\n { token: 'comment', foreground: '608B4E' },\n { token: 'number', foreground: 'FFFFFF' },\n { token: 'regexp', foreground: 'C0C0C0' },\n { token: 'annotation', foreground: '569CD6' },\n { token: 'type', foreground: '3DC9B0' },\n { token: 'delimiter', foreground: 'FFFF00' },\n { token: 'delimiter.html', foreground: 'FFFF00' },\n { token: 'tag', foreground: '569CD6' },\n { token: 'tag.id.pug', foreground: '4F76AC' },\n { token: 'tag.class.pug', foreground: '4F76AC' },\n { token: 'meta', foreground: 'D4D4D4' },\n { token: 'meta.tag', foreground: 'CE9178' },\n { token: 'metatag', foreground: '569CD6' },\n { token: 'metatag.content.html', foreground: '1AEBFF' },\n { token: 'metatag.html', foreground: '569CD6' },\n { token: 'metatag.xml', foreground: '569CD6' },\n { token: 'metatag.php', fontStyle: 'bold' },\n { token: 'key', foreground: '9CDCFE' },\n { token: 'string.key', foreground: '9CDCFE' },\n { token: 'string.value', foreground: 'CE9178' },\n { token: 'attribute.name', foreground: '569CD6' },\n { token: 'attribute.value', foreground: '3FF23F' },\n { token: 'string', foreground: 'CE9178' },\n { token: 'string.sql', foreground: 'FF0000' },\n { token: 'keyword', foreground: '569CD6' },\n { token: 'keyword.flow', foreground: 'C586C0' },\n { token: 'operator.sql', foreground: '778899' },\n { token: 'operator.swift', foreground: '909090' },\n { token: 'predefined.sql', foreground: 'FF00FF' },\n ],\n colors: {\n [editorBackground]: '#000000',\n [editorForeground]: '#FFFFFF',\n [editorIndentGuides]: '#FFFFFF',\n [editorActiveIndentGuides]: '#FFFFFF',\n }\n};\n/* -------------------------------- End hc-black theme -------------------------------- */\n/* -------------------------------- Begin hc-light theme -------------------------------- */\nexport const hc_light = {\n base: 'hc-light',\n inherit: false,\n rules: [\n { token: '', foreground: '292929', background: 'FFFFFF' },\n { token: 'invalid', foreground: 'B5200D' },\n { token: 'emphasis', fontStyle: 'italic' },\n { token: 'strong', fontStyle: 'bold' },\n { token: 'variable', foreground: '264F70' },\n { token: 'variable.predefined', foreground: '4864AA' },\n { token: 'constant', foreground: 'dd0000' },\n { token: 'comment', foreground: '008000' },\n { token: 'number', foreground: '098658' },\n { token: 'number.hex', foreground: '3030c0' },\n { token: 'regexp', foreground: '800000' },\n { token: 'annotation', foreground: '808080' },\n { token: 'type', foreground: '008080' },\n { token: 'delimiter', foreground: '000000' },\n { token: 'delimiter.html', foreground: '383838' },\n { token: 'tag', foreground: '800000' },\n { token: 'tag.id.pug', foreground: '4F76AC' },\n { token: 'tag.class.pug', foreground: '4F76AC' },\n { token: 'meta.scss', foreground: '800000' },\n { token: 'metatag', foreground: 'e00000' },\n { token: 'metatag.content.html', foreground: 'B5200D' },\n { token: 'metatag.html', foreground: '808080' },\n { token: 'metatag.xml', foreground: '808080' },\n { token: 'metatag.php', fontStyle: 'bold' },\n { token: 'key', foreground: '863B00' },\n { token: 'string.key.json', foreground: 'A31515' },\n { token: 'string.value.json', foreground: '0451A5' },\n { token: 'attribute.name', foreground: '264F78' },\n { token: 'attribute.value', foreground: '0451A5' },\n { token: 'string', foreground: 'A31515' },\n { token: 'string.sql', foreground: 'B5200D' },\n { token: 'keyword', foreground: '0000FF' },\n { token: 'keyword.flow', foreground: 'AF00DB' },\n { token: 'operator.sql', foreground: '778899' },\n { token: 'operator.swift', foreground: '666666' },\n { token: 'predefined.sql', foreground: 'C700C7' },\n ],\n colors: {\n [editorBackground]: '#FFFFFF',\n [editorForeground]: '#292929',\n [editorIndentGuides]: '#292929',\n [editorActiveIndentGuides]: '#292929',\n }\n};\n/* -------------------------------- End hc-light theme -------------------------------- */\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { asCSSPropertyValue, asCSSUrl } from '../../../base/browser/dom.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { getIconRegistry } from '../common/iconRegistry.js';\nimport { ThemeIcon } from '../common/themeService.js';\nexport function getIconsStyleSheet(themeService) {\n const onDidChangeEmmiter = new Emitter();\n const iconRegistry = getIconRegistry();\n iconRegistry.onDidChange(() => onDidChangeEmmiter.fire());\n themeService === null || themeService === void 0 ? void 0 : themeService.onDidProductIconThemeChange(() => onDidChangeEmmiter.fire());\n return {\n onDidChange: onDidChangeEmmiter.event,\n getCSS() {\n const productIconTheme = themeService ? themeService.getProductIconTheme() : new UnthemedProductIconTheme();\n const usedFontIds = {};\n const formatIconRule = (contribution) => {\n const definition = productIconTheme.getIcon(contribution);\n if (!definition) {\n return undefined;\n }\n const fontContribution = definition.font;\n if (fontContribution) {\n usedFontIds[fontContribution.id] = fontContribution.definition;\n return `.codicon-${contribution.id}:before { content: '${definition.fontCharacter}'; font-family: ${asCSSPropertyValue(fontContribution.id)}; }`;\n }\n // default font (codicon)\n return `.codicon-${contribution.id}:before { content: '${definition.fontCharacter}'; }`;\n };\n const rules = [];\n for (const contribution of iconRegistry.getIcons()) {\n const rule = formatIconRule(contribution);\n if (rule) {\n rules.push(rule);\n }\n }\n for (const id in usedFontIds) {\n const definition = usedFontIds[id];\n const fontWeight = definition.weight ? `font-weight: ${definition.weight};` : '';\n const fontStyle = definition.style ? `font-style: ${definition.style};` : '';\n const src = definition.src.map(l => `${asCSSUrl(l.location)} format('${l.format}')`).join(', ');\n rules.push(`@font-face { src: ${src}; font-family: ${asCSSPropertyValue(id)};${fontWeight}${fontStyle} font-display: block; }`);\n }\n return rules.join('\\n');\n }\n };\n}\nexport class UnthemedProductIconTheme {\n getIcon(contribution) {\n const iconRegistry = getIconRegistry();\n let definition = contribution.defaults;\n while (ThemeIcon.isThemeIcon(definition)) {\n const c = iconRegistry.getIcon(definition.id);\n if (!c) {\n return undefined;\n }\n definition = c.defaults;\n }\n return definition;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../../base/browser/dom.js';\nimport { addMatchMediaChangeListener } from '../../../base/browser/browser.js';\nimport { Color } from '../../../base/common/color.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { TokenizationRegistry } from '../../common/languages.js';\nimport { TokenMetadata } from '../../common/encodedTokenAttributes.js';\nimport { TokenTheme, generateTokensCSSForColorMap } from '../../common/languages/supports/tokenization.js';\nimport { hc_black, hc_light, vs, vs_dark } from '../common/themes.js';\nimport { Registry } from '../../../platform/registry/common/platform.js';\nimport { asCssVariableName, Extensions } from '../../../platform/theme/common/colorRegistry.js';\nimport { Extensions as ThemingExtensions } from '../../../platform/theme/common/themeService.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { ColorScheme, isDark, isHighContrast } from '../../../platform/theme/common/theme.js';\nimport { getIconsStyleSheet, UnthemedProductIconTheme } from '../../../platform/theme/browser/iconsStyleSheet.js';\nexport const VS_LIGHT_THEME_NAME = 'vs';\nexport const VS_DARK_THEME_NAME = 'vs-dark';\nexport const HC_BLACK_THEME_NAME = 'hc-black';\nexport const HC_LIGHT_THEME_NAME = 'hc-light';\nconst colorRegistry = Registry.as(Extensions.ColorContribution);\nconst themingRegistry = Registry.as(ThemingExtensions.ThemingContribution);\nclass StandaloneTheme {\n constructor(name, standaloneThemeData) {\n this.semanticHighlighting = false;\n this.themeData = standaloneThemeData;\n const base = standaloneThemeData.base;\n if (name.length > 0) {\n if (isBuiltinTheme(name)) {\n this.id = name;\n }\n else {\n this.id = base + ' ' + name;\n }\n this.themeName = name;\n }\n else {\n this.id = base;\n this.themeName = base;\n }\n this.colors = null;\n this.defaultColors = Object.create(null);\n this._tokenTheme = null;\n }\n get base() {\n return this.themeData.base;\n }\n notifyBaseUpdated() {\n if (this.themeData.inherit) {\n this.colors = null;\n this._tokenTheme = null;\n }\n }\n getColors() {\n if (!this.colors) {\n const colors = new Map();\n for (const id in this.themeData.colors) {\n colors.set(id, Color.fromHex(this.themeData.colors[id]));\n }\n if (this.themeData.inherit) {\n const baseData = getBuiltinRules(this.themeData.base);\n for (const id in baseData.colors) {\n if (!colors.has(id)) {\n colors.set(id, Color.fromHex(baseData.colors[id]));\n }\n }\n }\n this.colors = colors;\n }\n return this.colors;\n }\n getColor(colorId, useDefault) {\n const color = this.getColors().get(colorId);\n if (color) {\n return color;\n }\n if (useDefault !== false) {\n return this.getDefault(colorId);\n }\n return undefined;\n }\n getDefault(colorId) {\n let color = this.defaultColors[colorId];\n if (color) {\n return color;\n }\n color = colorRegistry.resolveDefaultColor(colorId, this);\n this.defaultColors[colorId] = color;\n return color;\n }\n defines(colorId) {\n return Object.prototype.hasOwnProperty.call(this.getColors(), colorId);\n }\n get type() {\n switch (this.base) {\n case VS_LIGHT_THEME_NAME: return ColorScheme.LIGHT;\n case HC_BLACK_THEME_NAME: return ColorScheme.HIGH_CONTRAST_DARK;\n case HC_LIGHT_THEME_NAME: return ColorScheme.HIGH_CONTRAST_LIGHT;\n default: return ColorScheme.DARK;\n }\n }\n get tokenTheme() {\n if (!this._tokenTheme) {\n let rules = [];\n let encodedTokensColors = [];\n if (this.themeData.inherit) {\n const baseData = getBuiltinRules(this.themeData.base);\n rules = baseData.rules;\n if (baseData.encodedTokensColors) {\n encodedTokensColors = baseData.encodedTokensColors;\n }\n }\n // Pick up default colors from `editor.foreground` and `editor.background` if available\n const editorForeground = this.themeData.colors['editor.foreground'];\n const editorBackground = this.themeData.colors['editor.background'];\n if (editorForeground || editorBackground) {\n const rule = { token: '' };\n if (editorForeground) {\n rule.foreground = editorForeground;\n }\n if (editorBackground) {\n rule.background = editorBackground;\n }\n rules.push(rule);\n }\n rules = rules.concat(this.themeData.rules);\n if (this.themeData.encodedTokensColors) {\n encodedTokensColors = this.themeData.encodedTokensColors;\n }\n this._tokenTheme = TokenTheme.createFromRawTokenTheme(rules, encodedTokensColors);\n }\n return this._tokenTheme;\n }\n getTokenStyleMetadata(type, modifiers, modelLanguage) {\n // use theme rules match\n const style = this.tokenTheme._match([type].concat(modifiers).join('.'));\n const metadata = style.metadata;\n const foreground = TokenMetadata.getForeground(metadata);\n const fontStyle = TokenMetadata.getFontStyle(metadata);\n return {\n foreground: foreground,\n italic: Boolean(fontStyle & 1 /* FontStyle.Italic */),\n bold: Boolean(fontStyle & 2 /* FontStyle.Bold */),\n underline: Boolean(fontStyle & 4 /* FontStyle.Underline */),\n strikethrough: Boolean(fontStyle & 8 /* FontStyle.Strikethrough */)\n };\n }\n}\nfunction isBuiltinTheme(themeName) {\n return (themeName === VS_LIGHT_THEME_NAME\n || themeName === VS_DARK_THEME_NAME\n || themeName === HC_BLACK_THEME_NAME\n || themeName === HC_LIGHT_THEME_NAME);\n}\nfunction getBuiltinRules(builtinTheme) {\n switch (builtinTheme) {\n case VS_LIGHT_THEME_NAME:\n return vs;\n case VS_DARK_THEME_NAME:\n return vs_dark;\n case HC_BLACK_THEME_NAME:\n return hc_black;\n case HC_LIGHT_THEME_NAME:\n return hc_light;\n }\n}\nfunction newBuiltInTheme(builtinTheme) {\n const themeData = getBuiltinRules(builtinTheme);\n return new StandaloneTheme(builtinTheme, themeData);\n}\nexport class StandaloneThemeService extends Disposable {\n constructor() {\n super();\n this._onColorThemeChange = this._register(new Emitter());\n this.onDidColorThemeChange = this._onColorThemeChange.event;\n this._onProductIconThemeChange = this._register(new Emitter());\n this.onDidProductIconThemeChange = this._onProductIconThemeChange.event;\n this._environment = Object.create(null);\n this._builtInProductIconTheme = new UnthemedProductIconTheme();\n this._autoDetectHighContrast = true;\n this._knownThemes = new Map();\n this._knownThemes.set(VS_LIGHT_THEME_NAME, newBuiltInTheme(VS_LIGHT_THEME_NAME));\n this._knownThemes.set(VS_DARK_THEME_NAME, newBuiltInTheme(VS_DARK_THEME_NAME));\n this._knownThemes.set(HC_BLACK_THEME_NAME, newBuiltInTheme(HC_BLACK_THEME_NAME));\n this._knownThemes.set(HC_LIGHT_THEME_NAME, newBuiltInTheme(HC_LIGHT_THEME_NAME));\n const iconsStyleSheet = getIconsStyleSheet(this);\n this._codiconCSS = iconsStyleSheet.getCSS();\n this._themeCSS = '';\n this._allCSS = `${this._codiconCSS}\\n${this._themeCSS}`;\n this._globalStyleElement = null;\n this._styleElements = [];\n this._colorMapOverride = null;\n this.setTheme(VS_LIGHT_THEME_NAME);\n this._onOSSchemeChanged();\n iconsStyleSheet.onDidChange(() => {\n this._codiconCSS = iconsStyleSheet.getCSS();\n this._updateCSS();\n });\n addMatchMediaChangeListener('(forced-colors: active)', () => {\n this._onOSSchemeChanged();\n });\n }\n registerEditorContainer(domNode) {\n if (dom.isInShadowDOM(domNode)) {\n return this._registerShadowDomContainer(domNode);\n }\n return this._registerRegularEditorContainer();\n }\n _registerRegularEditorContainer() {\n if (!this._globalStyleElement) {\n this._globalStyleElement = dom.createStyleSheet();\n this._globalStyleElement.className = 'monaco-colors';\n this._globalStyleElement.textContent = this._allCSS;\n this._styleElements.push(this._globalStyleElement);\n }\n return Disposable.None;\n }\n _registerShadowDomContainer(domNode) {\n const styleElement = dom.createStyleSheet(domNode);\n styleElement.className = 'monaco-colors';\n styleElement.textContent = this._allCSS;\n this._styleElements.push(styleElement);\n return {\n dispose: () => {\n for (let i = 0; i < this._styleElements.length; i++) {\n if (this._styleElements[i] === styleElement) {\n this._styleElements.splice(i, 1);\n return;\n }\n }\n }\n };\n }\n defineTheme(themeName, themeData) {\n if (!/^[a-z0-9\\-]+$/i.test(themeName)) {\n throw new Error('Illegal theme name!');\n }\n if (!isBuiltinTheme(themeData.base) && !isBuiltinTheme(themeName)) {\n throw new Error('Illegal theme base!');\n }\n // set or replace theme\n this._knownThemes.set(themeName, new StandaloneTheme(themeName, themeData));\n if (isBuiltinTheme(themeName)) {\n this._knownThemes.forEach(theme => {\n if (theme.base === themeName) {\n theme.notifyBaseUpdated();\n }\n });\n }\n if (this._theme.themeName === themeName) {\n this.setTheme(themeName); // refresh theme\n }\n }\n getColorTheme() {\n return this._theme;\n }\n setColorMapOverride(colorMapOverride) {\n this._colorMapOverride = colorMapOverride;\n this._updateThemeOrColorMap();\n }\n setTheme(themeName) {\n let theme;\n if (this._knownThemes.has(themeName)) {\n theme = this._knownThemes.get(themeName);\n }\n else {\n theme = this._knownThemes.get(VS_LIGHT_THEME_NAME);\n }\n this._updateActualTheme(theme);\n }\n _updateActualTheme(desiredTheme) {\n if (!desiredTheme || this._theme === desiredTheme) {\n // Nothing to do\n return;\n }\n this._theme = desiredTheme;\n this._updateThemeOrColorMap();\n }\n _onOSSchemeChanged() {\n if (this._autoDetectHighContrast) {\n const wantsHighContrast = window.matchMedia(`(forced-colors: active)`).matches;\n if (wantsHighContrast !== isHighContrast(this._theme.type)) {\n // switch to high contrast or non-high contrast but stick to dark or light\n let newThemeName;\n if (isDark(this._theme.type)) {\n newThemeName = wantsHighContrast ? HC_BLACK_THEME_NAME : VS_DARK_THEME_NAME;\n }\n else {\n newThemeName = wantsHighContrast ? HC_LIGHT_THEME_NAME : VS_LIGHT_THEME_NAME;\n }\n this._updateActualTheme(this._knownThemes.get(newThemeName));\n }\n }\n }\n setAutoDetectHighContrast(autoDetectHighContrast) {\n this._autoDetectHighContrast = autoDetectHighContrast;\n this._onOSSchemeChanged();\n }\n _updateThemeOrColorMap() {\n const cssRules = [];\n const hasRule = {};\n const ruleCollector = {\n addRule: (rule) => {\n if (!hasRule[rule]) {\n cssRules.push(rule);\n hasRule[rule] = true;\n }\n }\n };\n themingRegistry.getThemingParticipants().forEach(p => p(this._theme, ruleCollector, this._environment));\n const colorVariables = [];\n for (const item of colorRegistry.getColors()) {\n const color = this._theme.getColor(item.id, true);\n if (color) {\n colorVariables.push(`${asCssVariableName(item.id)}: ${color.toString()};`);\n }\n }\n ruleCollector.addRule(`.monaco-editor { ${colorVariables.join('\\n')} }`);\n const colorMap = this._colorMapOverride || this._theme.tokenTheme.getColorMap();\n ruleCollector.addRule(generateTokensCSSForColorMap(colorMap));\n this._themeCSS = cssRules.join('\\n');\n this._updateCSS();\n TokenizationRegistry.setColorMap(colorMap);\n this._onColorThemeChange.fire(this._theme);\n }\n _updateCSS() {\n this._allCSS = `${this._codiconCSS}\\n${this._themeCSS}`;\n this._styleElements.forEach(styleElement => styleElement.textContent = this._allCSS);\n }\n getFileIconTheme() {\n return {\n hasFileIcons: false,\n hasFolderIcons: false,\n hidesExplorerArrows: false\n };\n }\n getProductIconTheme() {\n return this._builtInProductIconTheme;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { IStandaloneThemeService } from '../../common/standaloneTheme.js';\nimport { ToggleHighContrastNLS } from '../../../common/standaloneStrings.js';\nimport { isDark, isHighContrast } from '../../../../platform/theme/common/theme.js';\nimport { HC_BLACK_THEME_NAME, HC_LIGHT_THEME_NAME, VS_DARK_THEME_NAME, VS_LIGHT_THEME_NAME } from '../standaloneThemeService.js';\nclass ToggleHighContrast extends EditorAction {\n constructor() {\n super({\n id: 'editor.action.toggleHighContrast',\n label: ToggleHighContrastNLS.toggleHighContrast,\n alias: 'Toggle High Contrast Theme',\n precondition: undefined\n });\n this._originalThemeName = null;\n }\n run(accessor, editor) {\n const standaloneThemeService = accessor.get(IStandaloneThemeService);\n const currentTheme = standaloneThemeService.getColorTheme();\n if (isHighContrast(currentTheme.type)) {\n // We must toggle back to the integrator's theme\n standaloneThemeService.setTheme(this._originalThemeName || (isDark(currentTheme.type) ? VS_DARK_THEME_NAME : VS_LIGHT_THEME_NAME));\n this._originalThemeName = null;\n }\n else {\n standaloneThemeService.setTheme(isDark(currentTheme.type) ? HC_BLACK_THEME_NAME : HC_LIGHT_THEME_NAME);\n this._originalThemeName = currentTheme.themeName;\n }\n }\n}\nregisterEditorAction(ToggleHighContrast);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\nexport const IStandaloneThemeService = createDecorator('themeService');\n","/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.34.1(547870b6881302c5b4ff32173c16d06009e3588f)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../../editor/editor.api.js\";\n\n// src/language/html/workerManager.ts\nvar STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;\nvar WorkerManager = class {\n _defaults;\n _idleCheckInterval;\n _lastUsedTime;\n _configChangeListener;\n _worker;\n _client;\n constructor(defaults) {\n this._defaults = defaults;\n this._worker = null;\n this._client = null;\n this._idleCheckInterval = window.setInterval(() => this._checkIfIdle(), 30 * 1e3);\n this._lastUsedTime = 0;\n this._configChangeListener = this._defaults.onDidChange(() => this._stopWorker());\n }\n _stopWorker() {\n if (this._worker) {\n this._worker.dispose();\n this._worker = null;\n }\n this._client = null;\n }\n dispose() {\n clearInterval(this._idleCheckInterval);\n this._configChangeListener.dispose();\n this._stopWorker();\n }\n _checkIfIdle() {\n if (!this._worker) {\n return;\n }\n let timePassedSinceLastUsed = Date.now() - this._lastUsedTime;\n if (timePassedSinceLastUsed > STOP_WHEN_IDLE_FOR) {\n this._stopWorker();\n }\n }\n _getClient() {\n this._lastUsedTime = Date.now();\n if (!this._client) {\n this._worker = monaco_editor_core_exports.editor.createWebWorker({\n moduleId: \"vs/language/html/htmlWorker\",\n createData: {\n languageSettings: this._defaults.options,\n languageId: this._defaults.languageId\n },\n label: this._defaults.languageId\n });\n this._client = this._worker.getProxy();\n }\n return this._client;\n }\n getLanguageServiceWorker(...resources) {\n let _client;\n return this._getClient().then((client) => {\n _client = client;\n }).then((_) => {\n if (this._worker) {\n return this._worker.withSyncedResources(resources);\n }\n }).then((_) => _client);\n }\n};\n\n// node_modules/vscode-languageserver-types/lib/esm/main.js\nvar integer;\n(function(integer2) {\n integer2.MIN_VALUE = -2147483648;\n integer2.MAX_VALUE = 2147483647;\n})(integer || (integer = {}));\nvar uinteger;\n(function(uinteger2) {\n uinteger2.MIN_VALUE = 0;\n uinteger2.MAX_VALUE = 2147483647;\n})(uinteger || (uinteger = {}));\nvar Position;\n(function(Position3) {\n function create(line, character) {\n if (line === Number.MAX_VALUE) {\n line = uinteger.MAX_VALUE;\n }\n if (character === Number.MAX_VALUE) {\n character = uinteger.MAX_VALUE;\n }\n return { line, character };\n }\n Position3.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n Position3.is = is;\n})(Position || (Position = {}));\nvar Range;\n(function(Range3) {\n function create(one, two, three, four) {\n if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n return { start: Position.create(one, two), end: Position.create(three, four) };\n } else if (Position.is(one) && Position.is(two)) {\n return { start: one, end: two };\n } else {\n throw new Error(\"Range#create called with invalid arguments[\" + one + \", \" + two + \", \" + three + \", \" + four + \"]\");\n }\n }\n Range3.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n Range3.is = is;\n})(Range || (Range = {}));\nvar Location;\n(function(Location2) {\n function create(uri, range) {\n return { uri, range };\n }\n Location2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n Location2.is = is;\n})(Location || (Location = {}));\nvar LocationLink;\n(function(LocationLink2) {\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return { targetUri, targetRange, targetSelectionRange, originSelectionRange };\n }\n LocationLink2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange)) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n LocationLink2.is = is;\n})(LocationLink || (LocationLink = {}));\nvar Color;\n(function(Color2) {\n function create(red, green, blue, alpha) {\n return {\n red,\n green,\n blue,\n alpha\n };\n }\n Color2.create = create;\n function is(value) {\n var candidate = value;\n return Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1);\n }\n Color2.is = is;\n})(Color || (Color = {}));\nvar ColorInformation;\n(function(ColorInformation2) {\n function create(range, color) {\n return {\n range,\n color\n };\n }\n ColorInformation2.create = create;\n function is(value) {\n var candidate = value;\n return Range.is(candidate.range) && Color.is(candidate.color);\n }\n ColorInformation2.is = is;\n})(ColorInformation || (ColorInformation = {}));\nvar ColorPresentation;\n(function(ColorPresentation2) {\n function create(label, textEdit, additionalTextEdits) {\n return {\n label,\n textEdit,\n additionalTextEdits\n };\n }\n ColorPresentation2.create = create;\n function is(value) {\n var candidate = value;\n return Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n ColorPresentation2.is = is;\n})(ColorPresentation || (ColorPresentation = {}));\nvar FoldingRangeKind;\n(function(FoldingRangeKind2) {\n FoldingRangeKind2[\"Comment\"] = \"comment\";\n FoldingRangeKind2[\"Imports\"] = \"imports\";\n FoldingRangeKind2[\"Region\"] = \"region\";\n})(FoldingRangeKind || (FoldingRangeKind = {}));\nvar FoldingRange;\n(function(FoldingRange2) {\n function create(startLine, endLine, startCharacter, endCharacter, kind) {\n var result = {\n startLine,\n endLine\n };\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n return result;\n }\n FoldingRange2.create = create;\n function is(value) {\n var candidate = value;\n return Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n FoldingRange2.is = is;\n})(FoldingRange || (FoldingRange = {}));\nvar DiagnosticRelatedInformation;\n(function(DiagnosticRelatedInformation2) {\n function create(location, message) {\n return {\n location,\n message\n };\n }\n DiagnosticRelatedInformation2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n DiagnosticRelatedInformation2.is = is;\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\nvar DiagnosticSeverity;\n(function(DiagnosticSeverity2) {\n DiagnosticSeverity2.Error = 1;\n DiagnosticSeverity2.Warning = 2;\n DiagnosticSeverity2.Information = 3;\n DiagnosticSeverity2.Hint = 4;\n})(DiagnosticSeverity || (DiagnosticSeverity = {}));\nvar DiagnosticTag;\n(function(DiagnosticTag2) {\n DiagnosticTag2.Unnecessary = 1;\n DiagnosticTag2.Deprecated = 2;\n})(DiagnosticTag || (DiagnosticTag = {}));\nvar CodeDescription;\n(function(CodeDescription2) {\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && candidate !== null && Is.string(candidate.href);\n }\n CodeDescription2.is = is;\n})(CodeDescription || (CodeDescription = {}));\nvar Diagnostic;\n(function(Diagnostic2) {\n function create(range, message, severity, code, source, relatedInformation) {\n var result = { range, message };\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n if (Is.defined(code)) {\n result.code = code;\n }\n if (Is.defined(source)) {\n result.source = source;\n }\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n return result;\n }\n Diagnostic2.create = create;\n function is(value) {\n var _a;\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n Diagnostic2.is = is;\n})(Diagnostic || (Diagnostic = {}));\nvar Command;\n(function(Command2) {\n function create(title, command) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var result = { title, command };\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n return result;\n }\n Command2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n Command2.is = is;\n})(Command || (Command = {}));\nvar TextEdit;\n(function(TextEdit2) {\n function replace(range, newText) {\n return { range, newText };\n }\n TextEdit2.replace = replace;\n function insert(position, newText) {\n return { range: { start: position, end: position }, newText };\n }\n TextEdit2.insert = insert;\n function del(range) {\n return { range, newText: \"\" };\n }\n TextEdit2.del = del;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range);\n }\n TextEdit2.is = is;\n})(TextEdit || (TextEdit = {}));\nvar ChangeAnnotation;\n(function(ChangeAnnotation2) {\n function create(label, needsConfirmation, description) {\n var result = { label };\n if (needsConfirmation !== void 0) {\n result.needsConfirmation = needsConfirmation;\n }\n if (description !== void 0) {\n result.description = description;\n }\n return result;\n }\n ChangeAnnotation2.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0);\n }\n ChangeAnnotation2.is = is;\n})(ChangeAnnotation || (ChangeAnnotation = {}));\nvar ChangeAnnotationIdentifier;\n(function(ChangeAnnotationIdentifier2) {\n function is(value) {\n var candidate = value;\n return typeof candidate === \"string\";\n }\n ChangeAnnotationIdentifier2.is = is;\n})(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\nvar AnnotatedTextEdit;\n(function(AnnotatedTextEdit2) {\n function replace(range, newText, annotation) {\n return { range, newText, annotationId: annotation };\n }\n AnnotatedTextEdit2.replace = replace;\n function insert(position, newText, annotation) {\n return { range: { start: position, end: position }, newText, annotationId: annotation };\n }\n AnnotatedTextEdit2.insert = insert;\n function del(range, annotation) {\n return { range, newText: \"\", annotationId: annotation };\n }\n AnnotatedTextEdit2.del = del;\n function is(value) {\n var candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n AnnotatedTextEdit2.is = is;\n})(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\nvar TextDocumentEdit;\n(function(TextDocumentEdit2) {\n function create(textDocument, edits) {\n return { textDocument, edits };\n }\n TextDocumentEdit2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);\n }\n TextDocumentEdit2.is = is;\n})(TextDocumentEdit || (TextDocumentEdit = {}));\nvar CreateFile;\n(function(CreateFile2) {\n function create(uri, options, annotation) {\n var result = {\n kind: \"create\",\n uri\n };\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n CreateFile2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"create\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n CreateFile2.is = is;\n})(CreateFile || (CreateFile = {}));\nvar RenameFile;\n(function(RenameFile2) {\n function create(oldUri, newUri, options, annotation) {\n var result = {\n kind: \"rename\",\n oldUri,\n newUri\n };\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n RenameFile2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"rename\" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n RenameFile2.is = is;\n})(RenameFile || (RenameFile = {}));\nvar DeleteFile;\n(function(DeleteFile2) {\n function create(uri, options, annotation) {\n var result = {\n kind: \"delete\",\n uri\n };\n if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n DeleteFile2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"delete\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n DeleteFile2.is = is;\n})(DeleteFile || (DeleteFile = {}));\nvar WorkspaceEdit;\n(function(WorkspaceEdit2) {\n function is(value) {\n var candidate = value;\n return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every(function(change) {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n } else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n WorkspaceEdit2.is = is;\n})(WorkspaceEdit || (WorkspaceEdit = {}));\nvar TextEditChangeImpl = function() {\n function TextEditChangeImpl2(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n TextEditChangeImpl2.prototype.insert = function(position, newText, annotation) {\n var edit;\n var id;\n if (annotation === void 0) {\n edit = TextEdit.insert(position, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.insert(position, newText, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n };\n TextEditChangeImpl2.prototype.replace = function(range, newText, annotation) {\n var edit;\n var id;\n if (annotation === void 0) {\n edit = TextEdit.replace(range, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.replace(range, newText, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n };\n TextEditChangeImpl2.prototype.delete = function(range, annotation) {\n var edit;\n var id;\n if (annotation === void 0) {\n edit = TextEdit.del(range);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.del(range, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n };\n TextEditChangeImpl2.prototype.add = function(edit) {\n this.edits.push(edit);\n };\n TextEditChangeImpl2.prototype.all = function() {\n return this.edits;\n };\n TextEditChangeImpl2.prototype.clear = function() {\n this.edits.splice(0, this.edits.length);\n };\n TextEditChangeImpl2.prototype.assertChangeAnnotations = function(value) {\n if (value === void 0) {\n throw new Error(\"Text edit change is not configured to manage change annotations.\");\n }\n };\n return TextEditChangeImpl2;\n}();\nvar ChangeAnnotations = function() {\n function ChangeAnnotations2(annotations) {\n this._annotations = annotations === void 0 ? /* @__PURE__ */ Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n ChangeAnnotations2.prototype.all = function() {\n return this._annotations;\n };\n Object.defineProperty(ChangeAnnotations2.prototype, \"size\", {\n get: function() {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n ChangeAnnotations2.prototype.manage = function(idOrAnnotation, annotation) {\n var id;\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n } else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== void 0) {\n throw new Error(\"Id \" + id + \" is already in use.\");\n }\n if (annotation === void 0) {\n throw new Error(\"No annotation provided for id \" + id);\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n };\n ChangeAnnotations2.prototype.nextId = function() {\n this._counter++;\n return this._counter.toString();\n };\n return ChangeAnnotations2;\n}();\nvar WorkspaceChange = function() {\n function WorkspaceChange2(workspaceEdit) {\n var _this = this;\n this._textEditChanges = /* @__PURE__ */ Object.create(null);\n if (workspaceEdit !== void 0) {\n this._workspaceEdit = workspaceEdit;\n if (workspaceEdit.documentChanges) {\n this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n workspaceEdit.documentChanges.forEach(function(change) {\n if (TextDocumentEdit.is(change)) {\n var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n } else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach(function(key) {\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n _this._textEditChanges[key] = textEditChange;\n });\n }\n } else {\n this._workspaceEdit = {};\n }\n }\n Object.defineProperty(WorkspaceChange2.prototype, \"edit\", {\n get: function() {\n this.initDocumentChanges();\n if (this._changeAnnotations !== void 0) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = void 0;\n } else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n return this._workspaceEdit;\n },\n enumerable: false,\n configurable: true\n });\n WorkspaceChange2.prototype.getTextEditChange = function(key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var textDocument = { uri: key.uri, version: key.version };\n var result = this._textEditChanges[textDocument.uri];\n if (!result) {\n var edits = [];\n var textDocumentEdit = {\n textDocument,\n edits\n };\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n result = new TextEditChangeImpl(edits, this._changeAnnotations);\n this._textEditChanges[textDocument.uri] = result;\n }\n return result;\n } else {\n this.initChanges();\n if (this._workspaceEdit.changes === void 0) {\n throw new Error(\"Workspace edit is not configured for normal text edit changes.\");\n }\n var result = this._textEditChanges[key];\n if (!result) {\n var edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n return result;\n }\n };\n WorkspaceChange2.prototype.initDocumentChanges = function() {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n };\n WorkspaceChange2.prototype.initChanges = function() {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._workspaceEdit.changes = /* @__PURE__ */ Object.create(null);\n }\n };\n WorkspaceChange2.prototype.createFile = function(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === void 0) {\n operation = CreateFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = CreateFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n };\n WorkspaceChange2.prototype.renameFile = function(oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === void 0) {\n operation = RenameFile.create(oldUri, newUri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = RenameFile.create(oldUri, newUri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n };\n WorkspaceChange2.prototype.deleteFile = function(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === void 0) {\n operation = DeleteFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = DeleteFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n };\n return WorkspaceChange2;\n}();\nvar TextDocumentIdentifier;\n(function(TextDocumentIdentifier2) {\n function create(uri) {\n return { uri };\n }\n TextDocumentIdentifier2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier2.is = is;\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\nvar VersionedTextDocumentIdentifier;\n(function(VersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return { uri, version };\n }\n VersionedTextDocumentIdentifier2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n VersionedTextDocumentIdentifier2.is = is;\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\nvar OptionalVersionedTextDocumentIdentifier;\n(function(OptionalVersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return { uri, version };\n }\n OptionalVersionedTextDocumentIdentifier2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n }\n OptionalVersionedTextDocumentIdentifier2.is = is;\n})(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));\nvar TextDocumentItem;\n(function(TextDocumentItem2) {\n function create(uri, languageId, version, text) {\n return { uri, languageId, version, text };\n }\n TextDocumentItem2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n }\n TextDocumentItem2.is = is;\n})(TextDocumentItem || (TextDocumentItem = {}));\nvar MarkupKind;\n(function(MarkupKind2) {\n MarkupKind2.PlainText = \"plaintext\";\n MarkupKind2.Markdown = \"markdown\";\n})(MarkupKind || (MarkupKind = {}));\n(function(MarkupKind2) {\n function is(value) {\n var candidate = value;\n return candidate === MarkupKind2.PlainText || candidate === MarkupKind2.Markdown;\n }\n MarkupKind2.is = is;\n})(MarkupKind || (MarkupKind = {}));\nvar MarkupContent;\n(function(MarkupContent2) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n MarkupContent2.is = is;\n})(MarkupContent || (MarkupContent = {}));\nvar CompletionItemKind;\n(function(CompletionItemKind2) {\n CompletionItemKind2.Text = 1;\n CompletionItemKind2.Method = 2;\n CompletionItemKind2.Function = 3;\n CompletionItemKind2.Constructor = 4;\n CompletionItemKind2.Field = 5;\n CompletionItemKind2.Variable = 6;\n CompletionItemKind2.Class = 7;\n CompletionItemKind2.Interface = 8;\n CompletionItemKind2.Module = 9;\n CompletionItemKind2.Property = 10;\n CompletionItemKind2.Unit = 11;\n CompletionItemKind2.Value = 12;\n CompletionItemKind2.Enum = 13;\n CompletionItemKind2.Keyword = 14;\n CompletionItemKind2.Snippet = 15;\n CompletionItemKind2.Color = 16;\n CompletionItemKind2.File = 17;\n CompletionItemKind2.Reference = 18;\n CompletionItemKind2.Folder = 19;\n CompletionItemKind2.EnumMember = 20;\n CompletionItemKind2.Constant = 21;\n CompletionItemKind2.Struct = 22;\n CompletionItemKind2.Event = 23;\n CompletionItemKind2.Operator = 24;\n CompletionItemKind2.TypeParameter = 25;\n})(CompletionItemKind || (CompletionItemKind = {}));\nvar InsertTextFormat;\n(function(InsertTextFormat2) {\n InsertTextFormat2.PlainText = 1;\n InsertTextFormat2.Snippet = 2;\n})(InsertTextFormat || (InsertTextFormat = {}));\nvar CompletionItemTag;\n(function(CompletionItemTag2) {\n CompletionItemTag2.Deprecated = 1;\n})(CompletionItemTag || (CompletionItemTag = {}));\nvar InsertReplaceEdit;\n(function(InsertReplaceEdit2) {\n function create(newText, insert, replace) {\n return { newText, insert, replace };\n }\n InsertReplaceEdit2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n InsertReplaceEdit2.is = is;\n})(InsertReplaceEdit || (InsertReplaceEdit = {}));\nvar InsertTextMode;\n(function(InsertTextMode2) {\n InsertTextMode2.asIs = 1;\n InsertTextMode2.adjustIndentation = 2;\n})(InsertTextMode || (InsertTextMode = {}));\nvar CompletionItem;\n(function(CompletionItem2) {\n function create(label) {\n return { label };\n }\n CompletionItem2.create = create;\n})(CompletionItem || (CompletionItem = {}));\nvar CompletionList;\n(function(CompletionList2) {\n function create(items, isIncomplete) {\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\n }\n CompletionList2.create = create;\n})(CompletionList || (CompletionList = {}));\nvar MarkedString;\n(function(MarkedString2) {\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\");\n }\n MarkedString2.fromPlainText = fromPlainText;\n function is(value) {\n var candidate = value;\n return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value);\n }\n MarkedString2.is = is;\n})(MarkedString || (MarkedString = {}));\nvar Hover;\n(function(Hover2) {\n function is(value) {\n var candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\n }\n Hover2.is = is;\n})(Hover || (Hover = {}));\nvar ParameterInformation;\n(function(ParameterInformation2) {\n function create(label, documentation) {\n return documentation ? { label, documentation } : { label };\n }\n ParameterInformation2.create = create;\n})(ParameterInformation || (ParameterInformation = {}));\nvar SignatureInformation;\n(function(SignatureInformation2) {\n function create(label, documentation) {\n var parameters = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n parameters[_i - 2] = arguments[_i];\n }\n var result = { label };\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n } else {\n result.parameters = [];\n }\n return result;\n }\n SignatureInformation2.create = create;\n})(SignatureInformation || (SignatureInformation = {}));\nvar DocumentHighlightKind;\n(function(DocumentHighlightKind2) {\n DocumentHighlightKind2.Text = 1;\n DocumentHighlightKind2.Read = 2;\n DocumentHighlightKind2.Write = 3;\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\nvar DocumentHighlight;\n(function(DocumentHighlight2) {\n function create(range, kind) {\n var result = { range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n DocumentHighlight2.create = create;\n})(DocumentHighlight || (DocumentHighlight = {}));\nvar SymbolKind;\n(function(SymbolKind2) {\n SymbolKind2.File = 1;\n SymbolKind2.Module = 2;\n SymbolKind2.Namespace = 3;\n SymbolKind2.Package = 4;\n SymbolKind2.Class = 5;\n SymbolKind2.Method = 6;\n SymbolKind2.Property = 7;\n SymbolKind2.Field = 8;\n SymbolKind2.Constructor = 9;\n SymbolKind2.Enum = 10;\n SymbolKind2.Interface = 11;\n SymbolKind2.Function = 12;\n SymbolKind2.Variable = 13;\n SymbolKind2.Constant = 14;\n SymbolKind2.String = 15;\n SymbolKind2.Number = 16;\n SymbolKind2.Boolean = 17;\n SymbolKind2.Array = 18;\n SymbolKind2.Object = 19;\n SymbolKind2.Key = 20;\n SymbolKind2.Null = 21;\n SymbolKind2.EnumMember = 22;\n SymbolKind2.Struct = 23;\n SymbolKind2.Event = 24;\n SymbolKind2.Operator = 25;\n SymbolKind2.TypeParameter = 26;\n})(SymbolKind || (SymbolKind = {}));\nvar SymbolTag;\n(function(SymbolTag2) {\n SymbolTag2.Deprecated = 1;\n})(SymbolTag || (SymbolTag = {}));\nvar SymbolInformation;\n(function(SymbolInformation2) {\n function create(name, kind, range, uri, containerName) {\n var result = {\n name,\n kind,\n location: { uri, range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n SymbolInformation2.create = create;\n})(SymbolInformation || (SymbolInformation = {}));\nvar DocumentSymbol;\n(function(DocumentSymbol2) {\n function create(name, detail, kind, range, selectionRange, children) {\n var result = {\n name,\n detail,\n kind,\n range,\n selectionRange\n };\n if (children !== void 0) {\n result.children = children;\n }\n return result;\n }\n DocumentSymbol2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags));\n }\n DocumentSymbol2.is = is;\n})(DocumentSymbol || (DocumentSymbol = {}));\nvar CodeActionKind;\n(function(CodeActionKind2) {\n CodeActionKind2.Empty = \"\";\n CodeActionKind2.QuickFix = \"quickfix\";\n CodeActionKind2.Refactor = \"refactor\";\n CodeActionKind2.RefactorExtract = \"refactor.extract\";\n CodeActionKind2.RefactorInline = \"refactor.inline\";\n CodeActionKind2.RefactorRewrite = \"refactor.rewrite\";\n CodeActionKind2.Source = \"source\";\n CodeActionKind2.SourceOrganizeImports = \"source.organizeImports\";\n CodeActionKind2.SourceFixAll = \"source.fixAll\";\n})(CodeActionKind || (CodeActionKind = {}));\nvar CodeActionContext;\n(function(CodeActionContext2) {\n function create(diagnostics, only) {\n var result = { diagnostics };\n if (only !== void 0 && only !== null) {\n result.only = only;\n }\n return result;\n }\n CodeActionContext2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));\n }\n CodeActionContext2.is = is;\n})(CodeActionContext || (CodeActionContext = {}));\nvar CodeAction;\n(function(CodeAction2) {\n function create(title, kindOrCommandOrEdit, kind) {\n var result = { title };\n var checkKind = true;\n if (typeof kindOrCommandOrEdit === \"string\") {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n } else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n } else {\n result.edit = kindOrCommandOrEdit;\n }\n if (checkKind && kind !== void 0) {\n result.kind = kind;\n }\n return result;\n }\n CodeAction2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\n }\n CodeAction2.is = is;\n})(CodeAction || (CodeAction = {}));\nvar CodeLens;\n(function(CodeLens2) {\n function create(range, data) {\n var result = { range };\n if (Is.defined(data)) {\n result.data = data;\n }\n return result;\n }\n CodeLens2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n CodeLens2.is = is;\n})(CodeLens || (CodeLens = {}));\nvar FormattingOptions;\n(function(FormattingOptions2) {\n function create(tabSize, insertSpaces) {\n return { tabSize, insertSpaces };\n }\n FormattingOptions2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n FormattingOptions2.is = is;\n})(FormattingOptions || (FormattingOptions = {}));\nvar DocumentLink;\n(function(DocumentLink2) {\n function create(range, target, data) {\n return { range, target, data };\n }\n DocumentLink2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n DocumentLink2.is = is;\n})(DocumentLink || (DocumentLink = {}));\nvar SelectionRange;\n(function(SelectionRange2) {\n function create(range, parent) {\n return { range, parent };\n }\n SelectionRange2.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && Range.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent));\n }\n SelectionRange2.is = is;\n})(SelectionRange || (SelectionRange = {}));\nvar TextDocument;\n(function(TextDocument2) {\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n TextDocument2.is = is;\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits, function(a, b) {\n var diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n var lastModifiedOffset = text.length;\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\n var e = sortedEdits[i];\n var startOffset = document.offsetAt(e.range.start);\n var endOffset = document.offsetAt(e.range.end);\n if (endOffset <= lastModifiedOffset) {\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n } else {\n throw new Error(\"Overlapping edit\");\n }\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n TextDocument2.applyEdits = applyEdits;\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n return data;\n }\n var p = data.length / 2 | 0;\n var left = data.slice(0, p);\n var right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n data[i++] = left[leftIdx++];\n } else {\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n }\n})(TextDocument || (TextDocument = {}));\nvar FullTextDocument = function() {\n function FullTextDocument2(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = void 0;\n }\n Object.defineProperty(FullTextDocument2.prototype, \"uri\", {\n get: function() {\n return this._uri;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument2.prototype, \"languageId\", {\n get: function() {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument2.prototype, \"version\", {\n get: function() {\n return this._version;\n },\n enumerable: false,\n configurable: true\n });\n FullTextDocument2.prototype.getText = function(range) {\n if (range) {\n var start = this.offsetAt(range.start);\n var end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n };\n FullTextDocument2.prototype.update = function(event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = void 0;\n };\n FullTextDocument2.prototype.getLineOffsets = function() {\n if (this._lineOffsets === void 0) {\n var lineOffsets = [];\n var text = this._content;\n var isLineStart = true;\n for (var i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n var ch = text.charAt(i);\n isLineStart = ch === \"\\r\" || ch === \"\\n\";\n if (ch === \"\\r\" && i + 1 < text.length && text.charAt(i + 1) === \"\\n\") {\n i++;\n }\n }\n if (isLineStart && text.length > 0) {\n lineOffsets.push(text.length);\n }\n this._lineOffsets = lineOffsets;\n }\n return this._lineOffsets;\n };\n FullTextDocument2.prototype.positionAt = function(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0, high = lineOffsets.length;\n if (high === 0) {\n return Position.create(0, offset);\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n var line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n };\n FullTextDocument2.prototype.offsetAt = function(position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n } else if (position.line < 0) {\n return 0;\n }\n var lineOffset = lineOffsets[position.line];\n var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n };\n Object.defineProperty(FullTextDocument2.prototype, \"lineCount\", {\n get: function() {\n return this.getLineOffsets().length;\n },\n enumerable: false,\n configurable: true\n });\n return FullTextDocument2;\n}();\nvar Is;\n(function(Is2) {\n var toString = Object.prototype.toString;\n function defined(value) {\n return typeof value !== \"undefined\";\n }\n Is2.defined = defined;\n function undefined2(value) {\n return typeof value === \"undefined\";\n }\n Is2.undefined = undefined2;\n function boolean(value) {\n return value === true || value === false;\n }\n Is2.boolean = boolean;\n function string(value) {\n return toString.call(value) === \"[object String]\";\n }\n Is2.string = string;\n function number(value) {\n return toString.call(value) === \"[object Number]\";\n }\n Is2.number = number;\n function numberRange(value, min, max) {\n return toString.call(value) === \"[object Number]\" && min <= value && value <= max;\n }\n Is2.numberRange = numberRange;\n function integer2(value) {\n return toString.call(value) === \"[object Number]\" && -2147483648 <= value && value <= 2147483647;\n }\n Is2.integer = integer2;\n function uinteger2(value) {\n return toString.call(value) === \"[object Number]\" && 0 <= value && value <= 2147483647;\n }\n Is2.uinteger = uinteger2;\n function func(value) {\n return toString.call(value) === \"[object Function]\";\n }\n Is2.func = func;\n function objectLiteral(value) {\n return value !== null && typeof value === \"object\";\n }\n Is2.objectLiteral = objectLiteral;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n Is2.typedArray = typedArray;\n})(Is || (Is = {}));\n\n// src/language/common/lspLanguageFeatures.ts\nvar DiagnosticsAdapter = class {\n constructor(_languageId, _worker, configChangeEvent) {\n this._languageId = _languageId;\n this._worker = _worker;\n const onModelAdd = (model) => {\n let modeId = model.getLanguageId();\n if (modeId !== this._languageId) {\n return;\n }\n let handle;\n this._listener[model.uri.toString()] = model.onDidChangeContent(() => {\n window.clearTimeout(handle);\n handle = window.setTimeout(() => this._doValidate(model.uri, modeId), 500);\n });\n this._doValidate(model.uri, modeId);\n };\n const onModelRemoved = (model) => {\n monaco_editor_core_exports.editor.setModelMarkers(model, this._languageId, []);\n let uriStr = model.uri.toString();\n let listener = this._listener[uriStr];\n if (listener) {\n listener.dispose();\n delete this._listener[uriStr];\n }\n };\n this._disposables.push(monaco_editor_core_exports.editor.onDidCreateModel(onModelAdd));\n this._disposables.push(monaco_editor_core_exports.editor.onWillDisposeModel(onModelRemoved));\n this._disposables.push(monaco_editor_core_exports.editor.onDidChangeModelLanguage((event) => {\n onModelRemoved(event.model);\n onModelAdd(event.model);\n }));\n this._disposables.push(configChangeEvent((_) => {\n monaco_editor_core_exports.editor.getModels().forEach((model) => {\n if (model.getLanguageId() === this._languageId) {\n onModelRemoved(model);\n onModelAdd(model);\n }\n });\n }));\n this._disposables.push({\n dispose: () => {\n monaco_editor_core_exports.editor.getModels().forEach(onModelRemoved);\n for (let key in this._listener) {\n this._listener[key].dispose();\n }\n }\n });\n monaco_editor_core_exports.editor.getModels().forEach(onModelAdd);\n }\n _disposables = [];\n _listener = /* @__PURE__ */ Object.create(null);\n dispose() {\n this._disposables.forEach((d) => d && d.dispose());\n this._disposables.length = 0;\n }\n _doValidate(resource, languageId) {\n this._worker(resource).then((worker) => {\n return worker.doValidation(resource.toString());\n }).then((diagnostics) => {\n const markers = diagnostics.map((d) => toDiagnostics(resource, d));\n let model = monaco_editor_core_exports.editor.getModel(resource);\n if (model && model.getLanguageId() === languageId) {\n monaco_editor_core_exports.editor.setModelMarkers(model, languageId, markers);\n }\n }).then(void 0, (err) => {\n console.error(err);\n });\n }\n};\nfunction toSeverity(lsSeverity) {\n switch (lsSeverity) {\n case DiagnosticSeverity.Error:\n return monaco_editor_core_exports.MarkerSeverity.Error;\n case DiagnosticSeverity.Warning:\n return monaco_editor_core_exports.MarkerSeverity.Warning;\n case DiagnosticSeverity.Information:\n return monaco_editor_core_exports.MarkerSeverity.Info;\n case DiagnosticSeverity.Hint:\n return monaco_editor_core_exports.MarkerSeverity.Hint;\n default:\n return monaco_editor_core_exports.MarkerSeverity.Info;\n }\n}\nfunction toDiagnostics(resource, diag) {\n let code = typeof diag.code === \"number\" ? String(diag.code) : diag.code;\n return {\n severity: toSeverity(diag.severity),\n startLineNumber: diag.range.start.line + 1,\n startColumn: diag.range.start.character + 1,\n endLineNumber: diag.range.end.line + 1,\n endColumn: diag.range.end.character + 1,\n message: diag.message,\n code,\n source: diag.source\n };\n}\nvar CompletionAdapter = class {\n constructor(_worker, _triggerCharacters) {\n this._worker = _worker;\n this._triggerCharacters = _triggerCharacters;\n }\n get triggerCharacters() {\n return this._triggerCharacters;\n }\n provideCompletionItems(model, position, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doComplete(resource.toString(), fromPosition(position));\n }).then((info) => {\n if (!info) {\n return;\n }\n const wordInfo = model.getWordUntilPosition(position);\n const wordRange = new monaco_editor_core_exports.Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn);\n const items = info.items.map((entry) => {\n const item = {\n label: entry.label,\n insertText: entry.insertText || entry.label,\n sortText: entry.sortText,\n filterText: entry.filterText,\n documentation: entry.documentation,\n detail: entry.detail,\n command: toCommand(entry.command),\n range: wordRange,\n kind: toCompletionItemKind(entry.kind)\n };\n if (entry.textEdit) {\n if (isInsertReplaceEdit(entry.textEdit)) {\n item.range = {\n insert: toRange(entry.textEdit.insert),\n replace: toRange(entry.textEdit.replace)\n };\n } else {\n item.range = toRange(entry.textEdit.range);\n }\n item.insertText = entry.textEdit.newText;\n }\n if (entry.additionalTextEdits) {\n item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit);\n }\n if (entry.insertTextFormat === InsertTextFormat.Snippet) {\n item.insertTextRules = monaco_editor_core_exports.languages.CompletionItemInsertTextRule.InsertAsSnippet;\n }\n return item;\n });\n return {\n isIncomplete: info.isIncomplete,\n suggestions: items\n };\n });\n }\n};\nfunction fromPosition(position) {\n if (!position) {\n return void 0;\n }\n return { character: position.column - 1, line: position.lineNumber - 1 };\n}\nfunction fromRange(range) {\n if (!range) {\n return void 0;\n }\n return {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1\n },\n end: { line: range.endLineNumber - 1, character: range.endColumn - 1 }\n };\n}\nfunction toRange(range) {\n if (!range) {\n return void 0;\n }\n return new monaco_editor_core_exports.Range(range.start.line + 1, range.start.character + 1, range.end.line + 1, range.end.character + 1);\n}\nfunction isInsertReplaceEdit(edit) {\n return typeof edit.insert !== \"undefined\" && typeof edit.replace !== \"undefined\";\n}\nfunction toCompletionItemKind(kind) {\n const mItemKind = monaco_editor_core_exports.languages.CompletionItemKind;\n switch (kind) {\n case CompletionItemKind.Text:\n return mItemKind.Text;\n case CompletionItemKind.Method:\n return mItemKind.Method;\n case CompletionItemKind.Function:\n return mItemKind.Function;\n case CompletionItemKind.Constructor:\n return mItemKind.Constructor;\n case CompletionItemKind.Field:\n return mItemKind.Field;\n case CompletionItemKind.Variable:\n return mItemKind.Variable;\n case CompletionItemKind.Class:\n return mItemKind.Class;\n case CompletionItemKind.Interface:\n return mItemKind.Interface;\n case CompletionItemKind.Module:\n return mItemKind.Module;\n case CompletionItemKind.Property:\n return mItemKind.Property;\n case CompletionItemKind.Unit:\n return mItemKind.Unit;\n case CompletionItemKind.Value:\n return mItemKind.Value;\n case CompletionItemKind.Enum:\n return mItemKind.Enum;\n case CompletionItemKind.Keyword:\n return mItemKind.Keyword;\n case CompletionItemKind.Snippet:\n return mItemKind.Snippet;\n case CompletionItemKind.Color:\n return mItemKind.Color;\n case CompletionItemKind.File:\n return mItemKind.File;\n case CompletionItemKind.Reference:\n return mItemKind.Reference;\n }\n return mItemKind.Property;\n}\nfunction toTextEdit(textEdit) {\n if (!textEdit) {\n return void 0;\n }\n return {\n range: toRange(textEdit.range),\n text: textEdit.newText\n };\n}\nfunction toCommand(c) {\n return c && c.command === \"editor.action.triggerSuggest\" ? { id: c.command, title: c.title, arguments: c.arguments } : void 0;\n}\nvar HoverAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideHover(model, position, token) {\n let resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doHover(resource.toString(), fromPosition(position));\n }).then((info) => {\n if (!info) {\n return;\n }\n return {\n range: toRange(info.range),\n contents: toMarkedStringArray(info.contents)\n };\n });\n }\n};\nfunction isMarkupContent(thing) {\n return thing && typeof thing === \"object\" && typeof thing.kind === \"string\";\n}\nfunction toMarkdownString(entry) {\n if (typeof entry === \"string\") {\n return {\n value: entry\n };\n }\n if (isMarkupContent(entry)) {\n if (entry.kind === \"plaintext\") {\n return {\n value: entry.value.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\")\n };\n }\n return {\n value: entry.value\n };\n }\n return { value: \"```\" + entry.language + \"\\n\" + entry.value + \"\\n```\\n\" };\n}\nfunction toMarkedStringArray(contents) {\n if (!contents) {\n return void 0;\n }\n if (Array.isArray(contents)) {\n return contents.map(toMarkdownString);\n }\n return [toMarkdownString(contents)];\n}\nvar DocumentHighlightAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentHighlights(model, position, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentHighlights(resource.toString(), fromPosition(position))).then((entries) => {\n if (!entries) {\n return;\n }\n return entries.map((entry) => {\n return {\n range: toRange(entry.range),\n kind: toDocumentHighlightKind(entry.kind)\n };\n });\n });\n }\n};\nfunction toDocumentHighlightKind(kind) {\n switch (kind) {\n case DocumentHighlightKind.Read:\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Read;\n case DocumentHighlightKind.Write:\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Write;\n case DocumentHighlightKind.Text:\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Text;\n }\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Text;\n}\nvar DefinitionAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDefinition(model, position, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.findDefinition(resource.toString(), fromPosition(position));\n }).then((definition) => {\n if (!definition) {\n return;\n }\n return [toLocation(definition)];\n });\n }\n};\nfunction toLocation(location) {\n return {\n uri: monaco_editor_core_exports.Uri.parse(location.uri),\n range: toRange(location.range)\n };\n}\nvar ReferenceAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideReferences(model, position, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.findReferences(resource.toString(), fromPosition(position));\n }).then((entries) => {\n if (!entries) {\n return;\n }\n return entries.map(toLocation);\n });\n }\n};\nvar RenameAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideRenameEdits(model, position, newName, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doRename(resource.toString(), fromPosition(position), newName);\n }).then((edit) => {\n return toWorkspaceEdit(edit);\n });\n }\n};\nfunction toWorkspaceEdit(edit) {\n if (!edit || !edit.changes) {\n return void 0;\n }\n let resourceEdits = [];\n for (let uri in edit.changes) {\n const _uri = monaco_editor_core_exports.Uri.parse(uri);\n for (let e of edit.changes[uri]) {\n resourceEdits.push({\n resource: _uri,\n versionId: void 0,\n textEdit: {\n range: toRange(e.range),\n text: e.newText\n }\n });\n }\n }\n return {\n edits: resourceEdits\n };\n}\nvar DocumentSymbolAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentSymbols(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentSymbols(resource.toString())).then((items) => {\n if (!items) {\n return;\n }\n return items.map((item) => ({\n name: item.name,\n detail: \"\",\n containerName: item.containerName,\n kind: toSymbolKind(item.kind),\n range: toRange(item.location.range),\n selectionRange: toRange(item.location.range),\n tags: []\n }));\n });\n }\n};\nfunction toSymbolKind(kind) {\n let mKind = monaco_editor_core_exports.languages.SymbolKind;\n switch (kind) {\n case SymbolKind.File:\n return mKind.Array;\n case SymbolKind.Module:\n return mKind.Module;\n case SymbolKind.Namespace:\n return mKind.Namespace;\n case SymbolKind.Package:\n return mKind.Package;\n case SymbolKind.Class:\n return mKind.Class;\n case SymbolKind.Method:\n return mKind.Method;\n case SymbolKind.Property:\n return mKind.Property;\n case SymbolKind.Field:\n return mKind.Field;\n case SymbolKind.Constructor:\n return mKind.Constructor;\n case SymbolKind.Enum:\n return mKind.Enum;\n case SymbolKind.Interface:\n return mKind.Interface;\n case SymbolKind.Function:\n return mKind.Function;\n case SymbolKind.Variable:\n return mKind.Variable;\n case SymbolKind.Constant:\n return mKind.Constant;\n case SymbolKind.String:\n return mKind.String;\n case SymbolKind.Number:\n return mKind.Number;\n case SymbolKind.Boolean:\n return mKind.Boolean;\n case SymbolKind.Array:\n return mKind.Array;\n }\n return mKind.Function;\n}\nvar DocumentLinkAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideLinks(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentLinks(resource.toString())).then((items) => {\n if (!items) {\n return;\n }\n return {\n links: items.map((item) => ({\n range: toRange(item.range),\n url: item.target\n }))\n };\n });\n }\n};\nvar DocumentFormattingEditProvider = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentFormattingEdits(model, options, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.format(resource.toString(), null, fromFormattingOptions(options)).then((edits) => {\n if (!edits || edits.length === 0) {\n return;\n }\n return edits.map(toTextEdit);\n });\n });\n }\n};\nvar DocumentRangeFormattingEditProvider = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentRangeFormattingEdits(model, range, options, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.format(resource.toString(), fromRange(range), fromFormattingOptions(options)).then((edits) => {\n if (!edits || edits.length === 0) {\n return;\n }\n return edits.map(toTextEdit);\n });\n });\n }\n};\nfunction fromFormattingOptions(options) {\n return {\n tabSize: options.tabSize,\n insertSpaces: options.insertSpaces\n };\n}\nvar DocumentColorAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentColors(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentColors(resource.toString())).then((infos) => {\n if (!infos) {\n return;\n }\n return infos.map((item) => ({\n color: item.color,\n range: toRange(item.range)\n }));\n });\n }\n provideColorPresentations(model, info, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.getColorPresentations(resource.toString(), info.color, fromRange(info.range))).then((presentations) => {\n if (!presentations) {\n return;\n }\n return presentations.map((presentation) => {\n let item = {\n label: presentation.label\n };\n if (presentation.textEdit) {\n item.textEdit = toTextEdit(presentation.textEdit);\n }\n if (presentation.additionalTextEdits) {\n item.additionalTextEdits = presentation.additionalTextEdits.map(toTextEdit);\n }\n return item;\n });\n });\n }\n};\nvar FoldingRangeAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideFoldingRanges(model, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.getFoldingRanges(resource.toString(), context)).then((ranges) => {\n if (!ranges) {\n return;\n }\n return ranges.map((range) => {\n const result = {\n start: range.startLine + 1,\n end: range.endLine + 1\n };\n if (typeof range.kind !== \"undefined\") {\n result.kind = toFoldingRangeKind(range.kind);\n }\n return result;\n });\n });\n }\n};\nfunction toFoldingRangeKind(kind) {\n switch (kind) {\n case FoldingRangeKind.Comment:\n return monaco_editor_core_exports.languages.FoldingRangeKind.Comment;\n case FoldingRangeKind.Imports:\n return monaco_editor_core_exports.languages.FoldingRangeKind.Imports;\n case FoldingRangeKind.Region:\n return monaco_editor_core_exports.languages.FoldingRangeKind.Region;\n }\n return void 0;\n}\nvar SelectionRangeAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideSelectionRanges(model, positions, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.getSelectionRanges(resource.toString(), positions.map(fromPosition))).then((selectionRanges) => {\n if (!selectionRanges) {\n return;\n }\n return selectionRanges.map((selectionRange) => {\n const result = [];\n while (selectionRange) {\n result.push({ range: toRange(selectionRange.range) });\n selectionRange = selectionRange.parent;\n }\n return result;\n });\n });\n }\n};\n\n// src/language/html/htmlMode.ts\nvar HTMLCompletionAdapter = class extends CompletionAdapter {\n constructor(worker) {\n super(worker, [\".\", \":\", \"<\", '\"', \"=\", \"/\"]);\n }\n};\nfunction setupMode1(defaults) {\n const client = new WorkerManager(defaults);\n const worker = (...uris) => {\n return client.getLanguageServiceWorker(...uris);\n };\n let languageId = defaults.languageId;\n monaco_editor_core_exports.languages.registerCompletionItemProvider(languageId, new HTMLCompletionAdapter(worker));\n monaco_editor_core_exports.languages.registerHoverProvider(languageId, new HoverAdapter(worker));\n monaco_editor_core_exports.languages.registerDocumentHighlightProvider(languageId, new DocumentHighlightAdapter(worker));\n monaco_editor_core_exports.languages.registerLinkProvider(languageId, new DocumentLinkAdapter(worker));\n monaco_editor_core_exports.languages.registerFoldingRangeProvider(languageId, new FoldingRangeAdapter(worker));\n monaco_editor_core_exports.languages.registerDocumentSymbolProvider(languageId, new DocumentSymbolAdapter(worker));\n monaco_editor_core_exports.languages.registerSelectionRangeProvider(languageId, new SelectionRangeAdapter(worker));\n monaco_editor_core_exports.languages.registerRenameProvider(languageId, new RenameAdapter(worker));\n if (languageId === \"html\") {\n monaco_editor_core_exports.languages.registerDocumentFormattingEditProvider(languageId, new DocumentFormattingEditProvider(worker));\n monaco_editor_core_exports.languages.registerDocumentRangeFormattingEditProvider(languageId, new DocumentRangeFormattingEditProvider(worker));\n }\n}\nfunction setupMode(defaults) {\n const disposables = [];\n const providers = [];\n const client = new WorkerManager(defaults);\n disposables.push(client);\n const worker = (...uris) => {\n return client.getLanguageServiceWorker(...uris);\n };\n function registerProviders() {\n const { languageId, modeConfiguration } = defaults;\n disposeAll(providers);\n if (modeConfiguration.completionItems) {\n providers.push(monaco_editor_core_exports.languages.registerCompletionItemProvider(languageId, new HTMLCompletionAdapter(worker)));\n }\n if (modeConfiguration.hovers) {\n providers.push(monaco_editor_core_exports.languages.registerHoverProvider(languageId, new HoverAdapter(worker)));\n }\n if (modeConfiguration.documentHighlights) {\n providers.push(monaco_editor_core_exports.languages.registerDocumentHighlightProvider(languageId, new DocumentHighlightAdapter(worker)));\n }\n if (modeConfiguration.links) {\n providers.push(monaco_editor_core_exports.languages.registerLinkProvider(languageId, new DocumentLinkAdapter(worker)));\n }\n if (modeConfiguration.documentSymbols) {\n providers.push(monaco_editor_core_exports.languages.registerDocumentSymbolProvider(languageId, new DocumentSymbolAdapter(worker)));\n }\n if (modeConfiguration.rename) {\n providers.push(monaco_editor_core_exports.languages.registerRenameProvider(languageId, new RenameAdapter(worker)));\n }\n if (modeConfiguration.foldingRanges) {\n providers.push(monaco_editor_core_exports.languages.registerFoldingRangeProvider(languageId, new FoldingRangeAdapter(worker)));\n }\n if (modeConfiguration.selectionRanges) {\n providers.push(monaco_editor_core_exports.languages.registerSelectionRangeProvider(languageId, new SelectionRangeAdapter(worker)));\n }\n if (modeConfiguration.documentFormattingEdits) {\n providers.push(monaco_editor_core_exports.languages.registerDocumentFormattingEditProvider(languageId, new DocumentFormattingEditProvider(worker)));\n }\n if (modeConfiguration.documentRangeFormattingEdits) {\n providers.push(monaco_editor_core_exports.languages.registerDocumentRangeFormattingEditProvider(languageId, new DocumentRangeFormattingEditProvider(worker)));\n }\n }\n registerProviders();\n disposables.push(asDisposable(providers));\n return asDisposable(disposables);\n}\nfunction asDisposable(disposables) {\n return { dispose: () => disposeAll(disposables) };\n}\nfunction disposeAll(disposables) {\n while (disposables.length) {\n disposables.pop().dispose();\n }\n}\nexport {\n CompletionAdapter,\n DefinitionAdapter,\n DiagnosticsAdapter,\n DocumentColorAdapter,\n DocumentFormattingEditProvider,\n DocumentHighlightAdapter,\n DocumentLinkAdapter,\n DocumentRangeFormattingEditProvider,\n DocumentSymbolAdapter,\n FoldingRangeAdapter,\n HoverAdapter,\n ReferenceAdapter,\n RenameAdapter,\n SelectionRangeAdapter,\n WorkerManager,\n fromPosition,\n fromRange,\n setupMode,\n setupMode1,\n toRange,\n toTextEdit\n};\n","import '../../editor/editor.api.js';\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.34.1(547870b6881302c5b4ff32173c16d06009e3588f)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../../editor/editor.api.js\";\n\n// src/language/html/monaco.contribution.ts\nvar LanguageServiceDefaultsImpl = class {\n _onDidChange = new monaco_editor_core_exports.Emitter();\n _options;\n _modeConfiguration;\n _languageId;\n constructor(languageId, options, modeConfiguration) {\n this._languageId = languageId;\n this.setOptions(options);\n this.setModeConfiguration(modeConfiguration);\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get languageId() {\n return this._languageId;\n }\n get options() {\n return this._options;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n setOptions(options) {\n this._options = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n};\nvar formatDefaults = {\n tabSize: 4,\n insertSpaces: false,\n wrapLineLength: 120,\n unformatted: 'default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',\n contentUnformatted: \"pre\",\n indentInnerHtml: false,\n preserveNewLines: true,\n maxPreserveNewLines: void 0,\n indentHandlebars: false,\n endWithNewline: false,\n extraLiners: \"head, body, /html\",\n wrapAttributes: \"auto\"\n};\nvar optionsDefault = {\n format: formatDefaults,\n suggest: {},\n data: { useDefaultDataProvider: true }\n};\nfunction getConfigurationDefault(languageId) {\n return {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n links: true,\n documentHighlights: true,\n rename: true,\n colors: true,\n foldingRanges: true,\n selectionRanges: true,\n diagnostics: languageId === htmlLanguageId,\n documentFormattingEdits: languageId === htmlLanguageId,\n documentRangeFormattingEdits: languageId === htmlLanguageId\n };\n}\nvar htmlLanguageId = \"html\";\nvar handlebarsLanguageId = \"handlebars\";\nvar razorLanguageId = \"razor\";\nvar htmlLanguageService = registerHTMLLanguageService(htmlLanguageId, optionsDefault, getConfigurationDefault(htmlLanguageId));\nvar htmlDefaults = htmlLanguageService.defaults;\nvar handlebarLanguageService = registerHTMLLanguageService(handlebarsLanguageId, optionsDefault, getConfigurationDefault(handlebarsLanguageId));\nvar handlebarDefaults = handlebarLanguageService.defaults;\nvar razorLanguageService = registerHTMLLanguageService(razorLanguageId, optionsDefault, getConfigurationDefault(razorLanguageId));\nvar razorDefaults = razorLanguageService.defaults;\nmonaco_editor_core_exports.languages.html = {\n htmlDefaults,\n razorDefaults,\n handlebarDefaults,\n htmlLanguageService,\n handlebarLanguageService,\n razorLanguageService,\n registerHTMLLanguageService\n};\nfunction getMode() {\n if (false) {\n return new Promise((resolve, reject) => {\n __require([\"vs/language/html/htmlMode\"], resolve, reject);\n });\n } else {\n return import(\"./htmlMode.js\");\n }\n}\nfunction registerHTMLLanguageService(languageId, options = optionsDefault, modeConfiguration = getConfigurationDefault(languageId)) {\n const defaults = new LanguageServiceDefaultsImpl(languageId, options, modeConfiguration);\n let mode;\n const onLanguageListener = monaco_editor_core_exports.languages.onLanguage(languageId, async () => {\n mode = (await getMode()).setupMode(defaults);\n });\n return {\n defaults,\n dispose() {\n onLanguageListener.dispose();\n mode?.dispose();\n mode = void 0;\n }\n };\n}\nexport {\n handlebarDefaults,\n handlebarLanguageService,\n htmlDefaults,\n htmlLanguageService,\n razorDefaults,\n razorLanguageService,\n registerHTMLLanguageService\n};\n","/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.34.1(547870b6881302c5b4ff32173c16d06009e3588f)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../../editor/editor.api.js\";\n\n// src/language/json/workerManager.ts\nvar STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;\nvar WorkerManager = class {\n _defaults;\n _idleCheckInterval;\n _lastUsedTime;\n _configChangeListener;\n _worker;\n _client;\n constructor(defaults) {\n this._defaults = defaults;\n this._worker = null;\n this._client = null;\n this._idleCheckInterval = window.setInterval(() => this._checkIfIdle(), 30 * 1e3);\n this._lastUsedTime = 0;\n this._configChangeListener = this._defaults.onDidChange(() => this._stopWorker());\n }\n _stopWorker() {\n if (this._worker) {\n this._worker.dispose();\n this._worker = null;\n }\n this._client = null;\n }\n dispose() {\n clearInterval(this._idleCheckInterval);\n this._configChangeListener.dispose();\n this._stopWorker();\n }\n _checkIfIdle() {\n if (!this._worker) {\n return;\n }\n let timePassedSinceLastUsed = Date.now() - this._lastUsedTime;\n if (timePassedSinceLastUsed > STOP_WHEN_IDLE_FOR) {\n this._stopWorker();\n }\n }\n _getClient() {\n this._lastUsedTime = Date.now();\n if (!this._client) {\n this._worker = monaco_editor_core_exports.editor.createWebWorker({\n moduleId: \"vs/language/json/jsonWorker\",\n label: this._defaults.languageId,\n createData: {\n languageSettings: this._defaults.diagnosticsOptions,\n languageId: this._defaults.languageId,\n enableSchemaRequest: this._defaults.diagnosticsOptions.enableSchemaRequest\n }\n });\n this._client = this._worker.getProxy();\n }\n return this._client;\n }\n getLanguageServiceWorker(...resources) {\n let _client;\n return this._getClient().then((client) => {\n _client = client;\n }).then((_) => {\n if (this._worker) {\n return this._worker.withSyncedResources(resources);\n }\n }).then((_) => _client);\n }\n};\n\n// node_modules/vscode-languageserver-types/lib/esm/main.js\nvar integer;\n(function(integer2) {\n integer2.MIN_VALUE = -2147483648;\n integer2.MAX_VALUE = 2147483647;\n})(integer || (integer = {}));\nvar uinteger;\n(function(uinteger2) {\n uinteger2.MIN_VALUE = 0;\n uinteger2.MAX_VALUE = 2147483647;\n})(uinteger || (uinteger = {}));\nvar Position;\n(function(Position3) {\n function create(line, character) {\n if (line === Number.MAX_VALUE) {\n line = uinteger.MAX_VALUE;\n }\n if (character === Number.MAX_VALUE) {\n character = uinteger.MAX_VALUE;\n }\n return { line, character };\n }\n Position3.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n Position3.is = is;\n})(Position || (Position = {}));\nvar Range;\n(function(Range3) {\n function create(one, two, three, four) {\n if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n return { start: Position.create(one, two), end: Position.create(three, four) };\n } else if (Position.is(one) && Position.is(two)) {\n return { start: one, end: two };\n } else {\n throw new Error(\"Range#create called with invalid arguments[\" + one + \", \" + two + \", \" + three + \", \" + four + \"]\");\n }\n }\n Range3.create = create;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n Range3.is = is;\n})(Range || (Range = {}));\nvar Location;\n(function(Location2) {\n function create(uri, range) {\n return { uri, range };\n }\n Location2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n }\n Location2.is = is;\n})(Location || (Location = {}));\nvar LocationLink;\n(function(LocationLink2) {\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n return { targetUri, targetRange, targetSelectionRange, originSelectionRange };\n }\n LocationLink2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri) && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange)) && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n }\n LocationLink2.is = is;\n})(LocationLink || (LocationLink = {}));\nvar Color;\n(function(Color2) {\n function create(red, green, blue, alpha) {\n return {\n red,\n green,\n blue,\n alpha\n };\n }\n Color2.create = create;\n function is(value) {\n var candidate = value;\n return Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1);\n }\n Color2.is = is;\n})(Color || (Color = {}));\nvar ColorInformation;\n(function(ColorInformation2) {\n function create(range, color) {\n return {\n range,\n color\n };\n }\n ColorInformation2.create = create;\n function is(value) {\n var candidate = value;\n return Range.is(candidate.range) && Color.is(candidate.color);\n }\n ColorInformation2.is = is;\n})(ColorInformation || (ColorInformation = {}));\nvar ColorPresentation;\n(function(ColorPresentation2) {\n function create(label, textEdit, additionalTextEdits) {\n return {\n label,\n textEdit,\n additionalTextEdits\n };\n }\n ColorPresentation2.create = create;\n function is(value) {\n var candidate = value;\n return Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n }\n ColorPresentation2.is = is;\n})(ColorPresentation || (ColorPresentation = {}));\nvar FoldingRangeKind;\n(function(FoldingRangeKind2) {\n FoldingRangeKind2[\"Comment\"] = \"comment\";\n FoldingRangeKind2[\"Imports\"] = \"imports\";\n FoldingRangeKind2[\"Region\"] = \"region\";\n})(FoldingRangeKind || (FoldingRangeKind = {}));\nvar FoldingRange;\n(function(FoldingRange2) {\n function create(startLine, endLine, startCharacter, endCharacter, kind) {\n var result = {\n startLine,\n endLine\n };\n if (Is.defined(startCharacter)) {\n result.startCharacter = startCharacter;\n }\n if (Is.defined(endCharacter)) {\n result.endCharacter = endCharacter;\n }\n if (Is.defined(kind)) {\n result.kind = kind;\n }\n return result;\n }\n FoldingRange2.create = create;\n function is(value) {\n var candidate = value;\n return Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n }\n FoldingRange2.is = is;\n})(FoldingRange || (FoldingRange = {}));\nvar DiagnosticRelatedInformation;\n(function(DiagnosticRelatedInformation2) {\n function create(location, message) {\n return {\n location,\n message\n };\n }\n DiagnosticRelatedInformation2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n DiagnosticRelatedInformation2.is = is;\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\nvar DiagnosticSeverity;\n(function(DiagnosticSeverity2) {\n DiagnosticSeverity2.Error = 1;\n DiagnosticSeverity2.Warning = 2;\n DiagnosticSeverity2.Information = 3;\n DiagnosticSeverity2.Hint = 4;\n})(DiagnosticSeverity || (DiagnosticSeverity = {}));\nvar DiagnosticTag;\n(function(DiagnosticTag2) {\n DiagnosticTag2.Unnecessary = 1;\n DiagnosticTag2.Deprecated = 2;\n})(DiagnosticTag || (DiagnosticTag = {}));\nvar CodeDescription;\n(function(CodeDescription2) {\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && candidate !== null && Is.string(candidate.href);\n }\n CodeDescription2.is = is;\n})(CodeDescription || (CodeDescription = {}));\nvar Diagnostic;\n(function(Diagnostic2) {\n function create(range, message, severity, code, source, relatedInformation) {\n var result = { range, message };\n if (Is.defined(severity)) {\n result.severity = severity;\n }\n if (Is.defined(code)) {\n result.code = code;\n }\n if (Is.defined(source)) {\n result.source = source;\n }\n if (Is.defined(relatedInformation)) {\n result.relatedInformation = relatedInformation;\n }\n return result;\n }\n Diagnostic2.create = create;\n function is(value) {\n var _a;\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n }\n Diagnostic2.is = is;\n})(Diagnostic || (Diagnostic = {}));\nvar Command;\n(function(Command2) {\n function create(title, command) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var result = { title, command };\n if (Is.defined(args) && args.length > 0) {\n result.arguments = args;\n }\n return result;\n }\n Command2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n }\n Command2.is = is;\n})(Command || (Command = {}));\nvar TextEdit;\n(function(TextEdit2) {\n function replace(range, newText) {\n return { range, newText };\n }\n TextEdit2.replace = replace;\n function insert(position, newText) {\n return { range: { start: position, end: position }, newText };\n }\n TextEdit2.insert = insert;\n function del(range) {\n return { range, newText: \"\" };\n }\n TextEdit2.del = del;\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range.is(candidate.range);\n }\n TextEdit2.is = is;\n})(TextEdit || (TextEdit = {}));\nvar ChangeAnnotation;\n(function(ChangeAnnotation2) {\n function create(label, needsConfirmation, description) {\n var result = { label };\n if (needsConfirmation !== void 0) {\n result.needsConfirmation = needsConfirmation;\n }\n if (description !== void 0) {\n result.description = description;\n }\n return result;\n }\n ChangeAnnotation2.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0);\n }\n ChangeAnnotation2.is = is;\n})(ChangeAnnotation || (ChangeAnnotation = {}));\nvar ChangeAnnotationIdentifier;\n(function(ChangeAnnotationIdentifier2) {\n function is(value) {\n var candidate = value;\n return typeof candidate === \"string\";\n }\n ChangeAnnotationIdentifier2.is = is;\n})(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\nvar AnnotatedTextEdit;\n(function(AnnotatedTextEdit2) {\n function replace(range, newText, annotation) {\n return { range, newText, annotationId: annotation };\n }\n AnnotatedTextEdit2.replace = replace;\n function insert(position, newText, annotation) {\n return { range: { start: position, end: position }, newText, annotationId: annotation };\n }\n AnnotatedTextEdit2.insert = insert;\n function del(range, annotation) {\n return { range, newText: \"\", annotationId: annotation };\n }\n AnnotatedTextEdit2.del = del;\n function is(value) {\n var candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n AnnotatedTextEdit2.is = is;\n})(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\nvar TextDocumentEdit;\n(function(TextDocumentEdit2) {\n function create(textDocument, edits) {\n return { textDocument, edits };\n }\n TextDocumentEdit2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);\n }\n TextDocumentEdit2.is = is;\n})(TextDocumentEdit || (TextDocumentEdit = {}));\nvar CreateFile;\n(function(CreateFile2) {\n function create(uri, options, annotation) {\n var result = {\n kind: \"create\",\n uri\n };\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n CreateFile2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"create\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n CreateFile2.is = is;\n})(CreateFile || (CreateFile = {}));\nvar RenameFile;\n(function(RenameFile2) {\n function create(oldUri, newUri, options, annotation) {\n var result = {\n kind: \"rename\",\n oldUri,\n newUri\n };\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n RenameFile2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"rename\" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n RenameFile2.is = is;\n})(RenameFile || (RenameFile = {}));\nvar DeleteFile;\n(function(DeleteFile2) {\n function create(uri, options, annotation) {\n var result = {\n kind: \"delete\",\n uri\n };\n if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\n result.options = options;\n }\n if (annotation !== void 0) {\n result.annotationId = annotation;\n }\n return result;\n }\n DeleteFile2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && candidate.kind === \"delete\" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n DeleteFile2.is = is;\n})(DeleteFile || (DeleteFile = {}));\nvar WorkspaceEdit;\n(function(WorkspaceEdit2) {\n function is(value) {\n var candidate = value;\n return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every(function(change) {\n if (Is.string(change.kind)) {\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n } else {\n return TextDocumentEdit.is(change);\n }\n }));\n }\n WorkspaceEdit2.is = is;\n})(WorkspaceEdit || (WorkspaceEdit = {}));\nvar TextEditChangeImpl = function() {\n function TextEditChangeImpl2(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n TextEditChangeImpl2.prototype.insert = function(position, newText, annotation) {\n var edit;\n var id;\n if (annotation === void 0) {\n edit = TextEdit.insert(position, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.insert(position, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.insert(position, newText, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n };\n TextEditChangeImpl2.prototype.replace = function(range, newText, annotation) {\n var edit;\n var id;\n if (annotation === void 0) {\n edit = TextEdit.replace(range, newText);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.replace(range, newText, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.replace(range, newText, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n };\n TextEditChangeImpl2.prototype.delete = function(range, annotation) {\n var edit;\n var id;\n if (annotation === void 0) {\n edit = TextEdit.del(range);\n } else if (ChangeAnnotationIdentifier.is(annotation)) {\n id = annotation;\n edit = AnnotatedTextEdit.del(range, annotation);\n } else {\n this.assertChangeAnnotations(this.changeAnnotations);\n id = this.changeAnnotations.manage(annotation);\n edit = AnnotatedTextEdit.del(range, id);\n }\n this.edits.push(edit);\n if (id !== void 0) {\n return id;\n }\n };\n TextEditChangeImpl2.prototype.add = function(edit) {\n this.edits.push(edit);\n };\n TextEditChangeImpl2.prototype.all = function() {\n return this.edits;\n };\n TextEditChangeImpl2.prototype.clear = function() {\n this.edits.splice(0, this.edits.length);\n };\n TextEditChangeImpl2.prototype.assertChangeAnnotations = function(value) {\n if (value === void 0) {\n throw new Error(\"Text edit change is not configured to manage change annotations.\");\n }\n };\n return TextEditChangeImpl2;\n}();\nvar ChangeAnnotations = function() {\n function ChangeAnnotations2(annotations) {\n this._annotations = annotations === void 0 ? /* @__PURE__ */ Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n ChangeAnnotations2.prototype.all = function() {\n return this._annotations;\n };\n Object.defineProperty(ChangeAnnotations2.prototype, \"size\", {\n get: function() {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n ChangeAnnotations2.prototype.manage = function(idOrAnnotation, annotation) {\n var id;\n if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n id = idOrAnnotation;\n } else {\n id = this.nextId();\n annotation = idOrAnnotation;\n }\n if (this._annotations[id] !== void 0) {\n throw new Error(\"Id \" + id + \" is already in use.\");\n }\n if (annotation === void 0) {\n throw new Error(\"No annotation provided for id \" + id);\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n };\n ChangeAnnotations2.prototype.nextId = function() {\n this._counter++;\n return this._counter.toString();\n };\n return ChangeAnnotations2;\n}();\nvar WorkspaceChange = function() {\n function WorkspaceChange2(workspaceEdit) {\n var _this = this;\n this._textEditChanges = /* @__PURE__ */ Object.create(null);\n if (workspaceEdit !== void 0) {\n this._workspaceEdit = workspaceEdit;\n if (workspaceEdit.documentChanges) {\n this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n workspaceEdit.documentChanges.forEach(function(change) {\n if (TextDocumentEdit.is(change)) {\n var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\n }\n });\n } else if (workspaceEdit.changes) {\n Object.keys(workspaceEdit.changes).forEach(function(key) {\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n _this._textEditChanges[key] = textEditChange;\n });\n }\n } else {\n this._workspaceEdit = {};\n }\n }\n Object.defineProperty(WorkspaceChange2.prototype, \"edit\", {\n get: function() {\n this.initDocumentChanges();\n if (this._changeAnnotations !== void 0) {\n if (this._changeAnnotations.size === 0) {\n this._workspaceEdit.changeAnnotations = void 0;\n } else {\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n }\n return this._workspaceEdit;\n },\n enumerable: false,\n configurable: true\n });\n WorkspaceChange2.prototype.getTextEditChange = function(key) {\n if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var textDocument = { uri: key.uri, version: key.version };\n var result = this._textEditChanges[textDocument.uri];\n if (!result) {\n var edits = [];\n var textDocumentEdit = {\n textDocument,\n edits\n };\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\n result = new TextEditChangeImpl(edits, this._changeAnnotations);\n this._textEditChanges[textDocument.uri] = result;\n }\n return result;\n } else {\n this.initChanges();\n if (this._workspaceEdit.changes === void 0) {\n throw new Error(\"Workspace edit is not configured for normal text edit changes.\");\n }\n var result = this._textEditChanges[key];\n if (!result) {\n var edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n return result;\n }\n };\n WorkspaceChange2.prototype.initDocumentChanges = function() {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._changeAnnotations = new ChangeAnnotations();\n this._workspaceEdit.documentChanges = [];\n this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n }\n };\n WorkspaceChange2.prototype.initChanges = function() {\n if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {\n this._workspaceEdit.changes = /* @__PURE__ */ Object.create(null);\n }\n };\n WorkspaceChange2.prototype.createFile = function(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === void 0) {\n operation = CreateFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = CreateFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n };\n WorkspaceChange2.prototype.renameFile = function(oldUri, newUri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === void 0) {\n operation = RenameFile.create(oldUri, newUri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = RenameFile.create(oldUri, newUri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n };\n WorkspaceChange2.prototype.deleteFile = function(uri, optionsOrAnnotation, options) {\n this.initDocumentChanges();\n if (this._workspaceEdit.documentChanges === void 0) {\n throw new Error(\"Workspace edit is not configured for document changes.\");\n }\n var annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n } else {\n options = optionsOrAnnotation;\n }\n var operation;\n var id;\n if (annotation === void 0) {\n operation = DeleteFile.create(uri, options);\n } else {\n id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n operation = DeleteFile.create(uri, options, id);\n }\n this._workspaceEdit.documentChanges.push(operation);\n if (id !== void 0) {\n return id;\n }\n };\n return WorkspaceChange2;\n}();\nvar TextDocumentIdentifier;\n(function(TextDocumentIdentifier2) {\n function create(uri) {\n return { uri };\n }\n TextDocumentIdentifier2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier2.is = is;\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\nvar VersionedTextDocumentIdentifier;\n(function(VersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return { uri, version };\n }\n VersionedTextDocumentIdentifier2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n VersionedTextDocumentIdentifier2.is = is;\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\nvar OptionalVersionedTextDocumentIdentifier;\n(function(OptionalVersionedTextDocumentIdentifier2) {\n function create(uri, version) {\n return { uri, version };\n }\n OptionalVersionedTextDocumentIdentifier2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n }\n OptionalVersionedTextDocumentIdentifier2.is = is;\n})(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));\nvar TextDocumentItem;\n(function(TextDocumentItem2) {\n function create(uri, languageId, version, text) {\n return { uri, languageId, version, text };\n }\n TextDocumentItem2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n }\n TextDocumentItem2.is = is;\n})(TextDocumentItem || (TextDocumentItem = {}));\nvar MarkupKind;\n(function(MarkupKind2) {\n MarkupKind2.PlainText = \"plaintext\";\n MarkupKind2.Markdown = \"markdown\";\n})(MarkupKind || (MarkupKind = {}));\n(function(MarkupKind2) {\n function is(value) {\n var candidate = value;\n return candidate === MarkupKind2.PlainText || candidate === MarkupKind2.Markdown;\n }\n MarkupKind2.is = is;\n})(MarkupKind || (MarkupKind = {}));\nvar MarkupContent;\n(function(MarkupContent2) {\n function is(value) {\n var candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n MarkupContent2.is = is;\n})(MarkupContent || (MarkupContent = {}));\nvar CompletionItemKind;\n(function(CompletionItemKind2) {\n CompletionItemKind2.Text = 1;\n CompletionItemKind2.Method = 2;\n CompletionItemKind2.Function = 3;\n CompletionItemKind2.Constructor = 4;\n CompletionItemKind2.Field = 5;\n CompletionItemKind2.Variable = 6;\n CompletionItemKind2.Class = 7;\n CompletionItemKind2.Interface = 8;\n CompletionItemKind2.Module = 9;\n CompletionItemKind2.Property = 10;\n CompletionItemKind2.Unit = 11;\n CompletionItemKind2.Value = 12;\n CompletionItemKind2.Enum = 13;\n CompletionItemKind2.Keyword = 14;\n CompletionItemKind2.Snippet = 15;\n CompletionItemKind2.Color = 16;\n CompletionItemKind2.File = 17;\n CompletionItemKind2.Reference = 18;\n CompletionItemKind2.Folder = 19;\n CompletionItemKind2.EnumMember = 20;\n CompletionItemKind2.Constant = 21;\n CompletionItemKind2.Struct = 22;\n CompletionItemKind2.Event = 23;\n CompletionItemKind2.Operator = 24;\n CompletionItemKind2.TypeParameter = 25;\n})(CompletionItemKind || (CompletionItemKind = {}));\nvar InsertTextFormat;\n(function(InsertTextFormat2) {\n InsertTextFormat2.PlainText = 1;\n InsertTextFormat2.Snippet = 2;\n})(InsertTextFormat || (InsertTextFormat = {}));\nvar CompletionItemTag;\n(function(CompletionItemTag2) {\n CompletionItemTag2.Deprecated = 1;\n})(CompletionItemTag || (CompletionItemTag = {}));\nvar InsertReplaceEdit;\n(function(InsertReplaceEdit2) {\n function create(newText, insert, replace) {\n return { newText, insert, replace };\n }\n InsertReplaceEdit2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n InsertReplaceEdit2.is = is;\n})(InsertReplaceEdit || (InsertReplaceEdit = {}));\nvar InsertTextMode;\n(function(InsertTextMode2) {\n InsertTextMode2.asIs = 1;\n InsertTextMode2.adjustIndentation = 2;\n})(InsertTextMode || (InsertTextMode = {}));\nvar CompletionItem;\n(function(CompletionItem2) {\n function create(label) {\n return { label };\n }\n CompletionItem2.create = create;\n})(CompletionItem || (CompletionItem = {}));\nvar CompletionList;\n(function(CompletionList2) {\n function create(items, isIncomplete) {\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\n }\n CompletionList2.create = create;\n})(CompletionList || (CompletionList = {}));\nvar MarkedString;\n(function(MarkedString2) {\n function fromPlainText(plainText) {\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\");\n }\n MarkedString2.fromPlainText = fromPlainText;\n function is(value) {\n var candidate = value;\n return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value);\n }\n MarkedString2.is = is;\n})(MarkedString || (MarkedString = {}));\nvar Hover;\n(function(Hover2) {\n function is(value) {\n var candidate = value;\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\n }\n Hover2.is = is;\n})(Hover || (Hover = {}));\nvar ParameterInformation;\n(function(ParameterInformation2) {\n function create(label, documentation) {\n return documentation ? { label, documentation } : { label };\n }\n ParameterInformation2.create = create;\n})(ParameterInformation || (ParameterInformation = {}));\nvar SignatureInformation;\n(function(SignatureInformation2) {\n function create(label, documentation) {\n var parameters = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n parameters[_i - 2] = arguments[_i];\n }\n var result = { label };\n if (Is.defined(documentation)) {\n result.documentation = documentation;\n }\n if (Is.defined(parameters)) {\n result.parameters = parameters;\n } else {\n result.parameters = [];\n }\n return result;\n }\n SignatureInformation2.create = create;\n})(SignatureInformation || (SignatureInformation = {}));\nvar DocumentHighlightKind;\n(function(DocumentHighlightKind2) {\n DocumentHighlightKind2.Text = 1;\n DocumentHighlightKind2.Read = 2;\n DocumentHighlightKind2.Write = 3;\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\nvar DocumentHighlight;\n(function(DocumentHighlight2) {\n function create(range, kind) {\n var result = { range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n DocumentHighlight2.create = create;\n})(DocumentHighlight || (DocumentHighlight = {}));\nvar SymbolKind;\n(function(SymbolKind2) {\n SymbolKind2.File = 1;\n SymbolKind2.Module = 2;\n SymbolKind2.Namespace = 3;\n SymbolKind2.Package = 4;\n SymbolKind2.Class = 5;\n SymbolKind2.Method = 6;\n SymbolKind2.Property = 7;\n SymbolKind2.Field = 8;\n SymbolKind2.Constructor = 9;\n SymbolKind2.Enum = 10;\n SymbolKind2.Interface = 11;\n SymbolKind2.Function = 12;\n SymbolKind2.Variable = 13;\n SymbolKind2.Constant = 14;\n SymbolKind2.String = 15;\n SymbolKind2.Number = 16;\n SymbolKind2.Boolean = 17;\n SymbolKind2.Array = 18;\n SymbolKind2.Object = 19;\n SymbolKind2.Key = 20;\n SymbolKind2.Null = 21;\n SymbolKind2.EnumMember = 22;\n SymbolKind2.Struct = 23;\n SymbolKind2.Event = 24;\n SymbolKind2.Operator = 25;\n SymbolKind2.TypeParameter = 26;\n})(SymbolKind || (SymbolKind = {}));\nvar SymbolTag;\n(function(SymbolTag2) {\n SymbolTag2.Deprecated = 1;\n})(SymbolTag || (SymbolTag = {}));\nvar SymbolInformation;\n(function(SymbolInformation2) {\n function create(name, kind, range, uri, containerName) {\n var result = {\n name,\n kind,\n location: { uri, range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n SymbolInformation2.create = create;\n})(SymbolInformation || (SymbolInformation = {}));\nvar DocumentSymbol;\n(function(DocumentSymbol2) {\n function create(name, detail, kind, range, selectionRange, children) {\n var result = {\n name,\n detail,\n kind,\n range,\n selectionRange\n };\n if (children !== void 0) {\n result.children = children;\n }\n return result;\n }\n DocumentSymbol2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range.is(candidate.range) && Range.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags));\n }\n DocumentSymbol2.is = is;\n})(DocumentSymbol || (DocumentSymbol = {}));\nvar CodeActionKind;\n(function(CodeActionKind2) {\n CodeActionKind2.Empty = \"\";\n CodeActionKind2.QuickFix = \"quickfix\";\n CodeActionKind2.Refactor = \"refactor\";\n CodeActionKind2.RefactorExtract = \"refactor.extract\";\n CodeActionKind2.RefactorInline = \"refactor.inline\";\n CodeActionKind2.RefactorRewrite = \"refactor.rewrite\";\n CodeActionKind2.Source = \"source\";\n CodeActionKind2.SourceOrganizeImports = \"source.organizeImports\";\n CodeActionKind2.SourceFixAll = \"source.fixAll\";\n})(CodeActionKind || (CodeActionKind = {}));\nvar CodeActionContext;\n(function(CodeActionContext2) {\n function create(diagnostics, only) {\n var result = { diagnostics };\n if (only !== void 0 && only !== null) {\n result.only = only;\n }\n return result;\n }\n CodeActionContext2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));\n }\n CodeActionContext2.is = is;\n})(CodeActionContext || (CodeActionContext = {}));\nvar CodeAction;\n(function(CodeAction2) {\n function create(title, kindOrCommandOrEdit, kind) {\n var result = { title };\n var checkKind = true;\n if (typeof kindOrCommandOrEdit === \"string\") {\n checkKind = false;\n result.kind = kindOrCommandOrEdit;\n } else if (Command.is(kindOrCommandOrEdit)) {\n result.command = kindOrCommandOrEdit;\n } else {\n result.edit = kindOrCommandOrEdit;\n }\n if (checkKind && kind !== void 0) {\n result.kind = kind;\n }\n return result;\n }\n CodeAction2.create = create;\n function is(value) {\n var candidate = value;\n return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\n }\n CodeAction2.is = is;\n})(CodeAction || (CodeAction = {}));\nvar CodeLens;\n(function(CodeLens2) {\n function create(range, data) {\n var result = { range };\n if (Is.defined(data)) {\n result.data = data;\n }\n return result;\n }\n CodeLens2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n }\n CodeLens2.is = is;\n})(CodeLens || (CodeLens = {}));\nvar FormattingOptions;\n(function(FormattingOptions2) {\n function create(tabSize, insertSpaces) {\n return { tabSize, insertSpaces };\n }\n FormattingOptions2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n FormattingOptions2.is = is;\n})(FormattingOptions || (FormattingOptions = {}));\nvar DocumentLink;\n(function(DocumentLink2) {\n function create(range, target, data) {\n return { range, target, data };\n }\n DocumentLink2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n }\n DocumentLink2.is = is;\n})(DocumentLink || (DocumentLink = {}));\nvar SelectionRange;\n(function(SelectionRange2) {\n function create(range, parent) {\n return { range, parent };\n }\n SelectionRange2.create = create;\n function is(value) {\n var candidate = value;\n return candidate !== void 0 && Range.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent));\n }\n SelectionRange2.is = is;\n})(SelectionRange || (SelectionRange = {}));\nvar TextDocument;\n(function(TextDocument2) {\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument2.create = create;\n function is(value) {\n var candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n }\n TextDocument2.is = is;\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits, function(a, b) {\n var diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n var lastModifiedOffset = text.length;\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\n var e = sortedEdits[i];\n var startOffset = document.offsetAt(e.range.start);\n var endOffset = document.offsetAt(e.range.end);\n if (endOffset <= lastModifiedOffset) {\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n } else {\n throw new Error(\"Overlapping edit\");\n }\n lastModifiedOffset = startOffset;\n }\n return text;\n }\n TextDocument2.applyEdits = applyEdits;\n function mergeSort(data, compare) {\n if (data.length <= 1) {\n return data;\n }\n var p = data.length / 2 | 0;\n var left = data.slice(0, p);\n var right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n data[i++] = left[leftIdx++];\n } else {\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n }\n})(TextDocument || (TextDocument = {}));\nvar FullTextDocument = function() {\n function FullTextDocument2(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = void 0;\n }\n Object.defineProperty(FullTextDocument2.prototype, \"uri\", {\n get: function() {\n return this._uri;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument2.prototype, \"languageId\", {\n get: function() {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FullTextDocument2.prototype, \"version\", {\n get: function() {\n return this._version;\n },\n enumerable: false,\n configurable: true\n });\n FullTextDocument2.prototype.getText = function(range) {\n if (range) {\n var start = this.offsetAt(range.start);\n var end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n };\n FullTextDocument2.prototype.update = function(event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = void 0;\n };\n FullTextDocument2.prototype.getLineOffsets = function() {\n if (this._lineOffsets === void 0) {\n var lineOffsets = [];\n var text = this._content;\n var isLineStart = true;\n for (var i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n var ch = text.charAt(i);\n isLineStart = ch === \"\\r\" || ch === \"\\n\";\n if (ch === \"\\r\" && i + 1 < text.length && text.charAt(i + 1) === \"\\n\") {\n i++;\n }\n }\n if (isLineStart && text.length > 0) {\n lineOffsets.push(text.length);\n }\n this._lineOffsets = lineOffsets;\n }\n return this._lineOffsets;\n };\n FullTextDocument2.prototype.positionAt = function(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0, high = lineOffsets.length;\n if (high === 0) {\n return Position.create(0, offset);\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n var line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n };\n FullTextDocument2.prototype.offsetAt = function(position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n } else if (position.line < 0) {\n return 0;\n }\n var lineOffset = lineOffsets[position.line];\n var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n };\n Object.defineProperty(FullTextDocument2.prototype, \"lineCount\", {\n get: function() {\n return this.getLineOffsets().length;\n },\n enumerable: false,\n configurable: true\n });\n return FullTextDocument2;\n}();\nvar Is;\n(function(Is2) {\n var toString = Object.prototype.toString;\n function defined(value) {\n return typeof value !== \"undefined\";\n }\n Is2.defined = defined;\n function undefined2(value) {\n return typeof value === \"undefined\";\n }\n Is2.undefined = undefined2;\n function boolean(value) {\n return value === true || value === false;\n }\n Is2.boolean = boolean;\n function string(value) {\n return toString.call(value) === \"[object String]\";\n }\n Is2.string = string;\n function number(value) {\n return toString.call(value) === \"[object Number]\";\n }\n Is2.number = number;\n function numberRange(value, min, max) {\n return toString.call(value) === \"[object Number]\" && min <= value && value <= max;\n }\n Is2.numberRange = numberRange;\n function integer2(value) {\n return toString.call(value) === \"[object Number]\" && -2147483648 <= value && value <= 2147483647;\n }\n Is2.integer = integer2;\n function uinteger2(value) {\n return toString.call(value) === \"[object Number]\" && 0 <= value && value <= 2147483647;\n }\n Is2.uinteger = uinteger2;\n function func(value) {\n return toString.call(value) === \"[object Function]\";\n }\n Is2.func = func;\n function objectLiteral(value) {\n return value !== null && typeof value === \"object\";\n }\n Is2.objectLiteral = objectLiteral;\n function typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n }\n Is2.typedArray = typedArray;\n})(Is || (Is = {}));\n\n// src/language/common/lspLanguageFeatures.ts\nvar DiagnosticsAdapter = class {\n constructor(_languageId, _worker, configChangeEvent) {\n this._languageId = _languageId;\n this._worker = _worker;\n const onModelAdd = (model) => {\n let modeId = model.getLanguageId();\n if (modeId !== this._languageId) {\n return;\n }\n let handle;\n this._listener[model.uri.toString()] = model.onDidChangeContent(() => {\n window.clearTimeout(handle);\n handle = window.setTimeout(() => this._doValidate(model.uri, modeId), 500);\n });\n this._doValidate(model.uri, modeId);\n };\n const onModelRemoved = (model) => {\n monaco_editor_core_exports.editor.setModelMarkers(model, this._languageId, []);\n let uriStr = model.uri.toString();\n let listener = this._listener[uriStr];\n if (listener) {\n listener.dispose();\n delete this._listener[uriStr];\n }\n };\n this._disposables.push(monaco_editor_core_exports.editor.onDidCreateModel(onModelAdd));\n this._disposables.push(monaco_editor_core_exports.editor.onWillDisposeModel(onModelRemoved));\n this._disposables.push(monaco_editor_core_exports.editor.onDidChangeModelLanguage((event) => {\n onModelRemoved(event.model);\n onModelAdd(event.model);\n }));\n this._disposables.push(configChangeEvent((_) => {\n monaco_editor_core_exports.editor.getModels().forEach((model) => {\n if (model.getLanguageId() === this._languageId) {\n onModelRemoved(model);\n onModelAdd(model);\n }\n });\n }));\n this._disposables.push({\n dispose: () => {\n monaco_editor_core_exports.editor.getModels().forEach(onModelRemoved);\n for (let key in this._listener) {\n this._listener[key].dispose();\n }\n }\n });\n monaco_editor_core_exports.editor.getModels().forEach(onModelAdd);\n }\n _disposables = [];\n _listener = /* @__PURE__ */ Object.create(null);\n dispose() {\n this._disposables.forEach((d) => d && d.dispose());\n this._disposables.length = 0;\n }\n _doValidate(resource, languageId) {\n this._worker(resource).then((worker) => {\n return worker.doValidation(resource.toString());\n }).then((diagnostics) => {\n const markers = diagnostics.map((d) => toDiagnostics(resource, d));\n let model = monaco_editor_core_exports.editor.getModel(resource);\n if (model && model.getLanguageId() === languageId) {\n monaco_editor_core_exports.editor.setModelMarkers(model, languageId, markers);\n }\n }).then(void 0, (err) => {\n console.error(err);\n });\n }\n};\nfunction toSeverity(lsSeverity) {\n switch (lsSeverity) {\n case DiagnosticSeverity.Error:\n return monaco_editor_core_exports.MarkerSeverity.Error;\n case DiagnosticSeverity.Warning:\n return monaco_editor_core_exports.MarkerSeverity.Warning;\n case DiagnosticSeverity.Information:\n return monaco_editor_core_exports.MarkerSeverity.Info;\n case DiagnosticSeverity.Hint:\n return monaco_editor_core_exports.MarkerSeverity.Hint;\n default:\n return monaco_editor_core_exports.MarkerSeverity.Info;\n }\n}\nfunction toDiagnostics(resource, diag) {\n let code = typeof diag.code === \"number\" ? String(diag.code) : diag.code;\n return {\n severity: toSeverity(diag.severity),\n startLineNumber: diag.range.start.line + 1,\n startColumn: diag.range.start.character + 1,\n endLineNumber: diag.range.end.line + 1,\n endColumn: diag.range.end.character + 1,\n message: diag.message,\n code,\n source: diag.source\n };\n}\nvar CompletionAdapter = class {\n constructor(_worker, _triggerCharacters) {\n this._worker = _worker;\n this._triggerCharacters = _triggerCharacters;\n }\n get triggerCharacters() {\n return this._triggerCharacters;\n }\n provideCompletionItems(model, position, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doComplete(resource.toString(), fromPosition(position));\n }).then((info) => {\n if (!info) {\n return;\n }\n const wordInfo = model.getWordUntilPosition(position);\n const wordRange = new monaco_editor_core_exports.Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn);\n const items = info.items.map((entry) => {\n const item = {\n label: entry.label,\n insertText: entry.insertText || entry.label,\n sortText: entry.sortText,\n filterText: entry.filterText,\n documentation: entry.documentation,\n detail: entry.detail,\n command: toCommand(entry.command),\n range: wordRange,\n kind: toCompletionItemKind(entry.kind)\n };\n if (entry.textEdit) {\n if (isInsertReplaceEdit(entry.textEdit)) {\n item.range = {\n insert: toRange(entry.textEdit.insert),\n replace: toRange(entry.textEdit.replace)\n };\n } else {\n item.range = toRange(entry.textEdit.range);\n }\n item.insertText = entry.textEdit.newText;\n }\n if (entry.additionalTextEdits) {\n item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit);\n }\n if (entry.insertTextFormat === InsertTextFormat.Snippet) {\n item.insertTextRules = monaco_editor_core_exports.languages.CompletionItemInsertTextRule.InsertAsSnippet;\n }\n return item;\n });\n return {\n isIncomplete: info.isIncomplete,\n suggestions: items\n };\n });\n }\n};\nfunction fromPosition(position) {\n if (!position) {\n return void 0;\n }\n return { character: position.column - 1, line: position.lineNumber - 1 };\n}\nfunction fromRange(range) {\n if (!range) {\n return void 0;\n }\n return {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1\n },\n end: { line: range.endLineNumber - 1, character: range.endColumn - 1 }\n };\n}\nfunction toRange(range) {\n if (!range) {\n return void 0;\n }\n return new monaco_editor_core_exports.Range(range.start.line + 1, range.start.character + 1, range.end.line + 1, range.end.character + 1);\n}\nfunction isInsertReplaceEdit(edit) {\n return typeof edit.insert !== \"undefined\" && typeof edit.replace !== \"undefined\";\n}\nfunction toCompletionItemKind(kind) {\n const mItemKind = monaco_editor_core_exports.languages.CompletionItemKind;\n switch (kind) {\n case CompletionItemKind.Text:\n return mItemKind.Text;\n case CompletionItemKind.Method:\n return mItemKind.Method;\n case CompletionItemKind.Function:\n return mItemKind.Function;\n case CompletionItemKind.Constructor:\n return mItemKind.Constructor;\n case CompletionItemKind.Field:\n return mItemKind.Field;\n case CompletionItemKind.Variable:\n return mItemKind.Variable;\n case CompletionItemKind.Class:\n return mItemKind.Class;\n case CompletionItemKind.Interface:\n return mItemKind.Interface;\n case CompletionItemKind.Module:\n return mItemKind.Module;\n case CompletionItemKind.Property:\n return mItemKind.Property;\n case CompletionItemKind.Unit:\n return mItemKind.Unit;\n case CompletionItemKind.Value:\n return mItemKind.Value;\n case CompletionItemKind.Enum:\n return mItemKind.Enum;\n case CompletionItemKind.Keyword:\n return mItemKind.Keyword;\n case CompletionItemKind.Snippet:\n return mItemKind.Snippet;\n case CompletionItemKind.Color:\n return mItemKind.Color;\n case CompletionItemKind.File:\n return mItemKind.File;\n case CompletionItemKind.Reference:\n return mItemKind.Reference;\n }\n return mItemKind.Property;\n}\nfunction toTextEdit(textEdit) {\n if (!textEdit) {\n return void 0;\n }\n return {\n range: toRange(textEdit.range),\n text: textEdit.newText\n };\n}\nfunction toCommand(c) {\n return c && c.command === \"editor.action.triggerSuggest\" ? { id: c.command, title: c.title, arguments: c.arguments } : void 0;\n}\nvar HoverAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideHover(model, position, token) {\n let resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doHover(resource.toString(), fromPosition(position));\n }).then((info) => {\n if (!info) {\n return;\n }\n return {\n range: toRange(info.range),\n contents: toMarkedStringArray(info.contents)\n };\n });\n }\n};\nfunction isMarkupContent(thing) {\n return thing && typeof thing === \"object\" && typeof thing.kind === \"string\";\n}\nfunction toMarkdownString(entry) {\n if (typeof entry === \"string\") {\n return {\n value: entry\n };\n }\n if (isMarkupContent(entry)) {\n if (entry.kind === \"plaintext\") {\n return {\n value: entry.value.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\")\n };\n }\n return {\n value: entry.value\n };\n }\n return { value: \"```\" + entry.language + \"\\n\" + entry.value + \"\\n```\\n\" };\n}\nfunction toMarkedStringArray(contents) {\n if (!contents) {\n return void 0;\n }\n if (Array.isArray(contents)) {\n return contents.map(toMarkdownString);\n }\n return [toMarkdownString(contents)];\n}\nvar DocumentHighlightAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentHighlights(model, position, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentHighlights(resource.toString(), fromPosition(position))).then((entries) => {\n if (!entries) {\n return;\n }\n return entries.map((entry) => {\n return {\n range: toRange(entry.range),\n kind: toDocumentHighlightKind(entry.kind)\n };\n });\n });\n }\n};\nfunction toDocumentHighlightKind(kind) {\n switch (kind) {\n case DocumentHighlightKind.Read:\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Read;\n case DocumentHighlightKind.Write:\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Write;\n case DocumentHighlightKind.Text:\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Text;\n }\n return monaco_editor_core_exports.languages.DocumentHighlightKind.Text;\n}\nvar DefinitionAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDefinition(model, position, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.findDefinition(resource.toString(), fromPosition(position));\n }).then((definition) => {\n if (!definition) {\n return;\n }\n return [toLocation(definition)];\n });\n }\n};\nfunction toLocation(location) {\n return {\n uri: monaco_editor_core_exports.Uri.parse(location.uri),\n range: toRange(location.range)\n };\n}\nvar ReferenceAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideReferences(model, position, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.findReferences(resource.toString(), fromPosition(position));\n }).then((entries) => {\n if (!entries) {\n return;\n }\n return entries.map(toLocation);\n });\n }\n};\nvar RenameAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideRenameEdits(model, position, newName, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doRename(resource.toString(), fromPosition(position), newName);\n }).then((edit) => {\n return toWorkspaceEdit(edit);\n });\n }\n};\nfunction toWorkspaceEdit(edit) {\n if (!edit || !edit.changes) {\n return void 0;\n }\n let resourceEdits = [];\n for (let uri in edit.changes) {\n const _uri = monaco_editor_core_exports.Uri.parse(uri);\n for (let e of edit.changes[uri]) {\n resourceEdits.push({\n resource: _uri,\n versionId: void 0,\n textEdit: {\n range: toRange(e.range),\n text: e.newText\n }\n });\n }\n }\n return {\n edits: resourceEdits\n };\n}\nvar DocumentSymbolAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentSymbols(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentSymbols(resource.toString())).then((items) => {\n if (!items) {\n return;\n }\n return items.map((item) => ({\n name: item.name,\n detail: \"\",\n containerName: item.containerName,\n kind: toSymbolKind(item.kind),\n range: toRange(item.location.range),\n selectionRange: toRange(item.location.range),\n tags: []\n }));\n });\n }\n};\nfunction toSymbolKind(kind) {\n let mKind = monaco_editor_core_exports.languages.SymbolKind;\n switch (kind) {\n case SymbolKind.File:\n return mKind.Array;\n case SymbolKind.Module:\n return mKind.Module;\n case SymbolKind.Namespace:\n return mKind.Namespace;\n case SymbolKind.Package:\n return mKind.Package;\n case SymbolKind.Class:\n return mKind.Class;\n case SymbolKind.Method:\n return mKind.Method;\n case SymbolKind.Property:\n return mKind.Property;\n case SymbolKind.Field:\n return mKind.Field;\n case SymbolKind.Constructor:\n return mKind.Constructor;\n case SymbolKind.Enum:\n return mKind.Enum;\n case SymbolKind.Interface:\n return mKind.Interface;\n case SymbolKind.Function:\n return mKind.Function;\n case SymbolKind.Variable:\n return mKind.Variable;\n case SymbolKind.Constant:\n return mKind.Constant;\n case SymbolKind.String:\n return mKind.String;\n case SymbolKind.Number:\n return mKind.Number;\n case SymbolKind.Boolean:\n return mKind.Boolean;\n case SymbolKind.Array:\n return mKind.Array;\n }\n return mKind.Function;\n}\nvar DocumentLinkAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideLinks(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentLinks(resource.toString())).then((items) => {\n if (!items) {\n return;\n }\n return {\n links: items.map((item) => ({\n range: toRange(item.range),\n url: item.target\n }))\n };\n });\n }\n};\nvar DocumentFormattingEditProvider = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentFormattingEdits(model, options, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.format(resource.toString(), null, fromFormattingOptions(options)).then((edits) => {\n if (!edits || edits.length === 0) {\n return;\n }\n return edits.map(toTextEdit);\n });\n });\n }\n};\nvar DocumentRangeFormattingEditProvider = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentRangeFormattingEdits(model, range, options, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.format(resource.toString(), fromRange(range), fromFormattingOptions(options)).then((edits) => {\n if (!edits || edits.length === 0) {\n return;\n }\n return edits.map(toTextEdit);\n });\n });\n }\n};\nfunction fromFormattingOptions(options) {\n return {\n tabSize: options.tabSize,\n insertSpaces: options.insertSpaces\n };\n}\nvar DocumentColorAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentColors(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentColors(resource.toString())).then((infos) => {\n if (!infos) {\n return;\n }\n return infos.map((item) => ({\n color: item.color,\n range: toRange(item.range)\n }));\n });\n }\n provideColorPresentations(model, info, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.getColorPresentations(resource.toString(), info.color, fromRange(info.range))).then((presentations) => {\n if (!presentations) {\n return;\n }\n return presentations.map((presentation) => {\n let item = {\n label: presentation.label\n };\n if (presentation.textEdit) {\n item.textEdit = toTextEdit(presentation.textEdit);\n }\n if (presentation.additionalTextEdits) {\n item.additionalTextEdits = presentation.additionalTextEdits.map(toTextEdit);\n }\n return item;\n });\n });\n }\n};\nvar FoldingRangeAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideFoldingRanges(model, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.getFoldingRanges(resource.toString(), context)).then((ranges) => {\n if (!ranges) {\n return;\n }\n return ranges.map((range) => {\n const result = {\n start: range.startLine + 1,\n end: range.endLine + 1\n };\n if (typeof range.kind !== \"undefined\") {\n result.kind = toFoldingRangeKind(range.kind);\n }\n return result;\n });\n });\n }\n};\nfunction toFoldingRangeKind(kind) {\n switch (kind) {\n case FoldingRangeKind.Comment:\n return monaco_editor_core_exports.languages.FoldingRangeKind.Comment;\n case FoldingRangeKind.Imports:\n return monaco_editor_core_exports.languages.FoldingRangeKind.Imports;\n case FoldingRangeKind.Region:\n return monaco_editor_core_exports.languages.FoldingRangeKind.Region;\n }\n return void 0;\n}\nvar SelectionRangeAdapter = class {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideSelectionRanges(model, positions, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.getSelectionRanges(resource.toString(), positions.map(fromPosition))).then((selectionRanges) => {\n if (!selectionRanges) {\n return;\n }\n return selectionRanges.map((selectionRange) => {\n const result = [];\n while (selectionRange) {\n result.push({ range: toRange(selectionRange.range) });\n selectionRange = selectionRange.parent;\n }\n return result;\n });\n });\n }\n};\n\n// node_modules/jsonc-parser/lib/esm/impl/scanner.js\nfunction createScanner(text, ignoreTrivia) {\n if (ignoreTrivia === void 0) {\n ignoreTrivia = false;\n }\n var len = text.length;\n var pos = 0, value = \"\", tokenOffset = 0, token = 16, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0;\n function scanHexDigits(count, exact) {\n var digits = 0;\n var value2 = 0;\n while (digits < count || !exact) {\n var ch = text.charCodeAt(pos);\n if (ch >= 48 && ch <= 57) {\n value2 = value2 * 16 + ch - 48;\n } else if (ch >= 65 && ch <= 70) {\n value2 = value2 * 16 + ch - 65 + 10;\n } else if (ch >= 97 && ch <= 102) {\n value2 = value2 * 16 + ch - 97 + 10;\n } else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value2 = -1;\n }\n return value2;\n }\n function setPosition(newPosition) {\n pos = newPosition;\n value = \"\";\n tokenOffset = 0;\n token = 16;\n scanError = 0;\n }\n function scanNumber() {\n var start = pos;\n if (text.charCodeAt(pos) === 48) {\n pos++;\n } else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === 46) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n } else {\n scanError = 3;\n return text.substring(start, pos);\n }\n }\n var end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === 69 || text.charCodeAt(pos) === 101)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === 43 || text.charCodeAt(pos) === 45) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n } else {\n scanError = 3;\n }\n }\n return text.substring(start, end);\n }\n function scanString() {\n var result = \"\", start = pos;\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2;\n break;\n }\n var ch = text.charCodeAt(pos);\n if (ch === 34) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === 92) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = 2;\n break;\n }\n var ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case 34:\n result += '\"';\n break;\n case 92:\n result += \"\\\\\";\n break;\n case 47:\n result += \"/\";\n break;\n case 98:\n result += \"\\b\";\n break;\n case 102:\n result += \"\\f\";\n break;\n case 110:\n result += \"\\n\";\n break;\n case 114:\n result += \"\\r\";\n break;\n case 116:\n result += \"\t\";\n break;\n case 117:\n var ch3 = scanHexDigits(4, true);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n } else {\n scanError = 4;\n }\n break;\n default:\n scanError = 5;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 31) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2;\n break;\n } else {\n scanError = 6;\n }\n }\n pos++;\n }\n return result;\n }\n function scanNext() {\n value = \"\";\n scanError = 0;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n if (pos >= len) {\n tokenOffset = len;\n return token = 17;\n }\n var code = text.charCodeAt(pos);\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n return token = 15;\n }\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === 13 && text.charCodeAt(pos) === 10) {\n pos++;\n value += \"\\n\";\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14;\n }\n switch (code) {\n case 123:\n pos++;\n return token = 1;\n case 125:\n pos++;\n return token = 2;\n case 91:\n pos++;\n return token = 3;\n case 93:\n pos++;\n return token = 4;\n case 58:\n pos++;\n return token = 6;\n case 44:\n pos++;\n return token = 5;\n case 34:\n pos++;\n value = scanString();\n return token = 10;\n case 47:\n var start = pos - 1;\n if (text.charCodeAt(pos + 1) === 47) {\n pos += 2;\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n value = text.substring(start, pos);\n return token = 12;\n }\n if (text.charCodeAt(pos + 1) === 42) {\n pos += 2;\n var safeLength = len - 1;\n var commentClosed = false;\n while (pos < safeLength) {\n var ch = text.charCodeAt(pos);\n if (ch === 42 && text.charCodeAt(pos + 1) === 47) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n if (ch === 13 && text.charCodeAt(pos) === 10) {\n pos++;\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n if (!commentClosed) {\n pos++;\n scanError = 1;\n }\n value = text.substring(start, pos);\n return token = 13;\n }\n value += String.fromCharCode(code);\n pos++;\n return token = 16;\n case 45:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16;\n }\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n value += scanNumber();\n return token = 11;\n default:\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n switch (value) {\n case \"true\":\n return token = 8;\n case \"false\":\n return token = 9;\n case \"null\":\n return token = 7;\n }\n return token = 16;\n }\n value += String.fromCharCode(code);\n pos++;\n return token = 16;\n }\n }\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case 125:\n case 93:\n case 123:\n case 91:\n case 34:\n case 58:\n case 44:\n case 47:\n return false;\n }\n return true;\n }\n function scanNextNonTrivia() {\n var result;\n do {\n result = scanNext();\n } while (result >= 12 && result <= 15);\n return result;\n }\n return {\n setPosition,\n getPosition: function() {\n return pos;\n },\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: function() {\n return token;\n },\n getTokenValue: function() {\n return value;\n },\n getTokenOffset: function() {\n return tokenOffset;\n },\n getTokenLength: function() {\n return pos - tokenOffset;\n },\n getTokenStartLine: function() {\n return lineStartOffset;\n },\n getTokenStartCharacter: function() {\n return tokenOffset - prevTokenLineStartOffset;\n },\n getTokenError: function() {\n return scanError;\n }\n };\n}\nfunction isWhiteSpace(ch) {\n return ch === 32 || ch === 9 || ch === 11 || ch === 12 || ch === 160 || ch === 5760 || ch >= 8192 && ch <= 8203 || ch === 8239 || ch === 8287 || ch === 12288 || ch === 65279;\n}\nfunction isLineBreak(ch) {\n return ch === 10 || ch === 13 || ch === 8232 || ch === 8233;\n}\nfunction isDigit(ch) {\n return ch >= 48 && ch <= 57;\n}\n\n// node_modules/jsonc-parser/lib/esm/impl/parser.js\nvar ParseOptions;\n(function(ParseOptions2) {\n ParseOptions2.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n\n// node_modules/jsonc-parser/lib/esm/main.js\nvar createScanner2 = createScanner;\n\n// src/language/json/tokenization.ts\nfunction createTokenizationSupport(supportComments) {\n return {\n getInitialState: () => new JSONState(null, null, false, null),\n tokenize: (line, state) => tokenize(supportComments, line, state)\n };\n}\nvar TOKEN_DELIM_OBJECT = \"delimiter.bracket.json\";\nvar TOKEN_DELIM_ARRAY = \"delimiter.array.json\";\nvar TOKEN_DELIM_COLON = \"delimiter.colon.json\";\nvar TOKEN_DELIM_COMMA = \"delimiter.comma.json\";\nvar TOKEN_VALUE_BOOLEAN = \"keyword.json\";\nvar TOKEN_VALUE_NULL = \"keyword.json\";\nvar TOKEN_VALUE_STRING = \"string.value.json\";\nvar TOKEN_VALUE_NUMBER = \"number.json\";\nvar TOKEN_PROPERTY_NAME = \"string.key.json\";\nvar TOKEN_COMMENT_BLOCK = \"comment.block.json\";\nvar TOKEN_COMMENT_LINE = \"comment.line.json\";\nvar ParentsStack = class {\n constructor(parent, type) {\n this.parent = parent;\n this.type = type;\n }\n static pop(parents) {\n if (parents) {\n return parents.parent;\n }\n return null;\n }\n static push(parents, type) {\n return new ParentsStack(parents, type);\n }\n static equals(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n while (a && b) {\n if (a === b) {\n return true;\n }\n if (a.type !== b.type) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n }\n return true;\n }\n};\nvar JSONState = class {\n _state;\n scanError;\n lastWasColon;\n parents;\n constructor(state, scanError, lastWasColon, parents) {\n this._state = state;\n this.scanError = scanError;\n this.lastWasColon = lastWasColon;\n this.parents = parents;\n }\n clone() {\n return new JSONState(this._state, this.scanError, this.lastWasColon, this.parents);\n }\n equals(other) {\n if (other === this) {\n return true;\n }\n if (!other || !(other instanceof JSONState)) {\n return false;\n }\n return this.scanError === other.scanError && this.lastWasColon === other.lastWasColon && ParentsStack.equals(this.parents, other.parents);\n }\n getStateData() {\n return this._state;\n }\n setStateData(state) {\n this._state = state;\n }\n};\nfunction tokenize(comments, line, state, offsetDelta = 0) {\n let numberOfInsertedCharacters = 0;\n let adjustOffset = false;\n switch (state.scanError) {\n case 2 /* UnexpectedEndOfString */:\n line = '\"' + line;\n numberOfInsertedCharacters = 1;\n break;\n case 1 /* UnexpectedEndOfComment */:\n line = \"/*\" + line;\n numberOfInsertedCharacters = 2;\n break;\n }\n const scanner = createScanner2(line);\n let lastWasColon = state.lastWasColon;\n let parents = state.parents;\n const ret = {\n tokens: [],\n endState: state.clone()\n };\n while (true) {\n let offset = offsetDelta + scanner.getPosition();\n let type = \"\";\n const kind = scanner.scan();\n if (kind === 17 /* EOF */) {\n break;\n }\n if (offset === offsetDelta + scanner.getPosition()) {\n throw new Error(\"Scanner did not advance, next 3 characters are: \" + line.substr(scanner.getPosition(), 3));\n }\n if (adjustOffset) {\n offset -= numberOfInsertedCharacters;\n }\n adjustOffset = numberOfInsertedCharacters > 0;\n switch (kind) {\n case 1 /* OpenBraceToken */:\n parents = ParentsStack.push(parents, 0 /* Object */);\n type = TOKEN_DELIM_OBJECT;\n lastWasColon = false;\n break;\n case 2 /* CloseBraceToken */:\n parents = ParentsStack.pop(parents);\n type = TOKEN_DELIM_OBJECT;\n lastWasColon = false;\n break;\n case 3 /* OpenBracketToken */:\n parents = ParentsStack.push(parents, 1 /* Array */);\n type = TOKEN_DELIM_ARRAY;\n lastWasColon = false;\n break;\n case 4 /* CloseBracketToken */:\n parents = ParentsStack.pop(parents);\n type = TOKEN_DELIM_ARRAY;\n lastWasColon = false;\n break;\n case 6 /* ColonToken */:\n type = TOKEN_DELIM_COLON;\n lastWasColon = true;\n break;\n case 5 /* CommaToken */:\n type = TOKEN_DELIM_COMMA;\n lastWasColon = false;\n break;\n case 8 /* TrueKeyword */:\n case 9 /* FalseKeyword */:\n type = TOKEN_VALUE_BOOLEAN;\n lastWasColon = false;\n break;\n case 7 /* NullKeyword */:\n type = TOKEN_VALUE_NULL;\n lastWasColon = false;\n break;\n case 10 /* StringLiteral */:\n const currentParent = parents ? parents.type : 0 /* Object */;\n const inArray = currentParent === 1 /* Array */;\n type = lastWasColon || inArray ? TOKEN_VALUE_STRING : TOKEN_PROPERTY_NAME;\n lastWasColon = false;\n break;\n case 11 /* NumericLiteral */:\n type = TOKEN_VALUE_NUMBER;\n lastWasColon = false;\n break;\n }\n if (comments) {\n switch (kind) {\n case 12 /* LineCommentTrivia */:\n type = TOKEN_COMMENT_LINE;\n break;\n case 13 /* BlockCommentTrivia */:\n type = TOKEN_COMMENT_BLOCK;\n break;\n }\n }\n ret.endState = new JSONState(state.getStateData(), scanner.getTokenError(), lastWasColon, parents);\n ret.tokens.push({\n startIndex: offset,\n scopes: type\n });\n }\n return ret;\n}\n\n// src/language/json/jsonMode.ts\nvar JSONDiagnosticsAdapter = class extends DiagnosticsAdapter {\n constructor(languageId, worker, defaults) {\n super(languageId, worker, defaults.onDidChange);\n this._disposables.push(monaco_editor_core_exports.editor.onWillDisposeModel((model) => {\n this._resetSchema(model.uri);\n }));\n this._disposables.push(monaco_editor_core_exports.editor.onDidChangeModelLanguage((event) => {\n this._resetSchema(event.model.uri);\n }));\n }\n _resetSchema(resource) {\n this._worker().then((worker) => {\n worker.resetSchema(resource.toString());\n });\n }\n};\nfunction setupMode(defaults) {\n const disposables = [];\n const providers = [];\n const client = new WorkerManager(defaults);\n disposables.push(client);\n const worker = (...uris) => {\n return client.getLanguageServiceWorker(...uris);\n };\n function registerProviders() {\n const { languageId, modeConfiguration: modeConfiguration2 } = defaults;\n disposeAll(providers);\n if (modeConfiguration2.documentFormattingEdits) {\n providers.push(monaco_editor_core_exports.languages.registerDocumentFormattingEditProvider(languageId, new DocumentFormattingEditProvider(worker)));\n }\n if (modeConfiguration2.documentRangeFormattingEdits) {\n providers.push(monaco_editor_core_exports.languages.registerDocumentRangeFormattingEditProvider(languageId, new DocumentRangeFormattingEditProvider(worker)));\n }\n if (modeConfiguration2.completionItems) {\n providers.push(monaco_editor_core_exports.languages.registerCompletionItemProvider(languageId, new CompletionAdapter(worker, [\" \", \":\", '\"'])));\n }\n if (modeConfiguration2.hovers) {\n providers.push(monaco_editor_core_exports.languages.registerHoverProvider(languageId, new HoverAdapter(worker)));\n }\n if (modeConfiguration2.documentSymbols) {\n providers.push(monaco_editor_core_exports.languages.registerDocumentSymbolProvider(languageId, new DocumentSymbolAdapter(worker)));\n }\n if (modeConfiguration2.tokens) {\n providers.push(monaco_editor_core_exports.languages.setTokensProvider(languageId, createTokenizationSupport(true)));\n }\n if (modeConfiguration2.colors) {\n providers.push(monaco_editor_core_exports.languages.registerColorProvider(languageId, new DocumentColorAdapter(worker)));\n }\n if (modeConfiguration2.foldingRanges) {\n providers.push(monaco_editor_core_exports.languages.registerFoldingRangeProvider(languageId, new FoldingRangeAdapter(worker)));\n }\n if (modeConfiguration2.diagnostics) {\n providers.push(new JSONDiagnosticsAdapter(languageId, worker, defaults));\n }\n if (modeConfiguration2.selectionRanges) {\n providers.push(monaco_editor_core_exports.languages.registerSelectionRangeProvider(languageId, new SelectionRangeAdapter(worker)));\n }\n }\n registerProviders();\n disposables.push(monaco_editor_core_exports.languages.setLanguageConfiguration(defaults.languageId, richEditConfiguration));\n let modeConfiguration = defaults.modeConfiguration;\n defaults.onDidChange((newDefaults) => {\n if (newDefaults.modeConfiguration !== modeConfiguration) {\n modeConfiguration = newDefaults.modeConfiguration;\n registerProviders();\n }\n });\n disposables.push(asDisposable(providers));\n return asDisposable(disposables);\n}\nfunction asDisposable(disposables) {\n return { dispose: () => disposeAll(disposables) };\n}\nfunction disposeAll(disposables) {\n while (disposables.length) {\n disposables.pop().dispose();\n }\n}\nvar richEditConfiguration = {\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^\\[\\{\\]\\}\\:\\\"\\,\\s]+)/g,\n comments: {\n lineComment: \"//\",\n blockComment: [\"/*\", \"*/\"]\n },\n brackets: [\n [\"{\", \"}\"],\n [\"[\", \"]\"]\n ],\n autoClosingPairs: [\n { open: \"{\", close: \"}\", notIn: [\"string\"] },\n { open: \"[\", close: \"]\", notIn: [\"string\"] },\n { open: '\"', close: '\"', notIn: [\"string\"] }\n ]\n};\nexport {\n CompletionAdapter,\n DefinitionAdapter,\n DiagnosticsAdapter,\n DocumentColorAdapter,\n DocumentFormattingEditProvider,\n DocumentHighlightAdapter,\n DocumentLinkAdapter,\n DocumentRangeFormattingEditProvider,\n DocumentSymbolAdapter,\n FoldingRangeAdapter,\n HoverAdapter,\n ReferenceAdapter,\n RenameAdapter,\n SelectionRangeAdapter,\n WorkerManager,\n fromPosition,\n fromRange,\n setupMode,\n toRange,\n toTextEdit\n};\n","import '../../editor/editor.api.js';\n/*!-----------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Version: 0.34.1(547870b6881302c5b4ff32173c16d06009e3588f)\n * Released under the MIT license\n * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt\n *-----------------------------------------------------------------------------*/\n\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\n\n// src/fillers/monaco-editor-core.ts\nvar monaco_editor_core_exports = {};\n__reExport(monaco_editor_core_exports, monaco_editor_core_star);\nimport * as monaco_editor_core_star from \"../../editor/editor.api.js\";\n\n// src/language/json/monaco.contribution.ts\nvar LanguageServiceDefaultsImpl = class {\n _onDidChange = new monaco_editor_core_exports.Emitter();\n _diagnosticsOptions;\n _modeConfiguration;\n _languageId;\n constructor(languageId, diagnosticsOptions, modeConfiguration) {\n this._languageId = languageId;\n this.setDiagnosticsOptions(diagnosticsOptions);\n this.setModeConfiguration(modeConfiguration);\n }\n get onDidChange() {\n return this._onDidChange.event;\n }\n get languageId() {\n return this._languageId;\n }\n get modeConfiguration() {\n return this._modeConfiguration;\n }\n get diagnosticsOptions() {\n return this._diagnosticsOptions;\n }\n setDiagnosticsOptions(options) {\n this._diagnosticsOptions = options || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n setModeConfiguration(modeConfiguration) {\n this._modeConfiguration = modeConfiguration || /* @__PURE__ */ Object.create(null);\n this._onDidChange.fire(this);\n }\n};\nvar diagnosticDefault = {\n validate: true,\n allowComments: true,\n schemas: [],\n enableSchemaRequest: false,\n schemaRequest: \"warning\",\n schemaValidation: \"warning\",\n comments: \"error\",\n trailingCommas: \"error\"\n};\nvar modeConfigurationDefault = {\n documentFormattingEdits: true,\n documentRangeFormattingEdits: true,\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n tokens: true,\n colors: true,\n foldingRanges: true,\n diagnostics: true,\n selectionRanges: true\n};\nvar jsonDefaults = new LanguageServiceDefaultsImpl(\"json\", diagnosticDefault, modeConfigurationDefault);\nmonaco_editor_core_exports.languages.json = { jsonDefaults };\nfunction getMode() {\n if (false) {\n return new Promise((resolve, reject) => {\n __require([\"vs/language/json/jsonMode\"], resolve, reject);\n });\n } else {\n return import(\"./jsonMode.js\");\n }\n}\nmonaco_editor_core_exports.languages.register({\n id: \"json\",\n extensions: [\".json\", \".bowerrc\", \".jshintrc\", \".jscsrc\", \".eslintrc\", \".babelrc\", \".har\"],\n aliases: [\"JSON\", \"json\"],\n mimetypes: [\"application/json\"]\n});\nmonaco_editor_core_exports.languages.onLanguage(\"json\", () => {\n getMode().then((mode) => mode.setupMode(jsonDefaults));\n});\nexport {\n jsonDefaults\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nlet isPseudo = (typeof document !== 'undefined' && document.location && document.location.hash.indexOf('pseudo=true') >= 0);\nconst DEFAULT_TAG = 'i-default';\nfunction _format(message, args) {\n let result;\n if (args.length === 0) {\n result = message;\n }\n else {\n result = message.replace(/\\{(\\d+)\\}/g, (match, rest) => {\n const index = rest[0];\n const arg = args[index];\n let result = match;\n if (typeof arg === 'string') {\n result = arg;\n }\n else if (typeof arg === 'number' || typeof arg === 'boolean' || arg === void 0 || arg === null) {\n result = String(arg);\n }\n return result;\n });\n }\n if (isPseudo) {\n // FF3B and FF3D is the Unicode zenkaku representation for [ and ]\n result = '\\uFF3B' + result.replace(/[aouei]/g, '$&$&') + '\\uFF3D';\n }\n return result;\n}\nfunction findLanguageForModule(config, name) {\n let result = config[name];\n if (result) {\n return result;\n }\n result = config['*'];\n if (result) {\n return result;\n }\n return null;\n}\nfunction endWithSlash(path) {\n if (path.charAt(path.length - 1) === '/') {\n return path;\n }\n return path + '/';\n}\nfunction getMessagesFromTranslationsService(translationServiceUrl, language, name) {\n return __awaiter(this, void 0, void 0, function* () {\n const url = endWithSlash(translationServiceUrl) + endWithSlash(language) + 'vscode/' + endWithSlash(name);\n const res = yield fetch(url);\n if (res.ok) {\n const messages = yield res.json();\n return messages;\n }\n throw new Error(`${res.status} - ${res.statusText}`);\n });\n}\nfunction createScopedLocalize(scope) {\n return function (idx, defaultValue) {\n const restArgs = Array.prototype.slice.call(arguments, 2);\n return _format(scope[idx], restArgs);\n };\n}\nexport function localize(data, message, ...args) {\n return _format(message, args);\n}\nexport function getConfiguredDefaultLocale(_) {\n // This returns undefined because this implementation isn't used and is overwritten by the loader\n // when loaded.\n return undefined;\n}\nexport function setPseudoTranslation(value) {\n isPseudo = value;\n}\n/**\n * Invoked in a built product at run-time\n */\nexport function create(key, data) {\n var _a;\n return {\n localize: createScopedLocalize(data[key]),\n getConfiguredDefaultLocale: (_a = data.getConfiguredDefaultLocale) !== null && _a !== void 0 ? _a : ((_) => undefined)\n };\n}\n/**\n * Invoked by the loader at run-time\n */\nexport function load(name, req, load, config) {\n var _a;\n const pluginConfig = (_a = config['vs/nls']) !== null && _a !== void 0 ? _a : {};\n if (!name || name.length === 0) {\n return load({\n localize: localize,\n getConfiguredDefaultLocale: () => { var _a; return (_a = pluginConfig.availableLanguages) === null || _a === void 0 ? void 0 : _a['*']; }\n });\n }\n const language = pluginConfig.availableLanguages ? findLanguageForModule(pluginConfig.availableLanguages, name) : null;\n const useDefaultLanguage = language === null || language === DEFAULT_TAG;\n let suffix = '.nls';\n if (!useDefaultLanguage) {\n suffix = suffix + '.' + language;\n }\n const messagesLoaded = (messages) => {\n if (Array.isArray(messages)) {\n messages.localize = createScopedLocalize(messages);\n }\n else {\n messages.localize = createScopedLocalize(messages[name]);\n }\n messages.getConfiguredDefaultLocale = () => { var _a; return (_a = pluginConfig.availableLanguages) === null || _a === void 0 ? void 0 : _a['*']; };\n load(messages);\n };\n if (typeof pluginConfig.loadBundle === 'function') {\n pluginConfig.loadBundle(name, language, (err, messages) => {\n // We have an error. Load the English default strings to not fail\n if (err) {\n req([name + '.nls'], messagesLoaded);\n }\n else {\n messagesLoaded(messages);\n }\n });\n }\n else if (pluginConfig.translationServiceUrl && !useDefaultLanguage) {\n (() => __awaiter(this, void 0, void 0, function* () {\n var _b;\n try {\n const messages = yield getMessagesFromTranslationsService(pluginConfig.translationServiceUrl, language, name);\n return messagesLoaded(messages);\n }\n catch (err) {\n // Language is already as generic as it gets, so require default messages\n if (!language.includes('-')) {\n console.error(err);\n return req([name + '.nls'], messagesLoaded);\n }\n try {\n // Since there is a dash, the language configured is a specific sub-language of the same generic language.\n // Since we were unable to load the specific language, try to load the generic language. Ex. we failed to find a\n // Swiss German (de-CH), so try to load the generic German (de) messages instead.\n const genericLanguage = language.split('-')[0];\n const messages = yield getMessagesFromTranslationsService(pluginConfig.translationServiceUrl, genericLanguage, name);\n // We got some messages, so we configure the configuration to use the generic language for this session.\n (_b = pluginConfig.availableLanguages) !== null && _b !== void 0 ? _b : (pluginConfig.availableLanguages = {});\n pluginConfig.availableLanguages['*'] = genericLanguage;\n return messagesLoaded(messages);\n }\n catch (err) {\n console.error(err);\n return req([name + '.nls'], messagesLoaded);\n }\n }\n }))();\n }\n else {\n req([name + suffix], messagesLoaded, (err) => {\n if (suffix === '.nls') {\n console.error('Failed trying to load default language strings', err);\n return;\n }\n console.error(`Failed to load message bundle for language ${language}. Falling back to the default language:`, err);\n req([name + '.nls'], messagesLoaded);\n });\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IAccessibilityService = createDecorator('accessibilityService');\nexport const CONTEXT_ACCESSIBILITY_MODE_ENABLED = new RawContextKey('accessibilityModeEnabled', false);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { $, addDisposableListener, append, EventHelper, EventType } from '../../dom.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { EventType as GestureEventType, Gesture } from '../../touch.js';\nimport { ActionRunner } from '../../../common/actions.js';\nimport { Emitter } from '../../../common/event.js';\nimport './dropdown.css';\nexport class BaseDropdown extends ActionRunner {\n constructor(container, options) {\n super();\n this._onDidChangeVisibility = this._register(new Emitter());\n this.onDidChangeVisibility = this._onDidChangeVisibility.event;\n this._element = append(container, $('.monaco-dropdown'));\n this._label = append(this._element, $('.dropdown-label'));\n let labelRenderer = options.labelRenderer;\n if (!labelRenderer) {\n labelRenderer = (container) => {\n container.textContent = options.label || '';\n return null;\n };\n }\n for (const event of [EventType.CLICK, EventType.MOUSE_DOWN, GestureEventType.Tap]) {\n this._register(addDisposableListener(this.element, event, e => EventHelper.stop(e, true))); // prevent default click behaviour to trigger\n }\n for (const event of [EventType.MOUSE_DOWN, GestureEventType.Tap]) {\n this._register(addDisposableListener(this._label, event, e => {\n if (e instanceof MouseEvent && (e.detail > 1 || e.button !== 0)) {\n // prevent right click trigger to allow separate context menu (https://github.com/microsoft/vscode/issues/151064)\n // prevent multiple clicks to open multiple context menus (https://github.com/microsoft/vscode/issues/41363)\n return;\n }\n if (this.visible) {\n this.hide();\n }\n else {\n this.show();\n }\n }));\n }\n this._register(addDisposableListener(this._label, EventType.KEY_UP, e => {\n const event = new StandardKeyboardEvent(e);\n if (event.equals(3 /* KeyCode.Enter */) || event.equals(10 /* KeyCode.Space */)) {\n EventHelper.stop(e, true); // https://github.com/microsoft/vscode/issues/57997\n if (this.visible) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n }));\n const cleanupFn = labelRenderer(this._label);\n if (cleanupFn) {\n this._register(cleanupFn);\n }\n this._register(Gesture.addTarget(this._label));\n }\n get element() {\n return this._element;\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this._onDidChangeVisibility.fire(true);\n }\n }\n hide() {\n if (this.visible) {\n this.visible = false;\n this._onDidChangeVisibility.fire(false);\n }\n }\n dispose() {\n super.dispose();\n this.hide();\n if (this.boxContainer) {\n this.boxContainer.remove();\n this.boxContainer = undefined;\n }\n if (this.contents) {\n this.contents.remove();\n this.contents = undefined;\n }\n if (this._label) {\n this._label.remove();\n this._label = undefined;\n }\n }\n}\nexport class DropdownMenu extends BaseDropdown {\n constructor(container, options) {\n super(container, options);\n this._actions = [];\n this._contextMenuProvider = options.contextMenuProvider;\n this.actions = options.actions || [];\n this.actionProvider = options.actionProvider;\n this.menuClassName = options.menuClassName || '';\n this.menuAsChild = !!options.menuAsChild;\n }\n set menuOptions(options) {\n this._menuOptions = options;\n }\n get menuOptions() {\n return this._menuOptions;\n }\n get actions() {\n if (this.actionProvider) {\n return this.actionProvider.getActions();\n }\n return this._actions;\n }\n set actions(actions) {\n this._actions = actions;\n }\n show() {\n super.show();\n this.element.classList.add('active');\n this._contextMenuProvider.showContextMenu({\n getAnchor: () => this.element,\n getActions: () => this.actions,\n getActionsContext: () => this.menuOptions ? this.menuOptions.context : null,\n getActionViewItem: action => this.menuOptions && this.menuOptions.actionViewItemProvider ? this.menuOptions.actionViewItemProvider(action) : undefined,\n getKeyBinding: action => this.menuOptions && this.menuOptions.getKeyBinding ? this.menuOptions.getKeyBinding(action) : undefined,\n getMenuClassName: () => this.menuClassName,\n onHide: () => this.onHide(),\n actionRunner: this.menuOptions ? this.menuOptions.actionRunner : undefined,\n anchorAlignment: this.menuOptions ? this.menuOptions.anchorAlignment : 0 /* AnchorAlignment.LEFT */,\n domForShadowRoot: this.menuAsChild ? this.element : undefined\n });\n }\n hide() {\n super.hide();\n }\n onHide() {\n this.hide();\n this.element.classList.remove('active');\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { $, append } from '../../dom.js';\nimport { BaseActionViewItem } from '../actionbar/actionViewItems.js';\nimport { DropdownMenu } from './dropdown.js';\nimport { Emitter } from '../../../common/event.js';\nimport './dropdown.css';\nexport class DropdownMenuActionViewItem extends BaseActionViewItem {\n constructor(action, menuActionsOrProvider, contextMenuProvider, options = Object.create(null)) {\n super(null, action, options);\n this.actionItem = null;\n this._onDidChangeVisibility = this._register(new Emitter());\n this.menuActionsOrProvider = menuActionsOrProvider;\n this.contextMenuProvider = contextMenuProvider;\n this.options = options;\n if (this.options.actionRunner) {\n this.actionRunner = this.options.actionRunner;\n }\n }\n render(container) {\n this.actionItem = container;\n const labelRenderer = (el) => {\n this.element = append(el, $('a.action-label'));\n let classNames = [];\n if (typeof this.options.classNames === 'string') {\n classNames = this.options.classNames.split(/\\s+/g).filter(s => !!s);\n }\n else if (this.options.classNames) {\n classNames = this.options.classNames;\n }\n // todo@aeschli: remove codicon, should come through `this.options.classNames`\n if (!classNames.find(c => c === 'icon')) {\n classNames.push('codicon');\n }\n this.element.classList.add(...classNames);\n this.element.setAttribute('role', 'button');\n this.element.setAttribute('aria-haspopup', 'true');\n this.element.setAttribute('aria-expanded', 'false');\n this.element.title = this._action.label || '';\n this.element.ariaLabel = this._action.label || '';\n return null;\n };\n const isActionsArray = Array.isArray(this.menuActionsOrProvider);\n const options = {\n contextMenuProvider: this.contextMenuProvider,\n labelRenderer: labelRenderer,\n menuAsChild: this.options.menuAsChild,\n actions: isActionsArray ? this.menuActionsOrProvider : undefined,\n actionProvider: isActionsArray ? undefined : this.menuActionsOrProvider\n };\n this.dropdownMenu = this._register(new DropdownMenu(container, options));\n this._register(this.dropdownMenu.onDidChangeVisibility(visible => {\n var _a;\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', `${visible}`);\n this._onDidChangeVisibility.fire(visible);\n }));\n this.dropdownMenu.menuOptions = {\n actionViewItemProvider: this.options.actionViewItemProvider,\n actionRunner: this.actionRunner,\n getKeyBinding: this.options.keybindingProvider,\n context: this._context\n };\n if (this.options.anchorAlignmentProvider) {\n const that = this;\n this.dropdownMenu.menuOptions = Object.assign(Object.assign({}, this.dropdownMenu.menuOptions), { get anchorAlignment() {\n return that.options.anchorAlignmentProvider();\n } });\n }\n this.updateTooltip();\n this.updateEnabled();\n }\n getTooltip() {\n let title = null;\n if (this.getAction().tooltip) {\n title = this.getAction().tooltip;\n }\n else if (this.getAction().label) {\n title = this.getAction().label;\n }\n return title !== null && title !== void 0 ? title : undefined;\n }\n setActionContext(newContext) {\n super.setActionContext(newContext);\n if (this.dropdownMenu) {\n if (this.dropdownMenu.menuOptions) {\n this.dropdownMenu.menuOptions.context = newContext;\n }\n else {\n this.dropdownMenu.menuOptions = { context: newContext };\n }\n }\n }\n updateEnabled() {\n var _a, _b;\n const disabled = !this.getAction().enabled;\n (_a = this.actionItem) === null || _a === void 0 ? void 0 : _a.classList.toggle('disabled', disabled);\n (_b = this.element) === null || _b === void 0 ? void 0 : _b.classList.toggle('disabled', disabled);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { $, addDisposableListener, append, asCSSUrl, EventType, ModifierKeyEmitter, prepend } from '../../../base/browser/dom.js';\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\nimport { ActionViewItem, BaseActionViewItem } from '../../../base/browser/ui/actionbar/actionViewItems.js';\nimport { DropdownMenuActionViewItem } from '../../../base/browser/ui/dropdown/dropdownActionViewItem.js';\nimport { ActionRunner, Separator, SubmenuAction } from '../../../base/common/actions.js';\nimport { UILabelProvider } from '../../../base/common/keybindingLabels.js';\nimport { combinedDisposable, DisposableStore, MutableDisposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { isLinux, isWindows, OS } from '../../../base/common/platform.js';\nimport './menuEntryActionViewItem.css';\nimport { localize } from '../../../nls.js';\nimport { IMenuService, MenuItemAction, SubmenuItemAction } from '../common/actions.js';\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\nimport { IContextMenuService } from '../../contextview/browser/contextView.js';\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { INotificationService } from '../../notification/common/notification.js';\nimport { IStorageService } from '../../storage/common/storage.js';\nimport { IThemeService, ThemeIcon } from '../../theme/common/themeService.js';\nimport { isDark } from '../../theme/common/theme.js';\nimport { assertType } from '../../../base/common/types.js';\nexport function createAndFillInActionBarActions(menu, options, target, primaryGroup, primaryMaxCount, shouldInlineSubmenu, useSeparatorsInPrimaryActions) {\n const groups = menu.getActions(options);\n const isPrimaryAction = typeof primaryGroup === 'string' ? (actionGroup) => actionGroup === primaryGroup : primaryGroup;\n // Action bars handle alternative actions on their own so the alternative actions should be ignored\n fillInActions(groups, target, false, isPrimaryAction, primaryMaxCount, shouldInlineSubmenu, useSeparatorsInPrimaryActions);\n return asDisposable(groups);\n}\nfunction asDisposable(groups) {\n const disposables = new DisposableStore();\n for (const [, actions] of groups) {\n for (const action of actions) {\n disposables.add(action);\n }\n }\n return disposables;\n}\nfunction fillInActions(groups, target, useAlternativeActions, isPrimaryAction = actionGroup => actionGroup === 'navigation', primaryMaxCount = Number.MAX_SAFE_INTEGER, shouldInlineSubmenu = () => false, useSeparatorsInPrimaryActions = false) {\n let primaryBucket;\n let secondaryBucket;\n if (Array.isArray(target)) {\n primaryBucket = target;\n secondaryBucket = target;\n }\n else {\n primaryBucket = target.primary;\n secondaryBucket = target.secondary;\n }\n const submenuInfo = new Set();\n for (const [group, actions] of groups) {\n let target;\n if (isPrimaryAction(group)) {\n target = primaryBucket;\n if (target.length > 0 && useSeparatorsInPrimaryActions) {\n target.push(new Separator());\n }\n }\n else {\n target = secondaryBucket;\n if (target.length > 0) {\n target.push(new Separator());\n }\n }\n for (let action of actions) {\n if (useAlternativeActions) {\n action = action instanceof MenuItemAction && action.alt ? action.alt : action;\n }\n const newLen = target.push(action);\n // keep submenu info for later inlining\n if (action instanceof SubmenuAction) {\n submenuInfo.add({ group, action, index: newLen - 1 });\n }\n }\n }\n // ask the outside if submenu should be inlined or not. only ask when\n // there would be enough space\n for (const { group, action, index } of submenuInfo) {\n const target = isPrimaryAction(group) ? primaryBucket : secondaryBucket;\n // inlining submenus with length 0 or 1 is easy,\n // larger submenus need to be checked with the overall limit\n const submenuActions = action.actions;\n if ((submenuActions.length <= 1 || target.length + submenuActions.length - 2 <= primaryMaxCount) && shouldInlineSubmenu(action, group, target.length)) {\n target.splice(index, 1, ...submenuActions);\n }\n }\n // overflow items from the primary group into the secondary bucket\n if (primaryBucket !== secondaryBucket && primaryBucket.length > primaryMaxCount) {\n const overflow = primaryBucket.splice(primaryMaxCount, primaryBucket.length - primaryMaxCount);\n secondaryBucket.unshift(...overflow, new Separator());\n }\n}\nlet MenuEntryActionViewItem = class MenuEntryActionViewItem extends ActionViewItem {\n constructor(action, options, _keybindingService, _notificationService, _contextKeyService, _themeService, _contextMenuService) {\n super(undefined, action, { icon: !!(action.class || action.item.icon), label: !action.class && !action.item.icon, draggable: options === null || options === void 0 ? void 0 : options.draggable, keybinding: options === null || options === void 0 ? void 0 : options.keybinding, hoverDelegate: options === null || options === void 0 ? void 0 : options.hoverDelegate });\n this._keybindingService = _keybindingService;\n this._notificationService = _notificationService;\n this._contextKeyService = _contextKeyService;\n this._themeService = _themeService;\n this._contextMenuService = _contextMenuService;\n this._wantsAltCommand = false;\n this._itemClassDispose = this._register(new MutableDisposable());\n this._altKey = ModifierKeyEmitter.getInstance();\n }\n get _menuItemAction() {\n return this._action;\n }\n get _commandAction() {\n return this._wantsAltCommand && this._menuItemAction.alt || this._menuItemAction;\n }\n onClick(event) {\n return __awaiter(this, void 0, void 0, function* () {\n event.preventDefault();\n event.stopPropagation();\n try {\n yield this.actionRunner.run(this._commandAction, this._context);\n }\n catch (err) {\n this._notificationService.error(err);\n }\n });\n }\n render(container) {\n super.render(container);\n container.classList.add('menu-entry');\n this._updateItemClass(this._menuItemAction.item);\n let mouseOver = false;\n let alternativeKeyDown = this._altKey.keyStatus.altKey || ((isWindows || isLinux) && this._altKey.keyStatus.shiftKey);\n const updateAltState = () => {\n var _a;\n const wantsAltCommand = mouseOver && alternativeKeyDown && !!((_a = this._commandAction.alt) === null || _a === void 0 ? void 0 : _a.enabled);\n if (wantsAltCommand !== this._wantsAltCommand) {\n this._wantsAltCommand = wantsAltCommand;\n this.updateLabel();\n this.updateTooltip();\n this.updateClass();\n }\n };\n if (this._menuItemAction.alt) {\n this._register(this._altKey.event(value => {\n alternativeKeyDown = value.altKey || ((isWindows || isLinux) && value.shiftKey);\n updateAltState();\n }));\n }\n this._register(addDisposableListener(container, 'mouseleave', _ => {\n mouseOver = false;\n updateAltState();\n }));\n this._register(addDisposableListener(container, 'mouseenter', _ => {\n mouseOver = true;\n updateAltState();\n }));\n }\n updateLabel() {\n if (this.options.label && this.label) {\n this.label.textContent = this._commandAction.label;\n }\n }\n getTooltip() {\n var _a;\n const keybinding = this._keybindingService.lookupKeybinding(this._commandAction.id, this._contextKeyService);\n const keybindingLabel = keybinding && keybinding.getLabel();\n const tooltip = this._commandAction.tooltip || this._commandAction.label;\n let title = keybindingLabel\n ? localize('titleAndKb', \"{0} ({1})\", tooltip, keybindingLabel)\n : tooltip;\n if (!this._wantsAltCommand && ((_a = this._menuItemAction.alt) === null || _a === void 0 ? void 0 : _a.enabled)) {\n const altTooltip = this._menuItemAction.alt.tooltip || this._menuItemAction.alt.label;\n const altKeybinding = this._keybindingService.lookupKeybinding(this._menuItemAction.alt.id, this._contextKeyService);\n const altKeybindingLabel = altKeybinding && altKeybinding.getLabel();\n const altTitleSection = altKeybindingLabel\n ? localize('titleAndKb', \"{0} ({1})\", altTooltip, altKeybindingLabel)\n : altTooltip;\n title = localize('titleAndKbAndAlt', \"{0}\\n[{1}] {2}\", title, UILabelProvider.modifierLabels[OS].altKey, altTitleSection);\n }\n return title;\n }\n updateClass() {\n if (this.options.icon) {\n if (this._commandAction !== this._menuItemAction) {\n if (this._menuItemAction.alt) {\n this._updateItemClass(this._menuItemAction.alt.item);\n }\n }\n else {\n this._updateItemClass(this._menuItemAction.item);\n }\n }\n }\n _updateItemClass(item) {\n var _a;\n this._itemClassDispose.value = undefined;\n const { element, label } = this;\n if (!element || !label) {\n return;\n }\n const icon = this._commandAction.checked && ((_a = item.toggled) === null || _a === void 0 ? void 0 : _a.icon) ? item.toggled.icon : item.icon;\n if (!icon) {\n return;\n }\n if (ThemeIcon.isThemeIcon(icon)) {\n // theme icons\n const iconClasses = ThemeIcon.asClassNameArray(icon);\n label.classList.add(...iconClasses);\n this._itemClassDispose.value = toDisposable(() => {\n label.classList.remove(...iconClasses);\n });\n }\n else {\n // icon path/url\n label.style.backgroundImage = (isDark(this._themeService.getColorTheme().type)\n ? asCSSUrl(icon.dark)\n : asCSSUrl(icon.light));\n label.classList.add('icon');\n this._itemClassDispose.value = combinedDisposable(toDisposable(() => {\n label.style.backgroundImage = '';\n label.classList.remove('icon');\n }), this._themeService.onDidColorThemeChange(() => {\n // refresh when the theme changes in case we go between dark <-> light\n this.updateClass();\n }));\n }\n }\n};\nMenuEntryActionViewItem = __decorate([\n __param(2, IKeybindingService),\n __param(3, INotificationService),\n __param(4, IContextKeyService),\n __param(5, IThemeService),\n __param(6, IContextMenuService)\n], MenuEntryActionViewItem);\nexport { MenuEntryActionViewItem };\nlet SubmenuEntryActionViewItem = class SubmenuEntryActionViewItem extends DropdownMenuActionViewItem {\n constructor(action, options, _contextMenuService, _themeService) {\n var _a, _b;\n const dropdownOptions = Object.assign({}, options !== null && options !== void 0 ? options : Object.create(null), {\n menuAsChild: (_a = options === null || options === void 0 ? void 0 : options.menuAsChild) !== null && _a !== void 0 ? _a : false,\n classNames: (_b = options === null || options === void 0 ? void 0 : options.classNames) !== null && _b !== void 0 ? _b : (ThemeIcon.isThemeIcon(action.item.icon) ? ThemeIcon.asClassName(action.item.icon) : undefined),\n });\n super(action, { getActions: () => action.actions }, _contextMenuService, dropdownOptions);\n this._contextMenuService = _contextMenuService;\n this._themeService = _themeService;\n }\n render(container) {\n super.render(container);\n assertType(this.element);\n container.classList.add('menu-entry');\n const action = this._action;\n const { icon } = action.item;\n if (icon && !ThemeIcon.isThemeIcon(icon)) {\n this.element.classList.add('icon');\n const setBackgroundImage = () => {\n if (this.element) {\n this.element.style.backgroundImage = (isDark(this._themeService.getColorTheme().type)\n ? asCSSUrl(icon.dark)\n : asCSSUrl(icon.light));\n }\n };\n setBackgroundImage();\n this._register(this._themeService.onDidColorThemeChange(() => {\n // refresh when the theme changes in case we go between dark <-> light\n setBackgroundImage();\n }));\n }\n }\n};\nSubmenuEntryActionViewItem = __decorate([\n __param(2, IContextMenuService),\n __param(3, IThemeService)\n], SubmenuEntryActionViewItem);\nexport { SubmenuEntryActionViewItem };\nlet DropdownWithDefaultActionViewItem = class DropdownWithDefaultActionViewItem extends BaseActionViewItem {\n constructor(submenuAction, options, _keybindingService, _notificationService, _contextMenuService, _menuService, _instaService, _storageService) {\n var _a, _b, _c;\n super(null, submenuAction);\n this._keybindingService = _keybindingService;\n this._notificationService = _notificationService;\n this._contextMenuService = _contextMenuService;\n this._menuService = _menuService;\n this._instaService = _instaService;\n this._storageService = _storageService;\n this._container = null;\n this._options = options;\n this._storageKey = `${submenuAction.item.submenu.id}_lastActionId`;\n // determine default action\n let defaultAction;\n const defaultActionId = _storageService.get(this._storageKey, 1 /* StorageScope.WORKSPACE */);\n if (defaultActionId) {\n defaultAction = submenuAction.actions.find(a => defaultActionId === a.id);\n }\n if (!defaultAction) {\n defaultAction = submenuAction.actions[0];\n }\n this._defaultAction = this._instaService.createInstance(MenuEntryActionViewItem, defaultAction, { keybinding: this._getDefaultActionKeybindingLabel(defaultAction) });\n const dropdownOptions = Object.assign({}, options !== null && options !== void 0 ? options : Object.create(null), {\n menuAsChild: (_a = options === null || options === void 0 ? void 0 : options.menuAsChild) !== null && _a !== void 0 ? _a : true,\n classNames: (_b = options === null || options === void 0 ? void 0 : options.classNames) !== null && _b !== void 0 ? _b : ['codicon', 'codicon-chevron-down'],\n actionRunner: (_c = options === null || options === void 0 ? void 0 : options.actionRunner) !== null && _c !== void 0 ? _c : new ActionRunner()\n });\n this._dropdown = new DropdownMenuActionViewItem(submenuAction, submenuAction.actions, this._contextMenuService, dropdownOptions);\n this._dropdown.actionRunner.onDidRun((e) => {\n if (e.action instanceof MenuItemAction) {\n this.update(e.action);\n }\n });\n }\n update(lastAction) {\n this._storageService.store(this._storageKey, lastAction.id, 1 /* StorageScope.WORKSPACE */, 0 /* StorageTarget.USER */);\n this._defaultAction.dispose();\n this._defaultAction = this._instaService.createInstance(MenuEntryActionViewItem, lastAction, { keybinding: this._getDefaultActionKeybindingLabel(lastAction) });\n this._defaultAction.actionRunner = new class extends ActionRunner {\n runAction(action, context) {\n return __awaiter(this, void 0, void 0, function* () {\n yield action.run(undefined);\n });\n }\n }();\n if (this._container) {\n this._defaultAction.render(prepend(this._container, $('.action-container')));\n }\n }\n _getDefaultActionKeybindingLabel(defaultAction) {\n var _a;\n let defaultActionKeybinding;\n if ((_a = this._options) === null || _a === void 0 ? void 0 : _a.renderKeybindingWithDefaultActionLabel) {\n const kb = this._keybindingService.lookupKeybinding(defaultAction.id);\n if (kb) {\n defaultActionKeybinding = `(${kb.getLabel()})`;\n }\n }\n return defaultActionKeybinding;\n }\n setActionContext(newContext) {\n super.setActionContext(newContext);\n this._defaultAction.setActionContext(newContext);\n this._dropdown.setActionContext(newContext);\n }\n render(container) {\n this._container = container;\n super.render(this._container);\n this._container.classList.add('monaco-dropdown-with-default');\n const primaryContainer = $('.action-container');\n this._defaultAction.render(append(this._container, primaryContainer));\n this._register(addDisposableListener(primaryContainer, EventType.KEY_DOWN, (e) => {\n const event = new StandardKeyboardEvent(e);\n if (event.equals(17 /* KeyCode.RightArrow */)) {\n this._defaultAction.element.tabIndex = -1;\n this._dropdown.focus();\n event.stopPropagation();\n }\n }));\n const dropdownContainer = $('.dropdown-action-container');\n this._dropdown.render(append(this._container, dropdownContainer));\n this._register(addDisposableListener(dropdownContainer, EventType.KEY_DOWN, (e) => {\n var _a;\n const event = new StandardKeyboardEvent(e);\n if (event.equals(15 /* KeyCode.LeftArrow */)) {\n this._defaultAction.element.tabIndex = 0;\n this._dropdown.setFocusable(false);\n (_a = this._defaultAction.element) === null || _a === void 0 ? void 0 : _a.focus();\n event.stopPropagation();\n }\n }));\n }\n focus(fromRight) {\n if (fromRight) {\n this._dropdown.focus();\n }\n else {\n this._defaultAction.element.tabIndex = 0;\n this._defaultAction.element.focus();\n }\n }\n blur() {\n this._defaultAction.element.tabIndex = -1;\n this._dropdown.blur();\n this._container.blur();\n }\n setFocusable(focusable) {\n if (focusable) {\n this._defaultAction.element.tabIndex = 0;\n }\n else {\n this._defaultAction.element.tabIndex = -1;\n this._dropdown.setFocusable(false);\n }\n }\n dispose() {\n this._defaultAction.dispose();\n this._dropdown.dispose();\n super.dispose();\n }\n};\nDropdownWithDefaultActionViewItem = __decorate([\n __param(2, IKeybindingService),\n __param(3, INotificationService),\n __param(4, IContextMenuService),\n __param(5, IMenuService),\n __param(6, IInstantiationService),\n __param(7, IStorageService)\n], DropdownWithDefaultActionViewItem);\nexport { DropdownWithDefaultActionViewItem };\n/**\n * Creates action view items for menu actions or submenu actions.\n */\nexport function createActionViewItem(instaService, action, options) {\n if (action instanceof MenuItemAction) {\n return instaService.createInstance(MenuEntryActionViewItem, action, options);\n }\n else if (action instanceof SubmenuItemAction) {\n if (action.item.rememberDefaultAction) {\n return instaService.createInstance(DropdownWithDefaultActionViewItem, action, options);\n }\n else {\n return instaService.createInstance(SubmenuEntryActionViewItem, action, options);\n }\n }\n else {\n return undefined;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Separator, SubmenuAction } from '../../../base/common/actions.js';\nimport { CSSIcon } from '../../../base/common/codicons.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { Iterable } from '../../../base/common/iterator.js';\nimport { toDisposable } from '../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { ICommandService } from '../../commands/common/commands.js';\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport { ThemeIcon } from '../../theme/common/themeService.js';\nexport function isIMenuItem(item) {\n return item.command !== undefined;\n}\nexport class MenuId {\n /**\n * Create a new `MenuId` with the unique identifier. Will throw if a menu\n * with the identifier already exists, use `MenuId.for(ident)` or a unique\n * identifier\n */\n constructor(identifier) {\n if (MenuId._instances.has(identifier)) {\n throw new TypeError(`MenuId with identifier '${identifier}' already exists. Use MenuId.for(ident) or a unique identifier`);\n }\n MenuId._instances.set(identifier, this);\n this.id = identifier;\n }\n}\nMenuId._instances = new Map();\nMenuId.CommandPalette = new MenuId('CommandPalette');\nMenuId.DebugBreakpointsContext = new MenuId('DebugBreakpointsContext');\nMenuId.DebugCallStackContext = new MenuId('DebugCallStackContext');\nMenuId.DebugConsoleContext = new MenuId('DebugConsoleContext');\nMenuId.DebugVariablesContext = new MenuId('DebugVariablesContext');\nMenuId.DebugWatchContext = new MenuId('DebugWatchContext');\nMenuId.DebugToolBar = new MenuId('DebugToolBar');\nMenuId.DebugToolBarStop = new MenuId('DebugToolBarStop');\nMenuId.EditorContext = new MenuId('EditorContext');\nMenuId.SimpleEditorContext = new MenuId('SimpleEditorContext');\nMenuId.EditorContextCopy = new MenuId('EditorContextCopy');\nMenuId.EditorContextPeek = new MenuId('EditorContextPeek');\nMenuId.EditorContextShare = new MenuId('EditorContextShare');\nMenuId.EditorTitle = new MenuId('EditorTitle');\nMenuId.EditorTitleRun = new MenuId('EditorTitleRun');\nMenuId.EditorTitleContext = new MenuId('EditorTitleContext');\nMenuId.EmptyEditorGroup = new MenuId('EmptyEditorGroup');\nMenuId.EmptyEditorGroupContext = new MenuId('EmptyEditorGroupContext');\nMenuId.ExplorerContext = new MenuId('ExplorerContext');\nMenuId.ExtensionContext = new MenuId('ExtensionContext');\nMenuId.GlobalActivity = new MenuId('GlobalActivity');\nMenuId.CommandCenter = new MenuId('CommandCenter');\nMenuId.LayoutControlMenuSubmenu = new MenuId('LayoutControlMenuSubmenu');\nMenuId.LayoutControlMenu = new MenuId('LayoutControlMenu');\nMenuId.MenubarMainMenu = new MenuId('MenubarMainMenu');\nMenuId.MenubarAppearanceMenu = new MenuId('MenubarAppearanceMenu');\nMenuId.MenubarDebugMenu = new MenuId('MenubarDebugMenu');\nMenuId.MenubarEditMenu = new MenuId('MenubarEditMenu');\nMenuId.MenubarCopy = new MenuId('MenubarCopy');\nMenuId.MenubarFileMenu = new MenuId('MenubarFileMenu');\nMenuId.MenubarGoMenu = new MenuId('MenubarGoMenu');\nMenuId.MenubarHelpMenu = new MenuId('MenubarHelpMenu');\nMenuId.MenubarLayoutMenu = new MenuId('MenubarLayoutMenu');\nMenuId.MenubarNewBreakpointMenu = new MenuId('MenubarNewBreakpointMenu');\nMenuId.MenubarPanelAlignmentMenu = new MenuId('MenubarPanelAlignmentMenu');\nMenuId.MenubarPanelPositionMenu = new MenuId('MenubarPanelPositionMenu');\nMenuId.MenubarPreferencesMenu = new MenuId('MenubarPreferencesMenu');\nMenuId.MenubarRecentMenu = new MenuId('MenubarRecentMenu');\nMenuId.MenubarSelectionMenu = new MenuId('MenubarSelectionMenu');\nMenuId.MenubarShare = new MenuId('MenubarShare');\nMenuId.MenubarSwitchEditorMenu = new MenuId('MenubarSwitchEditorMenu');\nMenuId.MenubarSwitchGroupMenu = new MenuId('MenubarSwitchGroupMenu');\nMenuId.MenubarTerminalMenu = new MenuId('MenubarTerminalMenu');\nMenuId.MenubarViewMenu = new MenuId('MenubarViewMenu');\nMenuId.MenubarHomeMenu = new MenuId('MenubarHomeMenu');\nMenuId.OpenEditorsContext = new MenuId('OpenEditorsContext');\nMenuId.ProblemsPanelContext = new MenuId('ProblemsPanelContext');\nMenuId.SCMChangeContext = new MenuId('SCMChangeContext');\nMenuId.SCMResourceContext = new MenuId('SCMResourceContext');\nMenuId.SCMResourceFolderContext = new MenuId('SCMResourceFolderContext');\nMenuId.SCMResourceGroupContext = new MenuId('SCMResourceGroupContext');\nMenuId.SCMSourceControl = new MenuId('SCMSourceControl');\nMenuId.SCMTitle = new MenuId('SCMTitle');\nMenuId.SearchContext = new MenuId('SearchContext');\nMenuId.StatusBarWindowIndicatorMenu = new MenuId('StatusBarWindowIndicatorMenu');\nMenuId.StatusBarRemoteIndicatorMenu = new MenuId('StatusBarRemoteIndicatorMenu');\nMenuId.TestItem = new MenuId('TestItem');\nMenuId.TestItemGutter = new MenuId('TestItemGutter');\nMenuId.TestPeekElement = new MenuId('TestPeekElement');\nMenuId.TestPeekTitle = new MenuId('TestPeekTitle');\nMenuId.TouchBarContext = new MenuId('TouchBarContext');\nMenuId.TitleBarContext = new MenuId('TitleBarContext');\nMenuId.TitleBarTitleContext = new MenuId('TitleBarTitleContext');\nMenuId.TunnelContext = new MenuId('TunnelContext');\nMenuId.TunnelPrivacy = new MenuId('TunnelPrivacy');\nMenuId.TunnelProtocol = new MenuId('TunnelProtocol');\nMenuId.TunnelPortInline = new MenuId('TunnelInline');\nMenuId.TunnelTitle = new MenuId('TunnelTitle');\nMenuId.TunnelLocalAddressInline = new MenuId('TunnelLocalAddressInline');\nMenuId.TunnelOriginInline = new MenuId('TunnelOriginInline');\nMenuId.ViewItemContext = new MenuId('ViewItemContext');\nMenuId.ViewContainerTitle = new MenuId('ViewContainerTitle');\nMenuId.ViewContainerTitleContext = new MenuId('ViewContainerTitleContext');\nMenuId.ViewTitle = new MenuId('ViewTitle');\nMenuId.ViewTitleContext = new MenuId('ViewTitleContext');\nMenuId.CommentThreadTitle = new MenuId('CommentThreadTitle');\nMenuId.CommentThreadActions = new MenuId('CommentThreadActions');\nMenuId.CommentTitle = new MenuId('CommentTitle');\nMenuId.CommentActions = new MenuId('CommentActions');\nMenuId.InteractiveToolbar = new MenuId('InteractiveToolbar');\nMenuId.InteractiveCellTitle = new MenuId('InteractiveCellTitle');\nMenuId.InteractiveCellDelete = new MenuId('InteractiveCellDelete');\nMenuId.InteractiveCellExecute = new MenuId('InteractiveCellExecute');\nMenuId.InteractiveInputExecute = new MenuId('InteractiveInputExecute');\nMenuId.NotebookToolbar = new MenuId('NotebookToolbar');\nMenuId.NotebookCellTitle = new MenuId('NotebookCellTitle');\nMenuId.NotebookCellDelete = new MenuId('NotebookCellDelete');\nMenuId.NotebookCellInsert = new MenuId('NotebookCellInsert');\nMenuId.NotebookCellBetween = new MenuId('NotebookCellBetween');\nMenuId.NotebookCellListTop = new MenuId('NotebookCellTop');\nMenuId.NotebookCellExecute = new MenuId('NotebookCellExecute');\nMenuId.NotebookCellExecutePrimary = new MenuId('NotebookCellExecutePrimary');\nMenuId.NotebookDiffCellInputTitle = new MenuId('NotebookDiffCellInputTitle');\nMenuId.NotebookDiffCellMetadataTitle = new MenuId('NotebookDiffCellMetadataTitle');\nMenuId.NotebookDiffCellOutputsTitle = new MenuId('NotebookDiffCellOutputsTitle');\nMenuId.NotebookOutputToolbar = new MenuId('NotebookOutputToolbar');\nMenuId.NotebookEditorLayoutConfigure = new MenuId('NotebookEditorLayoutConfigure');\nMenuId.NotebookKernelSource = new MenuId('NotebookKernelSource');\nMenuId.BulkEditTitle = new MenuId('BulkEditTitle');\nMenuId.BulkEditContext = new MenuId('BulkEditContext');\nMenuId.TimelineItemContext = new MenuId('TimelineItemContext');\nMenuId.TimelineTitle = new MenuId('TimelineTitle');\nMenuId.TimelineTitleContext = new MenuId('TimelineTitleContext');\nMenuId.TimelineFilterSubMenu = new MenuId('TimelineFilterSubMenu');\nMenuId.AccountsContext = new MenuId('AccountsContext');\nMenuId.PanelTitle = new MenuId('PanelTitle');\nMenuId.AuxiliaryBarTitle = new MenuId('AuxiliaryBarTitle');\nMenuId.TerminalInstanceContext = new MenuId('TerminalInstanceContext');\nMenuId.TerminalEditorInstanceContext = new MenuId('TerminalEditorInstanceContext');\nMenuId.TerminalNewDropdownContext = new MenuId('TerminalNewDropdownContext');\nMenuId.TerminalTabContext = new MenuId('TerminalTabContext');\nMenuId.TerminalTabEmptyAreaContext = new MenuId('TerminalTabEmptyAreaContext');\nMenuId.TerminalInlineTabContext = new MenuId('TerminalInlineTabContext');\nMenuId.WebviewContext = new MenuId('WebviewContext');\nMenuId.InlineCompletionsActions = new MenuId('InlineCompletionsActions');\nMenuId.NewFile = new MenuId('NewFile');\nMenuId.MergeToolbar = new MenuId('MergeToolbar');\nMenuId.MergeInput1Toolbar = new MenuId('MergeToolbar1Toolbar');\nMenuId.MergeInput2Toolbar = new MenuId('MergeToolbar2Toolbar');\nexport const IMenuService = createDecorator('menuService');\nexport const MenuRegistry = new class {\n constructor() {\n this._commands = new Map();\n this._menuItems = new Map();\n this._onDidChangeMenu = new Emitter();\n this.onDidChangeMenu = this._onDidChangeMenu.event;\n this._commandPaletteChangeEvent = {\n has: id => id === MenuId.CommandPalette\n };\n }\n addCommand(command) {\n return this.addCommands(Iterable.single(command));\n }\n addCommands(commands) {\n for (const command of commands) {\n this._commands.set(command.id, command);\n }\n this._onDidChangeMenu.fire(this._commandPaletteChangeEvent);\n return toDisposable(() => {\n let didChange = false;\n for (const command of commands) {\n didChange = this._commands.delete(command.id) || didChange;\n }\n if (didChange) {\n this._onDidChangeMenu.fire(this._commandPaletteChangeEvent);\n }\n });\n }\n getCommand(id) {\n return this._commands.get(id);\n }\n getCommands() {\n const map = new Map();\n this._commands.forEach((value, key) => map.set(key, value));\n return map;\n }\n appendMenuItem(id, item) {\n return this.appendMenuItems(Iterable.single({ id, item }));\n }\n appendMenuItems(items) {\n const changedIds = new Set();\n const toRemove = new LinkedList();\n for (const { id, item } of items) {\n let list = this._menuItems.get(id);\n if (!list) {\n list = new LinkedList();\n this._menuItems.set(id, list);\n }\n toRemove.push(list.push(item));\n changedIds.add(id);\n }\n this._onDidChangeMenu.fire(changedIds);\n return toDisposable(() => {\n if (toRemove.size > 0) {\n for (const fn of toRemove) {\n fn();\n }\n this._onDidChangeMenu.fire(changedIds);\n toRemove.clear();\n }\n });\n }\n getMenuItems(id) {\n let result;\n if (this._menuItems.has(id)) {\n result = [...this._menuItems.get(id)];\n }\n else {\n result = [];\n }\n if (id === MenuId.CommandPalette) {\n // CommandPalette is special because it shows\n // all commands by default\n this._appendImplicitItems(result);\n }\n return result;\n }\n _appendImplicitItems(result) {\n const set = new Set();\n for (const item of result) {\n if (isIMenuItem(item)) {\n set.add(item.command.id);\n if (item.alt) {\n set.add(item.alt.id);\n }\n }\n }\n this._commands.forEach((command, id) => {\n if (!set.has(id)) {\n result.push({ command });\n }\n });\n }\n};\nexport class SubmenuItemAction extends SubmenuAction {\n constructor(item, _menuService, _contextKeyService, _options) {\n super(`submenuitem.${item.submenu.id}`, typeof item.title === 'string' ? item.title : item.title.value, [], 'submenu');\n this.item = item;\n this._menuService = _menuService;\n this._contextKeyService = _contextKeyService;\n this._options = _options;\n }\n get actions() {\n const result = [];\n const menu = this._menuService.createMenu(this.item.submenu, this._contextKeyService);\n const groups = menu.getActions(this._options);\n menu.dispose();\n for (const [, actions] of groups) {\n if (actions.length > 0) {\n result.push(...actions);\n result.push(new Separator());\n }\n }\n if (result.length) {\n result.pop(); // remove last separator\n }\n return result;\n }\n}\n// implements IAction, does NOT extend Action, so that no one\n// subscribes to events of Action or modified properties\nlet MenuItemAction = class MenuItemAction {\n constructor(item, alt, options, hideActions, contextKeyService, _commandService) {\n var _a, _b;\n this.hideActions = hideActions;\n this._commandService = _commandService;\n this.id = item.id;\n this.label = (options === null || options === void 0 ? void 0 : options.renderShortTitle) && item.shortTitle\n ? (typeof item.shortTitle === 'string' ? item.shortTitle : item.shortTitle.value)\n : (typeof item.title === 'string' ? item.title : item.title.value);\n this.tooltip = (_b = (typeof item.tooltip === 'string' ? item.tooltip : (_a = item.tooltip) === null || _a === void 0 ? void 0 : _a.value)) !== null && _b !== void 0 ? _b : '';\n this.enabled = !item.precondition || contextKeyService.contextMatchesRules(item.precondition);\n this.checked = undefined;\n if (item.toggled) {\n const toggled = (item.toggled.condition ? item.toggled : { condition: item.toggled });\n this.checked = contextKeyService.contextMatchesRules(toggled.condition);\n if (this.checked && toggled.tooltip) {\n this.tooltip = typeof toggled.tooltip === 'string' ? toggled.tooltip : toggled.tooltip.value;\n }\n if (toggled.title) {\n this.label = typeof toggled.title === 'string' ? toggled.title : toggled.title.value;\n }\n }\n this.item = item;\n this.alt = alt ? new MenuItemAction(alt, undefined, options, hideActions, contextKeyService, _commandService) : undefined;\n this._options = options;\n if (ThemeIcon.isThemeIcon(item.icon)) {\n this.class = CSSIcon.asClassName(item.icon);\n }\n }\n dispose() {\n // there is NOTHING to dispose and the MenuItemAction should\n // never have anything to dispose as it is a convenience type\n // to bridge into the rendering world.\n }\n run(...args) {\n var _a, _b;\n let runArgs = [];\n if ((_a = this._options) === null || _a === void 0 ? void 0 : _a.arg) {\n runArgs = [...runArgs, this._options.arg];\n }\n if ((_b = this._options) === null || _b === void 0 ? void 0 : _b.shouldForwardArgs) {\n runArgs = [...runArgs, ...args];\n }\n return this._commandService.executeCommand(this.id, ...runArgs);\n }\n};\nMenuItemAction = __decorate([\n __param(4, IContextKeyService),\n __param(5, ICommandService)\n], MenuItemAction);\nexport { MenuItemAction };\n//#endregion\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IClipboardService = createDecorator('clipboardService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../base/common/event.js';\nimport { Iterable } from '../../../base/common/iterator.js';\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../base/common/linkedList.js';\nimport { validateConstraints } from '../../../base/common/types.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const ICommandService = createDecorator('commandService');\nexport const CommandsRegistry = new class {\n constructor() {\n this._commands = new Map();\n this._onDidRegisterCommand = new Emitter();\n this.onDidRegisterCommand = this._onDidRegisterCommand.event;\n }\n registerCommand(idOrCommand, handler) {\n if (!idOrCommand) {\n throw new Error(`invalid command`);\n }\n if (typeof idOrCommand === 'string') {\n if (!handler) {\n throw new Error(`invalid command`);\n }\n return this.registerCommand({ id: idOrCommand, handler });\n }\n // add argument validation if rich command metadata is provided\n if (idOrCommand.description) {\n const constraints = [];\n for (const arg of idOrCommand.description.args) {\n constraints.push(arg.constraint);\n }\n const actualHandler = idOrCommand.handler;\n idOrCommand.handler = function (accessor, ...args) {\n validateConstraints(args, constraints);\n return actualHandler(accessor, ...args);\n };\n }\n // find a place to store the command\n const { id } = idOrCommand;\n let commands = this._commands.get(id);\n if (!commands) {\n commands = new LinkedList();\n this._commands.set(id, commands);\n }\n const removeFn = commands.unshift(idOrCommand);\n const ret = toDisposable(() => {\n removeFn();\n const command = this._commands.get(id);\n if (command === null || command === void 0 ? void 0 : command.isEmpty()) {\n this._commands.delete(id);\n }\n });\n // tell the world about this command\n this._onDidRegisterCommand.fire(id);\n return ret;\n }\n registerCommandAlias(oldId, newId) {\n return CommandsRegistry.registerCommand(oldId, (accessor, ...args) => accessor.get(ICommandService).executeCommand(newId, ...args));\n }\n getCommand(id) {\n const list = this._commands.get(id);\n if (!list || list.isEmpty()) {\n return undefined;\n }\n return Iterable.first(list);\n }\n getCommands() {\n const result = new Map();\n for (const key of this._commands.keys()) {\n const command = this.getCommand(key);\n if (command) {\n result.set(key, command);\n }\n }\n return result;\n }\n};\nexport const NullCommandService = {\n _serviceBrand: undefined,\n onWillExecuteCommand: () => Disposable.None,\n onDidExecuteCommand: () => Disposable.None,\n executeCommand() {\n return Promise.resolve(undefined);\n }\n};\nCommandsRegistry.registerCommand('noop', () => { });\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IConfigurationService = createDecorator('configurationService');\nexport function toValuesTree(properties, conflictReporter) {\n const root = Object.create(null);\n for (const key in properties) {\n addToValueTree(root, key, properties[key], conflictReporter);\n }\n return root;\n}\nexport function addToValueTree(settingsTreeRoot, key, value, conflictReporter) {\n const segments = key.split('.');\n const last = segments.pop();\n let curr = settingsTreeRoot;\n for (let i = 0; i < segments.length; i++) {\n const s = segments[i];\n let obj = curr[s];\n switch (typeof obj) {\n case 'undefined':\n obj = curr[s] = Object.create(null);\n break;\n case 'object':\n break;\n default:\n conflictReporter(`Ignoring ${key} as ${segments.slice(0, i + 1).join('.')} is ${JSON.stringify(obj)}`);\n return;\n }\n curr = obj;\n }\n if (typeof curr === 'object' && curr !== null) {\n try {\n curr[last] = value; // workaround https://github.com/microsoft/vscode/issues/13606\n }\n catch (e) {\n conflictReporter(`Ignoring ${key} as ${segments.join('.')} is ${JSON.stringify(curr)}`);\n }\n }\n else {\n conflictReporter(`Ignoring ${key} as ${segments.join('.')} is ${JSON.stringify(curr)}`);\n }\n}\nexport function removeFromValueTree(valueTree, key) {\n const segments = key.split('.');\n doRemoveFromValueTree(valueTree, segments);\n}\nfunction doRemoveFromValueTree(valueTree, segments) {\n const first = segments.shift();\n if (segments.length === 0) {\n // Reached last segment\n delete valueTree[first];\n return;\n }\n if (Object.keys(valueTree).indexOf(first) !== -1) {\n const value = valueTree[first];\n if (typeof value === 'object' && !Array.isArray(value)) {\n doRemoveFromValueTree(value, segments);\n if (Object.keys(value).length === 0) {\n delete valueTree[first];\n }\n }\n }\n}\n/**\n * A helper function to get the configuration value with a specific settings path (e.g. config.some.setting)\n */\nexport function getConfigurationValue(config, settingPath, defaultValue) {\n function accessSetting(config, path) {\n let current = config;\n for (const component of path) {\n if (typeof current !== 'object' || current === null) {\n return undefined;\n }\n current = current[component];\n }\n return current;\n }\n const path = settingPath.split('.');\n const result = accessSetting(config, path);\n return typeof result === 'undefined' ? defaultValue : result;\n}\nexport function getLanguageTagSettingPlainKey(settingKey) {\n return settingKey.replace(/[\\[\\]]/g, '');\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { distinct } from '../../../base/common/arrays.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport * as types from '../../../base/common/types.js';\nimport * as nls from '../../../nls.js';\nimport { getLanguageTagSettingPlainKey } from './configuration.js';\nimport { Extensions as JSONExtensions } from '../../jsonschemas/common/jsonContributionRegistry.js';\nimport { Registry } from '../../registry/common/platform.js';\nexport const Extensions = {\n Configuration: 'base.contributions.configuration'\n};\nexport const allSettings = { properties: {}, patternProperties: {} };\nexport const applicationSettings = { properties: {}, patternProperties: {} };\nexport const machineSettings = { properties: {}, patternProperties: {} };\nexport const machineOverridableSettings = { properties: {}, patternProperties: {} };\nexport const windowSettings = { properties: {}, patternProperties: {} };\nexport const resourceSettings = { properties: {}, patternProperties: {} };\nexport const resourceLanguageSettingsSchemaId = 'vscode://schemas/settings/resourceLanguage';\nconst contributionRegistry = Registry.as(JSONExtensions.JSONContribution);\nclass ConfigurationRegistry {\n constructor() {\n this.overrideIdentifiers = new Set();\n this._onDidSchemaChange = new Emitter();\n this._onDidUpdateConfiguration = new Emitter();\n this.configurationDefaultsOverrides = new Map();\n this.defaultLanguageConfigurationOverridesNode = {\n id: 'defaultOverrides',\n title: nls.localize('defaultLanguageConfigurationOverrides.title', \"Default Language Configuration Overrides\"),\n properties: {}\n };\n this.configurationContributors = [this.defaultLanguageConfigurationOverridesNode];\n this.resourceLanguageSettingsSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Unknown editor configuration setting', allowTrailingCommas: true, allowComments: true };\n this.configurationProperties = {};\n this.policyConfigurations = new Map();\n this.excludedConfigurationProperties = {};\n contributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\n this.registerOverridePropertyPatternKey();\n }\n registerConfiguration(configuration, validate = true) {\n this.registerConfigurations([configuration], validate);\n }\n registerConfigurations(configurations, validate = true) {\n const properties = this.doRegisterConfigurations(configurations, validate);\n contributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\n this._onDidSchemaChange.fire();\n this._onDidUpdateConfiguration.fire({ properties });\n }\n registerDefaultConfigurations(configurationDefaults) {\n var _a;\n const properties = [];\n const overrideIdentifiers = [];\n for (const { overrides, source } of configurationDefaults) {\n for (const key in overrides) {\n properties.push(key);\n if (OVERRIDE_PROPERTY_REGEX.test(key)) {\n const configurationDefaultOverride = this.configurationDefaultsOverrides.get(key);\n const valuesSources = (_a = configurationDefaultOverride === null || configurationDefaultOverride === void 0 ? void 0 : configurationDefaultOverride.valuesSources) !== null && _a !== void 0 ? _a : new Map();\n if (source) {\n for (const configuration of Object.keys(overrides[key])) {\n valuesSources.set(configuration, source);\n }\n }\n const defaultValue = Object.assign(Object.assign({}, ((configurationDefaultOverride === null || configurationDefaultOverride === void 0 ? void 0 : configurationDefaultOverride.value) || {})), overrides[key]);\n this.configurationDefaultsOverrides.set(key, { source, value: defaultValue, valuesSources });\n const plainKey = getLanguageTagSettingPlainKey(key);\n const property = {\n type: 'object',\n default: defaultValue,\n description: nls.localize('defaultLanguageConfiguration.description', \"Configure settings to be overridden for the {0} language.\", plainKey),\n $ref: resourceLanguageSettingsSchemaId,\n defaultDefaultValue: defaultValue,\n source: types.isString(source) ? undefined : source,\n defaultValueSource: source\n };\n overrideIdentifiers.push(...overrideIdentifiersFromKey(key));\n this.configurationProperties[key] = property;\n this.defaultLanguageConfigurationOverridesNode.properties[key] = property;\n }\n else {\n this.configurationDefaultsOverrides.set(key, { value: overrides[key], source });\n const property = this.configurationProperties[key];\n if (property) {\n this.updatePropertyDefaultValue(key, property);\n this.updateSchema(key, property);\n }\n }\n }\n }\n this.registerOverrideIdentifiers(overrideIdentifiers);\n this._onDidSchemaChange.fire();\n this._onDidUpdateConfiguration.fire({ properties, defaultsOverrides: true });\n }\n registerOverrideIdentifiers(overrideIdentifiers) {\n for (const overrideIdentifier of overrideIdentifiers) {\n this.overrideIdentifiers.add(overrideIdentifier);\n }\n this.updateOverridePropertyPatternKey();\n }\n doRegisterConfigurations(configurations, validate) {\n const properties = [];\n configurations.forEach(configuration => {\n properties.push(...this.validateAndRegisterProperties(configuration, validate, configuration.extensionInfo, configuration.restrictedProperties)); // fills in defaults\n this.configurationContributors.push(configuration);\n this.registerJSONConfiguration(configuration);\n });\n return properties;\n }\n validateAndRegisterProperties(configuration, validate = true, extensionInfo, restrictedProperties, scope = 3 /* ConfigurationScope.WINDOW */) {\n var _a;\n scope = types.isUndefinedOrNull(configuration.scope) ? scope : configuration.scope;\n const propertyKeys = [];\n const properties = configuration.properties;\n if (properties) {\n for (const key in properties) {\n const property = properties[key];\n if (validate && validateProperty(key, property)) {\n delete properties[key];\n continue;\n }\n property.source = extensionInfo;\n // update default value\n property.defaultDefaultValue = properties[key].default;\n this.updatePropertyDefaultValue(key, property);\n // update scope\n if (OVERRIDE_PROPERTY_REGEX.test(key)) {\n property.scope = undefined; // No scope for overridable properties `[${identifier}]`\n }\n else {\n property.scope = types.isUndefinedOrNull(property.scope) ? scope : property.scope;\n property.restricted = types.isUndefinedOrNull(property.restricted) ? !!(restrictedProperties === null || restrictedProperties === void 0 ? void 0 : restrictedProperties.includes(key)) : property.restricted;\n }\n // Add to properties maps\n // Property is included by default if 'included' is unspecified\n if (properties[key].hasOwnProperty('included') && !properties[key].included) {\n this.excludedConfigurationProperties[key] = properties[key];\n delete properties[key];\n continue;\n }\n else {\n this.configurationProperties[key] = properties[key];\n if ((_a = properties[key].policy) === null || _a === void 0 ? void 0 : _a.name) {\n this.policyConfigurations.set(properties[key].policy.name, key);\n }\n }\n if (!properties[key].deprecationMessage && properties[key].markdownDeprecationMessage) {\n // If not set, default deprecationMessage to the markdown source\n properties[key].deprecationMessage = properties[key].markdownDeprecationMessage;\n }\n propertyKeys.push(key);\n }\n }\n const subNodes = configuration.allOf;\n if (subNodes) {\n for (const node of subNodes) {\n propertyKeys.push(...this.validateAndRegisterProperties(node, validate, extensionInfo, restrictedProperties, scope));\n }\n }\n return propertyKeys;\n }\n getConfigurationProperties() {\n return this.configurationProperties;\n }\n getPolicyConfigurations() {\n return this.policyConfigurations;\n }\n registerJSONConfiguration(configuration) {\n const register = (configuration) => {\n const properties = configuration.properties;\n if (properties) {\n for (const key in properties) {\n this.updateSchema(key, properties[key]);\n }\n }\n const subNodes = configuration.allOf;\n subNodes === null || subNodes === void 0 ? void 0 : subNodes.forEach(register);\n };\n register(configuration);\n }\n updateSchema(key, property) {\n allSettings.properties[key] = property;\n switch (property.scope) {\n case 1 /* ConfigurationScope.APPLICATION */:\n applicationSettings.properties[key] = property;\n break;\n case 2 /* ConfigurationScope.MACHINE */:\n machineSettings.properties[key] = property;\n break;\n case 6 /* ConfigurationScope.MACHINE_OVERRIDABLE */:\n machineOverridableSettings.properties[key] = property;\n break;\n case 3 /* ConfigurationScope.WINDOW */:\n windowSettings.properties[key] = property;\n break;\n case 4 /* ConfigurationScope.RESOURCE */:\n resourceSettings.properties[key] = property;\n break;\n case 5 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */:\n resourceSettings.properties[key] = property;\n this.resourceLanguageSettingsSchema.properties[key] = property;\n break;\n }\n }\n updateOverridePropertyPatternKey() {\n for (const overrideIdentifier of this.overrideIdentifiers.values()) {\n const overrideIdentifierProperty = `[${overrideIdentifier}]`;\n const resourceLanguagePropertiesSchema = {\n type: 'object',\n description: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\n errorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\n $ref: resourceLanguageSettingsSchemaId,\n };\n this.updatePropertyDefaultValue(overrideIdentifierProperty, resourceLanguagePropertiesSchema);\n allSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n applicationSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n machineSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n machineOverridableSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n windowSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n resourceSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\n }\n this._onDidSchemaChange.fire();\n }\n registerOverridePropertyPatternKey() {\n const resourceLanguagePropertiesSchema = {\n type: 'object',\n description: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\n errorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\n $ref: resourceLanguageSettingsSchemaId,\n };\n allSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n applicationSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n machineSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n machineOverridableSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n windowSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n resourceSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;\n this._onDidSchemaChange.fire();\n }\n updatePropertyDefaultValue(key, property) {\n const configurationdefaultOverride = this.configurationDefaultsOverrides.get(key);\n let defaultValue = configurationdefaultOverride === null || configurationdefaultOverride === void 0 ? void 0 : configurationdefaultOverride.value;\n let defaultSource = configurationdefaultOverride === null || configurationdefaultOverride === void 0 ? void 0 : configurationdefaultOverride.source;\n if (types.isUndefined(defaultValue)) {\n defaultValue = property.defaultDefaultValue;\n defaultSource = undefined;\n }\n if (types.isUndefined(defaultValue)) {\n defaultValue = getDefaultValue(property.type);\n }\n property.default = defaultValue;\n property.defaultValueSource = defaultSource;\n }\n}\nconst OVERRIDE_IDENTIFIER_PATTERN = `\\\\[([^\\\\]]+)\\\\]`;\nconst OVERRIDE_IDENTIFIER_REGEX = new RegExp(OVERRIDE_IDENTIFIER_PATTERN, 'g');\nexport const OVERRIDE_PROPERTY_PATTERN = `^(${OVERRIDE_IDENTIFIER_PATTERN})+$`;\nexport const OVERRIDE_PROPERTY_REGEX = new RegExp(OVERRIDE_PROPERTY_PATTERN);\nexport function overrideIdentifiersFromKey(key) {\n const identifiers = [];\n if (OVERRIDE_PROPERTY_REGEX.test(key)) {\n let matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);\n while (matches === null || matches === void 0 ? void 0 : matches.length) {\n const identifier = matches[1].trim();\n if (identifier) {\n identifiers.push(identifier);\n }\n matches = OVERRIDE_IDENTIFIER_REGEX.exec(key);\n }\n }\n return distinct(identifiers);\n}\nexport function getDefaultValue(type) {\n const t = Array.isArray(type) ? type[0] : type;\n switch (t) {\n case 'boolean':\n return false;\n case 'integer':\n case 'number':\n return 0;\n case 'string':\n return '';\n case 'array':\n return [];\n case 'object':\n return {};\n default:\n return null;\n }\n}\nconst configurationRegistry = new ConfigurationRegistry();\nRegistry.add(Extensions.Configuration, configurationRegistry);\nexport function validateProperty(property, schema) {\n var _a, _b, _c, _d;\n if (!property.trim()) {\n return nls.localize('config.property.empty', \"Cannot register an empty property\");\n }\n if (OVERRIDE_PROPERTY_REGEX.test(property)) {\n return nls.localize('config.property.languageDefault', \"Cannot register '{0}'. This matches property pattern '\\\\\\\\[.*\\\\\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.\", property);\n }\n if (configurationRegistry.getConfigurationProperties()[property] !== undefined) {\n return nls.localize('config.property.duplicate', \"Cannot register '{0}'. This property is already registered.\", property);\n }\n if (((_a = schema.policy) === null || _a === void 0 ? void 0 : _a.name) && configurationRegistry.getPolicyConfigurations().get((_b = schema.policy) === null || _b === void 0 ? void 0 : _b.name) !== undefined) {\n return nls.localize('config.policy.duplicate', \"Cannot register '{0}'. The associated policy {1} is already registered with {2}.\", property, (_c = schema.policy) === null || _c === void 0 ? void 0 : _c.name, configurationRegistry.getPolicyConfigurations().get((_d = schema.policy) === null || _d === void 0 ? void 0 : _d.name));\n }\n return null;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { isChrome, isEdge, isFirefox, isLinux, isMacintosh, isSafari, isWeb, isWindows } from '../../../base/common/platform.js';\nimport { isFalsyOrWhitespace } from '../../../base/common/strings.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nconst CONSTANT_VALUES = new Map();\nCONSTANT_VALUES.set('false', false);\nCONSTANT_VALUES.set('true', true);\nCONSTANT_VALUES.set('isMac', isMacintosh);\nCONSTANT_VALUES.set('isLinux', isLinux);\nCONSTANT_VALUES.set('isWindows', isWindows);\nCONSTANT_VALUES.set('isWeb', isWeb);\nCONSTANT_VALUES.set('isMacNative', isMacintosh && !isWeb);\nCONSTANT_VALUES.set('isEdge', isEdge);\nCONSTANT_VALUES.set('isFirefox', isFirefox);\nCONSTANT_VALUES.set('isChrome', isChrome);\nCONSTANT_VALUES.set('isSafari', isSafari);\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nexport class ContextKeyExpr {\n static has(key) {\n return ContextKeyDefinedExpr.create(key);\n }\n static equals(key, value) {\n return ContextKeyEqualsExpr.create(key, value);\n }\n static regex(key, value) {\n return ContextKeyRegexExpr.create(key, value);\n }\n static not(key) {\n return ContextKeyNotExpr.create(key);\n }\n static and(...expr) {\n return ContextKeyAndExpr.create(expr, null);\n }\n static or(...expr) {\n return ContextKeyOrExpr.create(expr, null, true);\n }\n static deserialize(serialized, strict = false) {\n if (!serialized) {\n return undefined;\n }\n return this._deserializeOrExpression(serialized, strict);\n }\n static _deserializeOrExpression(serialized, strict) {\n const pieces = serialized.split('||');\n return ContextKeyOrExpr.create(pieces.map(p => this._deserializeAndExpression(p, strict)), null, true);\n }\n static _deserializeAndExpression(serialized, strict) {\n const pieces = serialized.split('&&');\n return ContextKeyAndExpr.create(pieces.map(p => this._deserializeOne(p, strict)), null);\n }\n static _deserializeOne(serializedOne, strict) {\n serializedOne = serializedOne.trim();\n if (serializedOne.indexOf('!=') >= 0) {\n const pieces = serializedOne.split('!=');\n return ContextKeyNotEqualsExpr.create(pieces[0].trim(), this._deserializeValue(pieces[1], strict));\n }\n if (serializedOne.indexOf('==') >= 0) {\n const pieces = serializedOne.split('==');\n return ContextKeyEqualsExpr.create(pieces[0].trim(), this._deserializeValue(pieces[1], strict));\n }\n if (serializedOne.indexOf('=~') >= 0) {\n const pieces = serializedOne.split('=~');\n return ContextKeyRegexExpr.create(pieces[0].trim(), this._deserializeRegexValue(pieces[1], strict));\n }\n if (serializedOne.indexOf(' not in ') >= 0) {\n const pieces = serializedOne.split(' not in ');\n return ContextKeyNotInExpr.create(pieces[0].trim(), pieces[1].trim());\n }\n if (serializedOne.indexOf(' in ') >= 0) {\n const pieces = serializedOne.split(' in ');\n return ContextKeyInExpr.create(pieces[0].trim(), pieces[1].trim());\n }\n if (/^[^<=>]+>=[^<=>]+$/.test(serializedOne)) {\n const pieces = serializedOne.split('>=');\n return ContextKeyGreaterEqualsExpr.create(pieces[0].trim(), pieces[1].trim());\n }\n if (/^[^<=>]+>[^<=>]+$/.test(serializedOne)) {\n const pieces = serializedOne.split('>');\n return ContextKeyGreaterExpr.create(pieces[0].trim(), pieces[1].trim());\n }\n if (/^[^<=>]+<=[^<=>]+$/.test(serializedOne)) {\n const pieces = serializedOne.split('<=');\n return ContextKeySmallerEqualsExpr.create(pieces[0].trim(), pieces[1].trim());\n }\n if (/^[^<=>]+<[^<=>]+$/.test(serializedOne)) {\n const pieces = serializedOne.split('<');\n return ContextKeySmallerExpr.create(pieces[0].trim(), pieces[1].trim());\n }\n if (/^\\!\\s*/.test(serializedOne)) {\n return ContextKeyNotExpr.create(serializedOne.substr(1).trim());\n }\n return ContextKeyDefinedExpr.create(serializedOne);\n }\n static _deserializeValue(serializedValue, strict) {\n serializedValue = serializedValue.trim();\n if (serializedValue === 'true') {\n return true;\n }\n if (serializedValue === 'false') {\n return false;\n }\n const m = /^'([^']*)'$/.exec(serializedValue);\n if (m) {\n return m[1].trim();\n }\n return serializedValue;\n }\n static _deserializeRegexValue(serializedValue, strict) {\n if (isFalsyOrWhitespace(serializedValue)) {\n if (strict) {\n throw new Error('missing regexp-value for =~-expression');\n }\n else {\n console.warn('missing regexp-value for =~-expression');\n }\n return null;\n }\n const start = serializedValue.indexOf('/');\n const end = serializedValue.lastIndexOf('/');\n if (start === end || start < 0 /* || to < 0 */) {\n if (strict) {\n throw new Error(`bad regexp-value '${serializedValue}', missing /-enclosure`);\n }\n else {\n console.warn(`bad regexp-value '${serializedValue}', missing /-enclosure`);\n }\n return null;\n }\n const value = serializedValue.slice(start + 1, end);\n const caseIgnoreFlag = serializedValue[end + 1] === 'i' ? 'i' : '';\n try {\n return new RegExp(value, caseIgnoreFlag);\n }\n catch (e) {\n if (strict) {\n throw new Error(`bad regexp-value '${serializedValue}', parse error: ${e}`);\n }\n else {\n console.warn(`bad regexp-value '${serializedValue}', parse error: ${e}`);\n }\n return null;\n }\n }\n}\nexport function expressionsAreEqualWithConstantSubstitution(a, b) {\n const aExpr = a ? a.substituteConstants() : undefined;\n const bExpr = b ? b.substituteConstants() : undefined;\n if (!aExpr && !bExpr) {\n return true;\n }\n if (!aExpr || !bExpr) {\n return false;\n }\n return aExpr.equals(bExpr);\n}\nfunction cmp(a, b) {\n return a.cmp(b);\n}\nexport class ContextKeyFalseExpr {\n constructor() {\n this.type = 0 /* ContextKeyExprType.False */;\n }\n cmp(other) {\n return this.type - other.type;\n }\n equals(other) {\n return (other.type === this.type);\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n return false;\n }\n serialize() {\n return 'false';\n }\n keys() {\n return [];\n }\n negate() {\n return ContextKeyTrueExpr.INSTANCE;\n }\n}\nContextKeyFalseExpr.INSTANCE = new ContextKeyFalseExpr();\nexport class ContextKeyTrueExpr {\n constructor() {\n this.type = 1 /* ContextKeyExprType.True */;\n }\n cmp(other) {\n return this.type - other.type;\n }\n equals(other) {\n return (other.type === this.type);\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n return true;\n }\n serialize() {\n return 'true';\n }\n keys() {\n return [];\n }\n negate() {\n return ContextKeyFalseExpr.INSTANCE;\n }\n}\nContextKeyTrueExpr.INSTANCE = new ContextKeyTrueExpr();\nexport class ContextKeyDefinedExpr {\n constructor(key, negated) {\n this.key = key;\n this.negated = negated;\n this.type = 2 /* ContextKeyExprType.Defined */;\n }\n static create(key, negated = null) {\n const constantValue = CONSTANT_VALUES.get(key);\n if (typeof constantValue === 'boolean') {\n return constantValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE;\n }\n return new ContextKeyDefinedExpr(key, negated);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp1(this.key, other.key);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key);\n }\n return false;\n }\n substituteConstants() {\n const constantValue = CONSTANT_VALUES.get(this.key);\n if (typeof constantValue === 'boolean') {\n return constantValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE;\n }\n return this;\n }\n evaluate(context) {\n return (!!context.getValue(this.key));\n }\n serialize() {\n return this.key;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyNotExpr.create(this.key, this);\n }\n return this.negated;\n }\n}\nexport class ContextKeyEqualsExpr {\n constructor(key, value, negated) {\n this.key = key;\n this.value = value;\n this.negated = negated;\n this.type = 4 /* ContextKeyExprType.Equals */;\n }\n static create(key, value, negated = null) {\n if (typeof value === 'boolean') {\n return (value ? ContextKeyDefinedExpr.create(key, negated) : ContextKeyNotExpr.create(key, negated));\n }\n const constantValue = CONSTANT_VALUES.get(key);\n if (typeof constantValue === 'boolean') {\n const trueValue = constantValue ? 'true' : 'false';\n return (value === trueValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE);\n }\n return new ContextKeyEqualsExpr(key, value, negated);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp2(this.key, this.value, other.key, other.value);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key && this.value === other.value);\n }\n return false;\n }\n substituteConstants() {\n const constantValue = CONSTANT_VALUES.get(this.key);\n if (typeof constantValue === 'boolean') {\n const trueValue = constantValue ? 'true' : 'false';\n return (this.value === trueValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE);\n }\n return this;\n }\n evaluate(context) {\n // Intentional ==\n // eslint-disable-next-line eqeqeq\n return (context.getValue(this.key) == this.value);\n }\n serialize() {\n return `${this.key} == '${this.value}'`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyNotEqualsExpr.create(this.key, this.value, this);\n }\n return this.negated;\n }\n}\nexport class ContextKeyInExpr {\n constructor(key, valueKey) {\n this.key = key;\n this.valueKey = valueKey;\n this.type = 10 /* ContextKeyExprType.In */;\n this.negated = null;\n }\n static create(key, valueKey) {\n return new ContextKeyInExpr(key, valueKey);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp2(this.key, this.valueKey, other.key, other.valueKey);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key && this.valueKey === other.valueKey);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n const source = context.getValue(this.valueKey);\n const item = context.getValue(this.key);\n if (Array.isArray(source)) {\n return source.includes(item);\n }\n if (typeof item === 'string' && typeof source === 'object' && source !== null) {\n return hasOwnProperty.call(source, item);\n }\n return false;\n }\n serialize() {\n return `${this.key} in '${this.valueKey}'`;\n }\n keys() {\n return [this.key, this.valueKey];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyNotInExpr.create(this.key, this.valueKey);\n }\n return this.negated;\n }\n}\nexport class ContextKeyNotInExpr {\n constructor(key, valueKey) {\n this.key = key;\n this.valueKey = valueKey;\n this.type = 11 /* ContextKeyExprType.NotIn */;\n this._negated = ContextKeyInExpr.create(key, valueKey);\n }\n static create(key, valueKey) {\n return new ContextKeyNotInExpr(key, valueKey);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return this._negated.cmp(other._negated);\n }\n equals(other) {\n if (other.type === this.type) {\n return this._negated.equals(other._negated);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n return !this._negated.evaluate(context);\n }\n serialize() {\n return `${this.key} not in '${this.valueKey}'`;\n }\n keys() {\n return this._negated.keys();\n }\n negate() {\n return this._negated;\n }\n}\nexport class ContextKeyNotEqualsExpr {\n constructor(key, value, negated) {\n this.key = key;\n this.value = value;\n this.negated = negated;\n this.type = 5 /* ContextKeyExprType.NotEquals */;\n }\n static create(key, value, negated = null) {\n if (typeof value === 'boolean') {\n if (value) {\n return ContextKeyNotExpr.create(key, negated);\n }\n return ContextKeyDefinedExpr.create(key, negated);\n }\n const constantValue = CONSTANT_VALUES.get(key);\n if (typeof constantValue === 'boolean') {\n const falseValue = constantValue ? 'true' : 'false';\n return (value === falseValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\n }\n return new ContextKeyNotEqualsExpr(key, value, negated);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp2(this.key, this.value, other.key, other.value);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key && this.value === other.value);\n }\n return false;\n }\n substituteConstants() {\n const constantValue = CONSTANT_VALUES.get(this.key);\n if (typeof constantValue === 'boolean') {\n const falseValue = constantValue ? 'true' : 'false';\n return (this.value === falseValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\n }\n return this;\n }\n evaluate(context) {\n // Intentional !=\n // eslint-disable-next-line eqeqeq\n return (context.getValue(this.key) != this.value);\n }\n serialize() {\n return `${this.key} != '${this.value}'`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyEqualsExpr.create(this.key, this.value, this);\n }\n return this.negated;\n }\n}\nexport class ContextKeyNotExpr {\n constructor(key, negated) {\n this.key = key;\n this.negated = negated;\n this.type = 3 /* ContextKeyExprType.Not */;\n }\n static create(key, negated = null) {\n const constantValue = CONSTANT_VALUES.get(key);\n if (typeof constantValue === 'boolean') {\n return (constantValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\n }\n return new ContextKeyNotExpr(key, negated);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp1(this.key, other.key);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key);\n }\n return false;\n }\n substituteConstants() {\n const constantValue = CONSTANT_VALUES.get(this.key);\n if (typeof constantValue === 'boolean') {\n return (constantValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\n }\n return this;\n }\n evaluate(context) {\n return (!context.getValue(this.key));\n }\n serialize() {\n return `!${this.key}`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyDefinedExpr.create(this.key, this);\n }\n return this.negated;\n }\n}\nfunction withFloatOrStr(value, callback) {\n if (typeof value === 'string') {\n const n = parseFloat(value);\n if (!isNaN(n)) {\n value = n;\n }\n }\n if (typeof value === 'string' || typeof value === 'number') {\n return callback(value);\n }\n return ContextKeyFalseExpr.INSTANCE;\n}\nexport class ContextKeyGreaterExpr {\n constructor(key, value, negated) {\n this.key = key;\n this.value = value;\n this.negated = negated;\n this.type = 12 /* ContextKeyExprType.Greater */;\n }\n static create(key, _value, negated = null) {\n return withFloatOrStr(_value, (value) => new ContextKeyGreaterExpr(key, value, negated));\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp2(this.key, this.value, other.key, other.value);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key && this.value === other.value);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n if (typeof this.value === 'string') {\n return false;\n }\n return (parseFloat(context.getValue(this.key)) > this.value);\n }\n serialize() {\n return `${this.key} > ${this.value}`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeySmallerEqualsExpr.create(this.key, this.value, this);\n }\n return this.negated;\n }\n}\nexport class ContextKeyGreaterEqualsExpr {\n constructor(key, value, negated) {\n this.key = key;\n this.value = value;\n this.negated = negated;\n this.type = 13 /* ContextKeyExprType.GreaterEquals */;\n }\n static create(key, _value, negated = null) {\n return withFloatOrStr(_value, (value) => new ContextKeyGreaterEqualsExpr(key, value, negated));\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp2(this.key, this.value, other.key, other.value);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key && this.value === other.value);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n if (typeof this.value === 'string') {\n return false;\n }\n return (parseFloat(context.getValue(this.key)) >= this.value);\n }\n serialize() {\n return `${this.key} >= ${this.value}`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeySmallerExpr.create(this.key, this.value, this);\n }\n return this.negated;\n }\n}\nexport class ContextKeySmallerExpr {\n constructor(key, value, negated) {\n this.key = key;\n this.value = value;\n this.negated = negated;\n this.type = 14 /* ContextKeyExprType.Smaller */;\n }\n static create(key, _value, negated = null) {\n return withFloatOrStr(_value, (value) => new ContextKeySmallerExpr(key, value, negated));\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp2(this.key, this.value, other.key, other.value);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key && this.value === other.value);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n if (typeof this.value === 'string') {\n return false;\n }\n return (parseFloat(context.getValue(this.key)) < this.value);\n }\n serialize() {\n return `${this.key} < ${this.value}`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyGreaterEqualsExpr.create(this.key, this.value, this);\n }\n return this.negated;\n }\n}\nexport class ContextKeySmallerEqualsExpr {\n constructor(key, value, negated) {\n this.key = key;\n this.value = value;\n this.negated = negated;\n this.type = 15 /* ContextKeyExprType.SmallerEquals */;\n }\n static create(key, _value, negated = null) {\n return withFloatOrStr(_value, (value) => new ContextKeySmallerEqualsExpr(key, value, negated));\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return cmp2(this.key, this.value, other.key, other.value);\n }\n equals(other) {\n if (other.type === this.type) {\n return (this.key === other.key && this.value === other.value);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n if (typeof this.value === 'string') {\n return false;\n }\n return (parseFloat(context.getValue(this.key)) <= this.value);\n }\n serialize() {\n return `${this.key} <= ${this.value}`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyGreaterExpr.create(this.key, this.value, this);\n }\n return this.negated;\n }\n}\nexport class ContextKeyRegexExpr {\n constructor(key, regexp) {\n this.key = key;\n this.regexp = regexp;\n this.type = 7 /* ContextKeyExprType.Regex */;\n this.negated = null;\n //\n }\n static create(key, regexp) {\n return new ContextKeyRegexExpr(key, regexp);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n if (this.key < other.key) {\n return -1;\n }\n if (this.key > other.key) {\n return 1;\n }\n const thisSource = this.regexp ? this.regexp.source : '';\n const otherSource = other.regexp ? other.regexp.source : '';\n if (thisSource < otherSource) {\n return -1;\n }\n if (thisSource > otherSource) {\n return 1;\n }\n return 0;\n }\n equals(other) {\n if (other.type === this.type) {\n const thisSource = this.regexp ? this.regexp.source : '';\n const otherSource = other.regexp ? other.regexp.source : '';\n return (this.key === other.key && thisSource === otherSource);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n const value = context.getValue(this.key);\n return this.regexp ? this.regexp.test(value) : false;\n }\n serialize() {\n const value = this.regexp\n ? `/${this.regexp.source}/${this.regexp.ignoreCase ? 'i' : ''}`\n : '/invalid/';\n return `${this.key} =~ ${value}`;\n }\n keys() {\n return [this.key];\n }\n negate() {\n if (!this.negated) {\n this.negated = ContextKeyNotRegexExpr.create(this);\n }\n return this.negated;\n }\n}\nexport class ContextKeyNotRegexExpr {\n constructor(_actual) {\n this._actual = _actual;\n this.type = 8 /* ContextKeyExprType.NotRegex */;\n //\n }\n static create(actual) {\n return new ContextKeyNotRegexExpr(actual);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n return this._actual.cmp(other._actual);\n }\n equals(other) {\n if (other.type === this.type) {\n return this._actual.equals(other._actual);\n }\n return false;\n }\n substituteConstants() {\n return this;\n }\n evaluate(context) {\n return !this._actual.evaluate(context);\n }\n serialize() {\n throw new Error('Method not implemented.');\n }\n keys() {\n return this._actual.keys();\n }\n negate() {\n return this._actual;\n }\n}\n/**\n * @returns the same instance if nothing changed.\n */\nfunction eliminateConstantsInArray(arr) {\n // Allocate array only if there is a difference\n let newArr = null;\n for (let i = 0, len = arr.length; i < len; i++) {\n const newExpr = arr[i].substituteConstants();\n if (arr[i] !== newExpr) {\n // something has changed!\n // allocate array on first difference\n if (newArr === null) {\n newArr = [];\n for (let j = 0; j < i; j++) {\n newArr[j] = arr[j];\n }\n }\n }\n if (newArr !== null) {\n newArr[i] = newExpr;\n }\n }\n if (newArr === null) {\n return arr;\n }\n return newArr;\n}\nclass ContextKeyAndExpr {\n constructor(expr, negated) {\n this.expr = expr;\n this.negated = negated;\n this.type = 6 /* ContextKeyExprType.And */;\n }\n static create(_expr, negated) {\n return ContextKeyAndExpr._normalizeArr(_expr, negated);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n if (this.expr.length < other.expr.length) {\n return -1;\n }\n if (this.expr.length > other.expr.length) {\n return 1;\n }\n for (let i = 0, len = this.expr.length; i < len; i++) {\n const r = cmp(this.expr[i], other.expr[i]);\n if (r !== 0) {\n return r;\n }\n }\n return 0;\n }\n equals(other) {\n if (other.type === this.type) {\n if (this.expr.length !== other.expr.length) {\n return false;\n }\n for (let i = 0, len = this.expr.length; i < len; i++) {\n if (!this.expr[i].equals(other.expr[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n substituteConstants() {\n const exprArr = eliminateConstantsInArray(this.expr);\n if (exprArr === this.expr) {\n // no change\n return this;\n }\n return ContextKeyAndExpr.create(exprArr, this.negated);\n }\n evaluate(context) {\n for (let i = 0, len = this.expr.length; i < len; i++) {\n if (!this.expr[i].evaluate(context)) {\n return false;\n }\n }\n return true;\n }\n static _normalizeArr(arr, negated) {\n const expr = [];\n let hasTrue = false;\n for (const e of arr) {\n if (!e) {\n continue;\n }\n if (e.type === 1 /* ContextKeyExprType.True */) {\n // anything && true ==> anything\n hasTrue = true;\n continue;\n }\n if (e.type === 0 /* ContextKeyExprType.False */) {\n // anything && false ==> false\n return ContextKeyFalseExpr.INSTANCE;\n }\n if (e.type === 6 /* ContextKeyExprType.And */) {\n expr.push(...e.expr);\n continue;\n }\n expr.push(e);\n }\n if (expr.length === 0 && hasTrue) {\n return ContextKeyTrueExpr.INSTANCE;\n }\n if (expr.length === 0) {\n return undefined;\n }\n if (expr.length === 1) {\n return expr[0];\n }\n expr.sort(cmp);\n // eliminate duplicate terms\n for (let i = 1; i < expr.length; i++) {\n if (expr[i - 1].equals(expr[i])) {\n expr.splice(i, 1);\n i--;\n }\n }\n if (expr.length === 1) {\n return expr[0];\n }\n // We must distribute any OR expression because we don't support parens\n // OR extensions will be at the end (due to sorting rules)\n while (expr.length > 1) {\n const lastElement = expr[expr.length - 1];\n if (lastElement.type !== 9 /* ContextKeyExprType.Or */) {\n break;\n }\n // pop the last element\n expr.pop();\n // pop the second to last element\n const secondToLastElement = expr.pop();\n const isFinished = (expr.length === 0);\n // distribute `lastElement` over `secondToLastElement`\n const resultElement = ContextKeyOrExpr.create(lastElement.expr.map(el => ContextKeyAndExpr.create([el, secondToLastElement], null)), null, isFinished);\n if (resultElement) {\n expr.push(resultElement);\n expr.sort(cmp);\n }\n }\n if (expr.length === 1) {\n return expr[0];\n }\n return new ContextKeyAndExpr(expr, negated);\n }\n serialize() {\n return this.expr.map(e => e.serialize()).join(' && ');\n }\n keys() {\n const result = [];\n for (const expr of this.expr) {\n result.push(...expr.keys());\n }\n return result;\n }\n negate() {\n if (!this.negated) {\n const result = [];\n for (const expr of this.expr) {\n result.push(expr.negate());\n }\n this.negated = ContextKeyOrExpr.create(result, this, true);\n }\n return this.negated;\n }\n}\nclass ContextKeyOrExpr {\n constructor(expr, negated) {\n this.expr = expr;\n this.negated = negated;\n this.type = 9 /* ContextKeyExprType.Or */;\n }\n static create(_expr, negated, extraRedundantCheck) {\n return ContextKeyOrExpr._normalizeArr(_expr, negated, extraRedundantCheck);\n }\n cmp(other) {\n if (other.type !== this.type) {\n return this.type - other.type;\n }\n if (this.expr.length < other.expr.length) {\n return -1;\n }\n if (this.expr.length > other.expr.length) {\n return 1;\n }\n for (let i = 0, len = this.expr.length; i < len; i++) {\n const r = cmp(this.expr[i], other.expr[i]);\n if (r !== 0) {\n return r;\n }\n }\n return 0;\n }\n equals(other) {\n if (other.type === this.type) {\n if (this.expr.length !== other.expr.length) {\n return false;\n }\n for (let i = 0, len = this.expr.length; i < len; i++) {\n if (!this.expr[i].equals(other.expr[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n substituteConstants() {\n const exprArr = eliminateConstantsInArray(this.expr);\n if (exprArr === this.expr) {\n // no change\n return this;\n }\n return ContextKeyOrExpr.create(exprArr, this.negated, false);\n }\n evaluate(context) {\n for (let i = 0, len = this.expr.length; i < len; i++) {\n if (this.expr[i].evaluate(context)) {\n return true;\n }\n }\n return false;\n }\n static _normalizeArr(arr, negated, extraRedundantCheck) {\n let expr = [];\n let hasFalse = false;\n if (arr) {\n for (let i = 0, len = arr.length; i < len; i++) {\n const e = arr[i];\n if (!e) {\n continue;\n }\n if (e.type === 0 /* ContextKeyExprType.False */) {\n // anything || false ==> anything\n hasFalse = true;\n continue;\n }\n if (e.type === 1 /* ContextKeyExprType.True */) {\n // anything || true ==> true\n return ContextKeyTrueExpr.INSTANCE;\n }\n if (e.type === 9 /* ContextKeyExprType.Or */) {\n expr = expr.concat(e.expr);\n continue;\n }\n expr.push(e);\n }\n if (expr.length === 0 && hasFalse) {\n return ContextKeyFalseExpr.INSTANCE;\n }\n expr.sort(cmp);\n }\n if (expr.length === 0) {\n return undefined;\n }\n if (expr.length === 1) {\n return expr[0];\n }\n // eliminate duplicate terms\n for (let i = 1; i < expr.length; i++) {\n if (expr[i - 1].equals(expr[i])) {\n expr.splice(i, 1);\n i--;\n }\n }\n if (expr.length === 1) {\n return expr[0];\n }\n // eliminate redundant terms\n if (extraRedundantCheck) {\n for (let i = 0; i < expr.length; i++) {\n for (let j = i + 1; j < expr.length; j++) {\n if (implies(expr[i], expr[j])) {\n expr.splice(j, 1);\n j--;\n }\n }\n }\n if (expr.length === 1) {\n return expr[0];\n }\n }\n return new ContextKeyOrExpr(expr, negated);\n }\n serialize() {\n return this.expr.map(e => e.serialize()).join(' || ');\n }\n keys() {\n const result = [];\n for (const expr of this.expr) {\n result.push(...expr.keys());\n }\n return result;\n }\n negate() {\n if (!this.negated) {\n const result = [];\n for (const expr of this.expr) {\n result.push(expr.negate());\n }\n // We don't support parens, so here we distribute the AND over the OR terminals\n // We always take the first 2 AND pairs and distribute them\n while (result.length > 1) {\n const LEFT = result.shift();\n const RIGHT = result.shift();\n const all = [];\n for (const left of getTerminals(LEFT)) {\n for (const right of getTerminals(RIGHT)) {\n all.push(ContextKeyAndExpr.create([left, right], null));\n }\n }\n const isFinished = (result.length === 0);\n result.unshift(ContextKeyOrExpr.create(all, null, isFinished));\n }\n this.negated = result[0];\n }\n return this.negated;\n }\n}\nexport class RawContextKey extends ContextKeyDefinedExpr {\n constructor(key, defaultValue, metaOrHide) {\n super(key, null);\n this._defaultValue = defaultValue;\n // collect all context keys into a central place\n if (typeof metaOrHide === 'object') {\n RawContextKey._info.push(Object.assign(Object.assign({}, metaOrHide), { key }));\n }\n else if (metaOrHide !== true) {\n RawContextKey._info.push({ key, description: metaOrHide, type: defaultValue !== null && defaultValue !== undefined ? typeof defaultValue : undefined });\n }\n }\n static all() {\n return RawContextKey._info.values();\n }\n bindTo(target) {\n return target.createKey(this.key, this._defaultValue);\n }\n getValue(target) {\n return target.getContextKeyValue(this.key);\n }\n toNegated() {\n return this.negate();\n }\n isEqualTo(value) {\n return ContextKeyEqualsExpr.create(this.key, value);\n }\n}\nRawContextKey._info = [];\nexport const IContextKeyService = createDecorator('contextKeyService');\nexport const SET_CONTEXT_COMMAND_ID = 'setContext';\nfunction cmp1(key1, key2) {\n if (key1 < key2) {\n return -1;\n }\n if (key1 > key2) {\n return 1;\n }\n return 0;\n}\nfunction cmp2(key1, value1, key2, value2) {\n if (key1 < key2) {\n return -1;\n }\n if (key1 > key2) {\n return 1;\n }\n if (value1 < value2) {\n return -1;\n }\n if (value1 > value2) {\n return 1;\n }\n return 0;\n}\n/**\n * Returns true if it is provable `p` implies `q`.\n */\nexport function implies(p, q) {\n if (q.type === 6 /* ContextKeyExprType.And */ && (p.type !== 9 /* ContextKeyExprType.Or */ && p.type !== 6 /* ContextKeyExprType.And */)) {\n // covers the case: A implies A && B\n for (const qTerm of q.expr) {\n if (p.equals(qTerm)) {\n return true;\n }\n }\n }\n const notP = p.negate();\n const expr = getTerminals(notP).concat(getTerminals(q));\n expr.sort(cmp);\n for (let i = 0; i < expr.length; i++) {\n const a = expr[i];\n const notA = a.negate();\n for (let j = i + 1; j < expr.length; j++) {\n const b = expr[j];\n if (notA.equals(b)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction getTerminals(node) {\n if (node.type === 9 /* ContextKeyExprType.Or */) {\n return node.expr;\n }\n return [node];\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { isIOS, isLinux, isMacintosh, isWeb, isWindows } from '../../../base/common/platform.js';\nimport { localize } from '../../../nls.js';\nimport { RawContextKey } from './contextkey.js';\nexport const IsMacContext = new RawContextKey('isMac', isMacintosh, localize('isMac', \"Whether the operating system is macOS\"));\nexport const IsLinuxContext = new RawContextKey('isLinux', isLinux, localize('isLinux', \"Whether the operating system is Linux\"));\nexport const IsWindowsContext = new RawContextKey('isWindows', isWindows, localize('isWindows', \"Whether the operating system is Windows\"));\nexport const IsWebContext = new RawContextKey('isWeb', isWeb, localize('isWeb', \"Whether the platform is a web browser\"));\nexport const IsMacNativeContext = new RawContextKey('isMacNative', isMacintosh && !isWeb, localize('isMacNative', \"Whether the operating system is macOS on a non-browser platform\"));\nexport const IsIOSContext = new RawContextKey('isIOS', isIOS, localize('isIOS', \"Whether the operating system is iOS\"));\nexport const IsDevelopmentContext = new RawContextKey('isDevelopment', false, true);\nexport const ProductQualityContext = new RawContextKey('productQualityType', '', localize('productQualityType', \"Quality type of VS Code\"));\nexport const InputFocusedContextKey = 'inputFocus';\nexport const InputFocusedContext = new RawContextKey(InputFocusedContextKey, false, localize('inputFocus', \"Whether keyboard focus is inside an input box\"));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IContextViewService = createDecorator('contextViewService');\nexport const IContextMenuService = createDecorator('contextMenuService');\n","import { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IDialogService = createDecorator('dialogService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as dom from '../../dom.js';\nimport { Toggle } from '../toggle/toggle.js';\nimport { HistoryInputBox } from '../inputbox/inputBox.js';\nimport { Widget } from '../widget.js';\nimport { Codicon } from '../../../common/codicons.js';\nimport { Emitter } from '../../../common/event.js';\nimport './findInput.css';\nimport * as nls from '../../../../nls.js';\nconst NLS_DEFAULT_LABEL = nls.localize('defaultLabel', \"input\");\nconst NLS_PRESERVE_CASE_LABEL = nls.localize('label.preserveCaseToggle', \"Preserve Case\");\nexport class PreserveCaseToggle extends Toggle {\n constructor(opts) {\n super({\n // TODO: does this need its own icon?\n icon: Codicon.preserveCase,\n title: NLS_PRESERVE_CASE_LABEL + opts.appendTitle,\n isChecked: opts.isChecked,\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts.inputActiveOptionBackground\n });\n }\n}\nexport class ReplaceInput extends Widget {\n constructor(parent, contextViewProvider, _showOptionButtons, options) {\n super();\n this._showOptionButtons = _showOptionButtons;\n this.fixFocusOnOptionClickEnabled = true;\n this.cachedOptionsWidth = 0;\n this._onDidOptionChange = this._register(new Emitter());\n this.onDidOptionChange = this._onDidOptionChange.event;\n this._onKeyDown = this._register(new Emitter());\n this.onKeyDown = this._onKeyDown.event;\n this._onMouseDown = this._register(new Emitter());\n this._onInput = this._register(new Emitter());\n this._onKeyUp = this._register(new Emitter());\n this._onPreserveCaseKeyDown = this._register(new Emitter());\n this.onPreserveCaseKeyDown = this._onPreserveCaseKeyDown.event;\n this.contextViewProvider = contextViewProvider;\n this.placeholder = options.placeholder || '';\n this.validation = options.validation;\n this.label = options.label || NLS_DEFAULT_LABEL;\n this.inputActiveOptionBorder = options.inputActiveOptionBorder;\n this.inputActiveOptionForeground = options.inputActiveOptionForeground;\n this.inputActiveOptionBackground = options.inputActiveOptionBackground;\n this.inputBackground = options.inputBackground;\n this.inputForeground = options.inputForeground;\n this.inputBorder = options.inputBorder;\n this.inputValidationInfoBorder = options.inputValidationInfoBorder;\n this.inputValidationInfoBackground = options.inputValidationInfoBackground;\n this.inputValidationInfoForeground = options.inputValidationInfoForeground;\n this.inputValidationWarningBorder = options.inputValidationWarningBorder;\n this.inputValidationWarningBackground = options.inputValidationWarningBackground;\n this.inputValidationWarningForeground = options.inputValidationWarningForeground;\n this.inputValidationErrorBorder = options.inputValidationErrorBorder;\n this.inputValidationErrorBackground = options.inputValidationErrorBackground;\n this.inputValidationErrorForeground = options.inputValidationErrorForeground;\n const appendPreserveCaseLabel = options.appendPreserveCaseLabel || '';\n const history = options.history || [];\n const flexibleHeight = !!options.flexibleHeight;\n const flexibleWidth = !!options.flexibleWidth;\n const flexibleMaxHeight = options.flexibleMaxHeight;\n this.domNode = document.createElement('div');\n this.domNode.classList.add('monaco-findInput');\n this.inputBox = this._register(new HistoryInputBox(this.domNode, this.contextViewProvider, {\n ariaLabel: this.label || '',\n placeholder: this.placeholder || '',\n validationOptions: {\n validation: this.validation\n },\n inputBackground: this.inputBackground,\n inputForeground: this.inputForeground,\n inputBorder: this.inputBorder,\n inputValidationInfoBackground: this.inputValidationInfoBackground,\n inputValidationInfoForeground: this.inputValidationInfoForeground,\n inputValidationInfoBorder: this.inputValidationInfoBorder,\n inputValidationWarningBackground: this.inputValidationWarningBackground,\n inputValidationWarningForeground: this.inputValidationWarningForeground,\n inputValidationWarningBorder: this.inputValidationWarningBorder,\n inputValidationErrorBackground: this.inputValidationErrorBackground,\n inputValidationErrorForeground: this.inputValidationErrorForeground,\n inputValidationErrorBorder: this.inputValidationErrorBorder,\n history,\n showHistoryHint: options.showHistoryHint,\n flexibleHeight,\n flexibleWidth,\n flexibleMaxHeight\n }));\n this.preserveCase = this._register(new PreserveCaseToggle({\n appendTitle: appendPreserveCaseLabel,\n isChecked: false,\n inputActiveOptionBorder: this.inputActiveOptionBorder,\n inputActiveOptionForeground: this.inputActiveOptionForeground,\n inputActiveOptionBackground: this.inputActiveOptionBackground,\n }));\n this._register(this.preserveCase.onChange(viaKeyboard => {\n this._onDidOptionChange.fire(viaKeyboard);\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\n this.inputBox.focus();\n }\n this.validate();\n }));\n this._register(this.preserveCase.onKeyDown(e => {\n this._onPreserveCaseKeyDown.fire(e);\n }));\n if (this._showOptionButtons) {\n this.cachedOptionsWidth = this.preserveCase.width();\n }\n else {\n this.cachedOptionsWidth = 0;\n }\n // Arrow-Key support to navigate between options\n const indexes = [this.preserveCase.domNode];\n this.onkeydown(this.domNode, (event) => {\n if (event.equals(15 /* KeyCode.LeftArrow */) || event.equals(17 /* KeyCode.RightArrow */) || event.equals(9 /* KeyCode.Escape */)) {\n const index = indexes.indexOf(document.activeElement);\n if (index >= 0) {\n let newIndex = -1;\n if (event.equals(17 /* KeyCode.RightArrow */)) {\n newIndex = (index + 1) % indexes.length;\n }\n else if (event.equals(15 /* KeyCode.LeftArrow */)) {\n if (index === 0) {\n newIndex = indexes.length - 1;\n }\n else {\n newIndex = index - 1;\n }\n }\n if (event.equals(9 /* KeyCode.Escape */)) {\n indexes[index].blur();\n this.inputBox.focus();\n }\n else if (newIndex >= 0) {\n indexes[newIndex].focus();\n }\n dom.EventHelper.stop(event, true);\n }\n }\n });\n const controls = document.createElement('div');\n controls.className = 'controls';\n controls.style.display = this._showOptionButtons ? 'block' : 'none';\n controls.appendChild(this.preserveCase.domNode);\n this.domNode.appendChild(controls);\n parent === null || parent === void 0 ? void 0 : parent.appendChild(this.domNode);\n this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\n this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\n this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\n this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\n }\n enable() {\n this.domNode.classList.remove('disabled');\n this.inputBox.enable();\n this.preserveCase.enable();\n }\n disable() {\n this.domNode.classList.add('disabled');\n this.inputBox.disable();\n this.preserveCase.disable();\n }\n setEnabled(enabled) {\n if (enabled) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n style(styles) {\n this.inputActiveOptionBorder = styles.inputActiveOptionBorder;\n this.inputActiveOptionForeground = styles.inputActiveOptionForeground;\n this.inputActiveOptionBackground = styles.inputActiveOptionBackground;\n this.inputBackground = styles.inputBackground;\n this.inputForeground = styles.inputForeground;\n this.inputBorder = styles.inputBorder;\n this.inputValidationInfoBackground = styles.inputValidationInfoBackground;\n this.inputValidationInfoForeground = styles.inputValidationInfoForeground;\n this.inputValidationInfoBorder = styles.inputValidationInfoBorder;\n this.inputValidationWarningBackground = styles.inputValidationWarningBackground;\n this.inputValidationWarningForeground = styles.inputValidationWarningForeground;\n this.inputValidationWarningBorder = styles.inputValidationWarningBorder;\n this.inputValidationErrorBackground = styles.inputValidationErrorBackground;\n this.inputValidationErrorForeground = styles.inputValidationErrorForeground;\n this.inputValidationErrorBorder = styles.inputValidationErrorBorder;\n this.applyStyles();\n }\n applyStyles() {\n if (this.domNode) {\n const toggleStyles = {\n inputActiveOptionBorder: this.inputActiveOptionBorder,\n inputActiveOptionForeground: this.inputActiveOptionForeground,\n inputActiveOptionBackground: this.inputActiveOptionBackground,\n };\n this.preserveCase.style(toggleStyles);\n const inputBoxStyles = {\n inputBackground: this.inputBackground,\n inputForeground: this.inputForeground,\n inputBorder: this.inputBorder,\n inputValidationInfoBackground: this.inputValidationInfoBackground,\n inputValidationInfoForeground: this.inputValidationInfoForeground,\n inputValidationInfoBorder: this.inputValidationInfoBorder,\n inputValidationWarningBackground: this.inputValidationWarningBackground,\n inputValidationWarningForeground: this.inputValidationWarningForeground,\n inputValidationWarningBorder: this.inputValidationWarningBorder,\n inputValidationErrorBackground: this.inputValidationErrorBackground,\n inputValidationErrorForeground: this.inputValidationErrorForeground,\n inputValidationErrorBorder: this.inputValidationErrorBorder\n };\n this.inputBox.style(inputBoxStyles);\n }\n }\n select() {\n this.inputBox.select();\n }\n focus() {\n this.inputBox.focus();\n }\n getPreserveCase() {\n return this.preserveCase.checked;\n }\n setPreserveCase(value) {\n this.preserveCase.checked = value;\n }\n focusOnPreserve() {\n this.preserveCase.focus();\n }\n validate() {\n if (this.inputBox) {\n this.inputBox.validate();\n }\n }\n set width(newWidth) {\n this.inputBox.paddingRight = this.cachedOptionsWidth;\n this.inputBox.width = newWidth;\n this.domNode.style.width = newWidth + 'px';\n }\n dispose() {\n super.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { FindInput } from '../../../base/browser/ui/findinput/findInput.js';\nimport { ReplaceInput } from '../../../base/browser/ui/findinput/replaceInput.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { KeybindingsRegistry } from '../../keybinding/common/keybindingsRegistry.js';\nimport { localize } from '../../../nls.js';\nimport { DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';\nexport const historyNavigationVisible = new RawContextKey('suggestWidgetVisible', false, localize('suggestWidgetVisible', \"Whether suggestion are visible\"));\nconst HistoryNavigationWidgetFocusContext = 'historyNavigationWidgetFocus';\nconst HistoryNavigationForwardsEnablementContext = 'historyNavigationForwardsEnabled';\nconst HistoryNavigationBackwardsEnablementContext = 'historyNavigationBackwardsEnabled';\nlet lastFocusedWidget = undefined;\nconst widgets = [];\nexport function registerAndCreateHistoryNavigationContext(contextKeyService, widget) {\n if (widgets.includes(widget)) {\n throw new Error('Cannot register the same widget multiple times');\n }\n widgets.push(widget);\n const disposableStore = new DisposableStore();\n const scopedContextKeyService = disposableStore.add(contextKeyService.createScoped(widget.element));\n const historyNavigationWidgetFocus = new RawContextKey(HistoryNavigationWidgetFocusContext, false).bindTo(scopedContextKeyService);\n const historyNavigationForwardsEnablement = new RawContextKey(HistoryNavigationForwardsEnablementContext, true).bindTo(scopedContextKeyService);\n const historyNavigationBackwardsEnablement = new RawContextKey(HistoryNavigationBackwardsEnablementContext, true).bindTo(scopedContextKeyService);\n const onDidFocus = () => {\n historyNavigationWidgetFocus.set(true);\n lastFocusedWidget = widget;\n };\n const onDidBlur = () => {\n historyNavigationWidgetFocus.set(false);\n if (lastFocusedWidget === widget) {\n lastFocusedWidget = undefined;\n }\n };\n // Check for currently being focused\n if (widget.element === document.activeElement) {\n onDidFocus();\n }\n disposableStore.add(widget.onDidFocus(() => onDidFocus()));\n disposableStore.add(widget.onDidBlur(() => onDidBlur()));\n disposableStore.add(toDisposable(() => {\n widgets.splice(widgets.indexOf(widget), 1);\n onDidBlur();\n }));\n return {\n scopedContextKeyService,\n historyNavigationForwardsEnablement,\n historyNavigationBackwardsEnablement,\n dispose() {\n disposableStore.dispose();\n }\n };\n}\nlet ContextScopedFindInput = class ContextScopedFindInput extends FindInput {\n constructor(container, contextViewProvider, options, contextKeyService, showFindOptions = false) {\n super(container, contextViewProvider, showFindOptions, options);\n this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox));\n }\n};\nContextScopedFindInput = __decorate([\n __param(3, IContextKeyService)\n], ContextScopedFindInput);\nexport { ContextScopedFindInput };\nlet ContextScopedReplaceInput = class ContextScopedReplaceInput extends ReplaceInput {\n constructor(container, contextViewProvider, options, contextKeyService, showReplaceOptions = false) {\n super(container, contextViewProvider, showReplaceOptions, options);\n this._register(registerAndCreateHistoryNavigationContext(contextKeyService, this.inputBox));\n }\n};\nContextScopedReplaceInput = __decorate([\n __param(3, IContextKeyService)\n], ContextScopedReplaceInput);\nexport { ContextScopedReplaceInput };\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'history.showPrevious',\n weight: 200 /* KeybindingWeight.WorkbenchContrib */,\n when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), ContextKeyExpr.equals(HistoryNavigationBackwardsEnablementContext, true), historyNavigationVisible.isEqualTo(false)),\n primary: 16 /* KeyCode.UpArrow */,\n secondary: [512 /* KeyMod.Alt */ | 16 /* KeyCode.UpArrow */],\n handler: (accessor) => {\n if (lastFocusedWidget) {\n lastFocusedWidget.showPreviousValue();\n }\n }\n});\nKeybindingsRegistry.registerCommandAndKeybindingRule({\n id: 'history.showNext',\n weight: 200 /* KeybindingWeight.WorkbenchContrib */,\n when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetFocusContext), ContextKeyExpr.equals(HistoryNavigationForwardsEnablementContext, true), historyNavigationVisible.isEqualTo(false)),\n primary: 18 /* KeyCode.DownArrow */,\n secondary: [512 /* KeyMod.Alt */ | 18 /* KeyCode.DownArrow */],\n handler: (accessor) => {\n if (lastFocusedWidget) {\n lastFocusedWidget.showNextValue();\n }\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class SyncDescriptor {\n constructor(ctor, staticArguments = [], supportsDelayedInstantiation = false) {\n this.ctor = ctor;\n this.staticArguments = staticArguments;\n this.supportsDelayedInstantiation = supportsDelayedInstantiation;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { SyncDescriptor } from './descriptors.js';\nconst _registry = [];\nexport function registerSingleton(id, ctorOrDescriptor, supportsDelayedInstantiation) {\n if (!(ctorOrDescriptor instanceof SyncDescriptor)) {\n ctorOrDescriptor = new SyncDescriptor(ctorOrDescriptor, [], supportsDelayedInstantiation);\n }\n _registry.push([id, ctorOrDescriptor]);\n}\nexport function getSingletonServiceDescriptors() {\n return _registry;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n// ------ internal util\nexport var _util;\n(function (_util) {\n _util.serviceIds = new Map();\n _util.DI_TARGET = '$di$target';\n _util.DI_DEPENDENCIES = '$di$dependencies';\n function getServiceDependencies(ctor) {\n return ctor[_util.DI_DEPENDENCIES] || [];\n }\n _util.getServiceDependencies = getServiceDependencies;\n})(_util || (_util = {}));\nexport const IInstantiationService = createDecorator('instantiationService');\nfunction storeServiceDependency(id, target, index) {\n if (target[_util.DI_TARGET] === target) {\n target[_util.DI_DEPENDENCIES].push({ id, index });\n }\n else {\n target[_util.DI_DEPENDENCIES] = [{ id, index }];\n target[_util.DI_TARGET] = target;\n }\n}\n/**\n * The *only* valid way to create a {{ServiceIdentifier}}.\n */\nexport function createDecorator(serviceId) {\n if (_util.serviceIds.has(serviceId)) {\n return _util.serviceIds.get(serviceId);\n }\n const id = function (target, key, index) {\n if (arguments.length !== 3) {\n throw new Error('@IServiceName-decorator can only be used to decorate a parameter');\n }\n storeServiceDependency(id, target, index);\n };\n id.toString = () => serviceId;\n _util.serviceIds.set(serviceId, id);\n return id;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class ServiceCollection {\n constructor(...entries) {\n this._entries = new Map();\n for (const [id, service] of entries) {\n this.set(id, service);\n }\n }\n set(id, instanceOrDescriptor) {\n const result = this._entries.get(id);\n this._entries.set(id, instanceOrDescriptor);\n return result;\n }\n get(id) {\n return this._entries.get(id);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter } from '../../../base/common/event.js';\nimport * as platform from '../../registry/common/platform.js';\nexport const Extensions = {\n JSONContribution: 'base.contributions.json'\n};\nfunction normalizeId(id) {\n if (id.length > 0 && id.charAt(id.length - 1) === '#') {\n return id.substring(0, id.length - 1);\n }\n return id;\n}\nclass JSONContributionRegistry {\n constructor() {\n this._onDidChangeSchema = new Emitter();\n this.schemasById = {};\n }\n registerSchema(uri, unresolvedSchemaContent) {\n this.schemasById[normalizeId(uri)] = unresolvedSchemaContent;\n this._onDidChangeSchema.fire(uri);\n }\n notifySchemaChanged(uri) {\n this._onDidChangeSchema.fire(uri);\n }\n}\nconst jsonContributionRegistry = new JSONContributionRegistry();\nplatform.Registry.add(Extensions.JSONContribution, jsonContributionRegistry);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IKeybindingService = createDecorator('keybindingService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createKeybinding } from '../../../base/common/keybindings.js';\nimport { OS } from '../../../base/common/platform.js';\nimport { CommandsRegistry } from '../../commands/common/commands.js';\nimport { Registry } from '../../registry/common/platform.js';\nclass KeybindingsRegistryImpl {\n constructor() {\n this._coreKeybindings = [];\n this._extensionKeybindings = [];\n this._cachedMergedKeybindings = null;\n }\n /**\n * Take current platform into account and reduce to primary & secondary.\n */\n static bindToCurrentPlatform(kb) {\n if (OS === 1 /* OperatingSystem.Windows */) {\n if (kb && kb.win) {\n return kb.win;\n }\n }\n else if (OS === 2 /* OperatingSystem.Macintosh */) {\n if (kb && kb.mac) {\n return kb.mac;\n }\n }\n else {\n if (kb && kb.linux) {\n return kb.linux;\n }\n }\n return kb;\n }\n registerKeybindingRule(rule) {\n const actualKb = KeybindingsRegistryImpl.bindToCurrentPlatform(rule);\n if (actualKb && actualKb.primary) {\n const kk = createKeybinding(actualKb.primary, OS);\n if (kk) {\n this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, 0, rule.when);\n }\n }\n if (actualKb && Array.isArray(actualKb.secondary)) {\n for (let i = 0, len = actualKb.secondary.length; i < len; i++) {\n const k = actualKb.secondary[i];\n const kk = createKeybinding(k, OS);\n if (kk) {\n this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, -i - 1, rule.when);\n }\n }\n }\n }\n registerCommandAndKeybindingRule(desc) {\n this.registerKeybindingRule(desc);\n CommandsRegistry.registerCommand(desc);\n }\n static _mightProduceChar(keyCode) {\n if (keyCode >= 21 /* KeyCode.Digit0 */ && keyCode <= 30 /* KeyCode.Digit9 */) {\n return true;\n }\n if (keyCode >= 31 /* KeyCode.KeyA */ && keyCode <= 56 /* KeyCode.KeyZ */) {\n return true;\n }\n return (keyCode === 80 /* KeyCode.Semicolon */\n || keyCode === 81 /* KeyCode.Equal */\n || keyCode === 82 /* KeyCode.Comma */\n || keyCode === 83 /* KeyCode.Minus */\n || keyCode === 84 /* KeyCode.Period */\n || keyCode === 85 /* KeyCode.Slash */\n || keyCode === 86 /* KeyCode.Backquote */\n || keyCode === 110 /* KeyCode.ABNT_C1 */\n || keyCode === 111 /* KeyCode.ABNT_C2 */\n || keyCode === 87 /* KeyCode.BracketLeft */\n || keyCode === 88 /* KeyCode.Backslash */\n || keyCode === 89 /* KeyCode.BracketRight */\n || keyCode === 90 /* KeyCode.Quote */\n || keyCode === 91 /* KeyCode.OEM_8 */\n || keyCode === 92 /* KeyCode.IntlBackslash */);\n }\n _assertNoCtrlAlt(keybinding, commandId) {\n if (keybinding.ctrlKey && keybinding.altKey && !keybinding.metaKey) {\n if (KeybindingsRegistryImpl._mightProduceChar(keybinding.keyCode)) {\n console.warn('Ctrl+Alt+ keybindings should not be used by default under Windows. Offender: ', keybinding, ' for ', commandId);\n }\n }\n }\n _registerDefaultKeybinding(keybinding, commandId, commandArgs, weight1, weight2, when) {\n if (OS === 1 /* OperatingSystem.Windows */) {\n this._assertNoCtrlAlt(keybinding.parts[0], commandId);\n }\n this._coreKeybindings.push({\n keybinding: keybinding.parts,\n command: commandId,\n commandArgs: commandArgs,\n when: when,\n weight1: weight1,\n weight2: weight2,\n extensionId: null,\n isBuiltinExtension: false\n });\n this._cachedMergedKeybindings = null;\n }\n getDefaultKeybindings() {\n if (!this._cachedMergedKeybindings) {\n this._cachedMergedKeybindings = [].concat(this._coreKeybindings).concat(this._extensionKeybindings);\n this._cachedMergedKeybindings.sort(sorter);\n }\n return this._cachedMergedKeybindings.slice(0);\n }\n}\nexport const KeybindingsRegistry = new KeybindingsRegistryImpl();\n// Define extension point ids\nexport const Extensions = {\n EditorModes: 'platform.keybindingsRegistry'\n};\nRegistry.add(Extensions.EditorModes, KeybindingsRegistry);\nfunction sorter(a, b) {\n if (a.weight1 !== b.weight1) {\n return a.weight1 - b.weight1;\n }\n if (a.command && b.command) {\n if (a.command < b.command) {\n return -1;\n }\n if (a.command > b.command) {\n return 1;\n }\n }\n return a.weight2 - b.weight2;\n}\n","import { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const ILabelService = createDecorator('labelService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { range } from '../../../common/arrays.js';\nimport { CancellationTokenSource } from '../../../common/cancellation.js';\nimport { Event } from '../../../common/event.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport './list.css';\nimport { List } from './listWidget.js';\nclass PagedRenderer {\n constructor(renderer, modelProvider) {\n this.renderer = renderer;\n this.modelProvider = modelProvider;\n }\n get templateId() { return this.renderer.templateId; }\n renderTemplate(container) {\n const data = this.renderer.renderTemplate(container);\n return { data, disposable: Disposable.None };\n }\n renderElement(index, _, data, height) {\n if (data.disposable) {\n data.disposable.dispose();\n }\n if (!data.data) {\n return;\n }\n const model = this.modelProvider();\n if (model.isResolved(index)) {\n return this.renderer.renderElement(model.get(index), index, data.data, height);\n }\n const cts = new CancellationTokenSource();\n const promise = model.resolve(index, cts.token);\n data.disposable = { dispose: () => cts.cancel() };\n this.renderer.renderPlaceholder(index, data.data);\n promise.then(entry => this.renderer.renderElement(entry, index, data.data, height));\n }\n disposeTemplate(data) {\n if (data.disposable) {\n data.disposable.dispose();\n data.disposable = undefined;\n }\n if (data.data) {\n this.renderer.disposeTemplate(data.data);\n data.data = undefined;\n }\n }\n}\nclass PagedAccessibilityProvider {\n constructor(modelProvider, accessibilityProvider) {\n this.modelProvider = modelProvider;\n this.accessibilityProvider = accessibilityProvider;\n }\n getWidgetAriaLabel() {\n return this.accessibilityProvider.getWidgetAriaLabel();\n }\n getAriaLabel(index) {\n const model = this.modelProvider();\n if (!model.isResolved(index)) {\n return null;\n }\n return this.accessibilityProvider.getAriaLabel(model.get(index));\n }\n}\nfunction fromPagedListOptions(modelProvider, options) {\n return Object.assign(Object.assign({}, options), { accessibilityProvider: options.accessibilityProvider && new PagedAccessibilityProvider(modelProvider, options.accessibilityProvider) });\n}\nexport class PagedList {\n constructor(user, container, virtualDelegate, renderers, options = {}) {\n const modelProvider = () => this.model;\n const pagedRenderers = renderers.map(r => new PagedRenderer(r, modelProvider));\n this.list = new List(user, container, virtualDelegate, pagedRenderers, fromPagedListOptions(modelProvider, options));\n }\n updateOptions(options) {\n this.list.updateOptions(options);\n }\n getHTMLElement() {\n return this.list.getHTMLElement();\n }\n get onDidFocus() {\n return this.list.onDidFocus;\n }\n get onDidDispose() {\n return this.list.onDidDispose;\n }\n get onMouseDblClick() {\n return Event.map(this.list.onMouseDblClick, ({ element, index, browserEvent }) => ({ element: element === undefined ? undefined : this._model.get(element), index, browserEvent }));\n }\n get onPointer() {\n return Event.map(this.list.onPointer, ({ element, index, browserEvent }) => ({ element: element === undefined ? undefined : this._model.get(element), index, browserEvent }));\n }\n get onDidChangeSelection() {\n return Event.map(this.list.onDidChangeSelection, ({ elements, indexes, browserEvent }) => ({ elements: elements.map(e => this._model.get(e)), indexes, browserEvent }));\n }\n get model() {\n return this._model;\n }\n set model(model) {\n this._model = model;\n this.list.splice(0, this.list.length, range(model.length));\n }\n getFocus() {\n return this.list.getFocus();\n }\n getSelection() {\n return this.list.getSelection();\n }\n getSelectedElements() {\n return this.getSelection().map(i => this.model.get(i));\n }\n style(styles) {\n this.list.style(styles);\n }\n dispose() {\n this.list.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { $, append, clearNode, createStyleSheet } from '../../dom.js';\nimport { List } from '../list/listWidget.js';\nimport { SplitView } from '../splitview/splitview.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { DisposableStore } from '../../../common/lifecycle.js';\nimport './table.css';\nclass TableListRenderer {\n constructor(columns, renderers, getColumnSize) {\n this.columns = columns;\n this.getColumnSize = getColumnSize;\n this.templateId = TableListRenderer.TemplateId;\n this.renderedTemplates = new Set();\n const rendererMap = new Map(renderers.map(r => [r.templateId, r]));\n this.renderers = [];\n for (const column of columns) {\n const renderer = rendererMap.get(column.templateId);\n if (!renderer) {\n throw new Error(`Table cell renderer for template id ${column.templateId} not found.`);\n }\n this.renderers.push(renderer);\n }\n }\n renderTemplate(container) {\n const rowContainer = append(container, $('.monaco-table-tr'));\n const cellContainers = [];\n const cellTemplateData = [];\n for (let i = 0; i < this.columns.length; i++) {\n const renderer = this.renderers[i];\n const cellContainer = append(rowContainer, $('.monaco-table-td', { 'data-col-index': i }));\n cellContainer.style.width = `${this.getColumnSize(i)}px`;\n cellContainers.push(cellContainer);\n cellTemplateData.push(renderer.renderTemplate(cellContainer));\n }\n const result = { container, cellContainers, cellTemplateData };\n this.renderedTemplates.add(result);\n return result;\n }\n renderElement(element, index, templateData, height) {\n for (let i = 0; i < this.columns.length; i++) {\n const column = this.columns[i];\n const cell = column.project(element);\n const renderer = this.renderers[i];\n renderer.renderElement(cell, index, templateData.cellTemplateData[i], height);\n }\n }\n disposeElement(element, index, templateData, height) {\n for (let i = 0; i < this.columns.length; i++) {\n const renderer = this.renderers[i];\n if (renderer.disposeElement) {\n const column = this.columns[i];\n const cell = column.project(element);\n renderer.disposeElement(cell, index, templateData.cellTemplateData[i], height);\n }\n }\n }\n disposeTemplate(templateData) {\n for (let i = 0; i < this.columns.length; i++) {\n const renderer = this.renderers[i];\n renderer.disposeTemplate(templateData.cellTemplateData[i]);\n }\n clearNode(templateData.container);\n this.renderedTemplates.delete(templateData);\n }\n layoutColumn(index, size) {\n for (const { cellContainers } of this.renderedTemplates) {\n cellContainers[index].style.width = `${size}px`;\n }\n }\n}\nTableListRenderer.TemplateId = 'row';\nfunction asListVirtualDelegate(delegate) {\n return {\n getHeight(row) { return delegate.getHeight(row); },\n getTemplateId() { return TableListRenderer.TemplateId; },\n };\n}\nclass ColumnHeader {\n constructor(column, index) {\n this.column = column;\n this.index = index;\n this._onDidLayout = new Emitter();\n this.onDidLayout = this._onDidLayout.event;\n this.element = $('.monaco-table-th', { 'data-col-index': index, title: column.tooltip }, column.label);\n }\n get minimumSize() { var _a; return (_a = this.column.minimumWidth) !== null && _a !== void 0 ? _a : 120; }\n get maximumSize() { var _a; return (_a = this.column.maximumWidth) !== null && _a !== void 0 ? _a : Number.POSITIVE_INFINITY; }\n get onDidChange() { var _a; return (_a = this.column.onDidChangeWidthConstraints) !== null && _a !== void 0 ? _a : Event.None; }\n layout(size) {\n this._onDidLayout.fire([this.index, size]);\n }\n}\nexport class Table {\n constructor(user, container, virtualDelegate, columns, renderers, _options) {\n this.virtualDelegate = virtualDelegate;\n this.domId = `table_id_${++Table.InstanceCount}`;\n this.disposables = new DisposableStore();\n this.cachedWidth = 0;\n this.cachedHeight = 0;\n this.domNode = append(container, $(`.monaco-table.${this.domId}`));\n const headers = columns.map((c, i) => new ColumnHeader(c, i));\n const descriptor = {\n size: headers.reduce((a, b) => a + b.column.weight, 0),\n views: headers.map(view => ({ size: view.column.weight, view }))\n };\n this.splitview = this.disposables.add(new SplitView(this.domNode, {\n orientation: 1 /* Orientation.HORIZONTAL */,\n scrollbarVisibility: 2 /* ScrollbarVisibility.Hidden */,\n getSashOrthogonalSize: () => this.cachedHeight,\n descriptor\n }));\n this.splitview.el.style.height = `${virtualDelegate.headerRowHeight}px`;\n this.splitview.el.style.lineHeight = `${virtualDelegate.headerRowHeight}px`;\n const renderer = new TableListRenderer(columns, renderers, i => this.splitview.getViewSize(i));\n this.list = this.disposables.add(new List(user, this.domNode, asListVirtualDelegate(virtualDelegate), [renderer], _options));\n Event.any(...headers.map(h => h.onDidLayout))(([index, size]) => renderer.layoutColumn(index, size), null, this.disposables);\n this.splitview.onDidSashReset(index => {\n const totalWeight = columns.reduce((r, c) => r + c.weight, 0);\n const size = columns[index].weight / totalWeight * this.cachedWidth;\n this.splitview.resizeView(index, size);\n }, null, this.disposables);\n this.styleElement = createStyleSheet(this.domNode);\n this.style({});\n }\n get onDidChangeFocus() { return this.list.onDidChangeFocus; }\n get onDidChangeSelection() { return this.list.onDidChangeSelection; }\n get onMouseDblClick() { return this.list.onMouseDblClick; }\n get onPointer() { return this.list.onPointer; }\n get onDidFocus() { return this.list.onDidFocus; }\n get onDidDispose() { return this.list.onDidDispose; }\n updateOptions(options) {\n this.list.updateOptions(options);\n }\n splice(start, deleteCount, elements = []) {\n this.list.splice(start, deleteCount, elements);\n }\n getHTMLElement() {\n return this.domNode;\n }\n style(styles) {\n const content = [];\n content.push(`.monaco-table.${this.domId} > .monaco-split-view2 .monaco-sash.vertical::before {\n\t\t\ttop: ${this.virtualDelegate.headerRowHeight + 1}px;\n\t\t\theight: calc(100% - ${this.virtualDelegate.headerRowHeight}px);\n\t\t}`);\n this.styleElement.textContent = content.join('\\n');\n this.list.style(styles);\n }\n getSelectedElements() {\n return this.list.getSelectedElements();\n }\n getSelection() {\n return this.list.getSelection();\n }\n getFocus() {\n return this.list.getFocus();\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nTable.InstanceCount = 0;\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport var TreeMouseEventTarget;\n(function (TreeMouseEventTarget) {\n TreeMouseEventTarget[TreeMouseEventTarget[\"Unknown\"] = 0] = \"Unknown\";\n TreeMouseEventTarget[TreeMouseEventTarget[\"Twistie\"] = 1] = \"Twistie\";\n TreeMouseEventTarget[TreeMouseEventTarget[\"Element\"] = 2] = \"Element\";\n TreeMouseEventTarget[TreeMouseEventTarget[\"Filter\"] = 3] = \"Filter\";\n})(TreeMouseEventTarget || (TreeMouseEventTarget = {}));\nexport class TreeError extends Error {\n constructor(user, message) {\n super(`TreeError [${user}] ${message}`);\n }\n}\nexport class WeakMapper {\n constructor(fn) {\n this.fn = fn;\n this._map = new WeakMap();\n }\n map(key) {\n let result = this._map.get(key);\n if (!result) {\n result = this.fn(key);\n this._map.set(key, result);\n }\n return result;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { TreeError } from './tree.js';\nimport { splice, tail2 } from '../../../common/arrays.js';\nimport { Delayer, MicrotaskDelay } from '../../../common/async.js';\nimport { LcsDiff } from '../../../common/diff/diff.js';\nimport { Emitter, EventBufferer } from '../../../common/event.js';\nimport { Iterable } from '../../../common/iterator.js';\nexport function isFilterResult(obj) {\n return typeof obj === 'object' && 'visibility' in obj && 'data' in obj;\n}\nexport function getVisibleState(visibility) {\n switch (visibility) {\n case true: return 1 /* TreeVisibility.Visible */;\n case false: return 0 /* TreeVisibility.Hidden */;\n default: return visibility;\n }\n}\nfunction isCollapsibleStateUpdate(update) {\n return typeof update.collapsible === 'boolean';\n}\nexport class IndexTreeModel {\n constructor(user, list, rootElement, options = {}) {\n this.user = user;\n this.list = list;\n this.rootRef = [];\n this.eventBufferer = new EventBufferer();\n this._onDidChangeCollapseState = new Emitter();\n this.onDidChangeCollapseState = this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event);\n this._onDidChangeRenderNodeCount = new Emitter();\n this.onDidChangeRenderNodeCount = this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event);\n this._onDidSplice = new Emitter();\n this.onDidSplice = this._onDidSplice.event;\n this.refilterDelayer = new Delayer(MicrotaskDelay);\n this.collapseByDefault = typeof options.collapseByDefault === 'undefined' ? false : options.collapseByDefault;\n this.filter = options.filter;\n this.autoExpandSingleChildren = typeof options.autoExpandSingleChildren === 'undefined' ? false : options.autoExpandSingleChildren;\n this.root = {\n parent: undefined,\n element: rootElement,\n children: [],\n depth: 0,\n visibleChildrenCount: 0,\n visibleChildIndex: -1,\n collapsible: false,\n collapsed: false,\n renderNodeCount: 0,\n visibility: 1 /* TreeVisibility.Visible */,\n visible: true,\n filterData: undefined\n };\n }\n splice(location, deleteCount, toInsert = Iterable.empty(), options = {}) {\n if (location.length === 0) {\n throw new TreeError(this.user, 'Invalid tree location');\n }\n if (options.diffIdentityProvider) {\n this.spliceSmart(options.diffIdentityProvider, location, deleteCount, toInsert, options);\n }\n else {\n this.spliceSimple(location, deleteCount, toInsert, options);\n }\n }\n spliceSmart(identity, location, deleteCount, toInsertIterable, options, recurseLevels) {\n var _a;\n if (toInsertIterable === void 0) { toInsertIterable = Iterable.empty(); }\n if (recurseLevels === void 0) { recurseLevels = (_a = options.diffDepth) !== null && _a !== void 0 ? _a : 0; }\n const { parentNode } = this.getParentNodeWithListIndex(location);\n if (!parentNode.lastDiffIds) {\n return this.spliceSimple(location, deleteCount, toInsertIterable, options);\n }\n const toInsert = [...toInsertIterable];\n const index = location[location.length - 1];\n const diff = new LcsDiff({ getElements: () => parentNode.lastDiffIds }, {\n getElements: () => [\n ...parentNode.children.slice(0, index),\n ...toInsert,\n ...parentNode.children.slice(index + deleteCount),\n ].map(e => identity.getId(e.element).toString())\n }).ComputeDiff(false);\n // if we were given a 'best effort' diff, use default behavior\n if (diff.quitEarly) {\n parentNode.lastDiffIds = undefined;\n return this.spliceSimple(location, deleteCount, toInsert, options);\n }\n const locationPrefix = location.slice(0, -1);\n const recurseSplice = (fromOriginal, fromModified, count) => {\n if (recurseLevels > 0) {\n for (let i = 0; i < count; i++) {\n fromOriginal--;\n fromModified--;\n this.spliceSmart(identity, [...locationPrefix, fromOriginal, 0], Number.MAX_SAFE_INTEGER, toInsert[fromModified].children, options, recurseLevels - 1);\n }\n }\n };\n let lastStartO = Math.min(parentNode.children.length, index + deleteCount);\n let lastStartM = toInsert.length;\n for (const change of diff.changes.sort((a, b) => b.originalStart - a.originalStart)) {\n recurseSplice(lastStartO, lastStartM, lastStartO - (change.originalStart + change.originalLength));\n lastStartO = change.originalStart;\n lastStartM = change.modifiedStart - index;\n this.spliceSimple([...locationPrefix, lastStartO], change.originalLength, Iterable.slice(toInsert, lastStartM, lastStartM + change.modifiedLength), options);\n }\n // at this point, startO === startM === count since any remaining prefix should match\n recurseSplice(lastStartO, lastStartM, lastStartO);\n }\n spliceSimple(location, deleteCount, toInsert = Iterable.empty(), { onDidCreateNode, onDidDeleteNode, diffIdentityProvider }) {\n const { parentNode, listIndex, revealed, visible } = this.getParentNodeWithListIndex(location);\n const treeListElementsToInsert = [];\n const nodesToInsertIterator = Iterable.map(toInsert, el => this.createTreeNode(el, parentNode, parentNode.visible ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */, revealed, treeListElementsToInsert, onDidCreateNode));\n const lastIndex = location[location.length - 1];\n const lastHadChildren = parentNode.children.length > 0;\n // figure out what's the visible child start index right before the\n // splice point\n let visibleChildStartIndex = 0;\n for (let i = lastIndex; i >= 0 && i < parentNode.children.length; i--) {\n const child = parentNode.children[i];\n if (child.visible) {\n visibleChildStartIndex = child.visibleChildIndex;\n break;\n }\n }\n const nodesToInsert = [];\n let insertedVisibleChildrenCount = 0;\n let renderNodeCount = 0;\n for (const child of nodesToInsertIterator) {\n nodesToInsert.push(child);\n renderNodeCount += child.renderNodeCount;\n if (child.visible) {\n child.visibleChildIndex = visibleChildStartIndex + insertedVisibleChildrenCount++;\n }\n }\n const deletedNodes = splice(parentNode.children, lastIndex, deleteCount, nodesToInsert);\n if (!diffIdentityProvider) {\n parentNode.lastDiffIds = undefined;\n }\n else if (parentNode.lastDiffIds) {\n splice(parentNode.lastDiffIds, lastIndex, deleteCount, nodesToInsert.map(n => diffIdentityProvider.getId(n.element).toString()));\n }\n else {\n parentNode.lastDiffIds = parentNode.children.map(n => diffIdentityProvider.getId(n.element).toString());\n }\n // figure out what is the count of deleted visible children\n let deletedVisibleChildrenCount = 0;\n for (const child of deletedNodes) {\n if (child.visible) {\n deletedVisibleChildrenCount++;\n }\n }\n // and adjust for all visible children after the splice point\n if (deletedVisibleChildrenCount !== 0) {\n for (let i = lastIndex + nodesToInsert.length; i < parentNode.children.length; i++) {\n const child = parentNode.children[i];\n if (child.visible) {\n child.visibleChildIndex -= deletedVisibleChildrenCount;\n }\n }\n }\n // update parent's visible children count\n parentNode.visibleChildrenCount += insertedVisibleChildrenCount - deletedVisibleChildrenCount;\n if (revealed && visible) {\n const visibleDeleteCount = deletedNodes.reduce((r, node) => r + (node.visible ? node.renderNodeCount : 0), 0);\n this._updateAncestorsRenderNodeCount(parentNode, renderNodeCount - visibleDeleteCount);\n this.list.splice(listIndex, visibleDeleteCount, treeListElementsToInsert);\n }\n if (deletedNodes.length > 0 && onDidDeleteNode) {\n const visit = (node) => {\n onDidDeleteNode(node);\n node.children.forEach(visit);\n };\n deletedNodes.forEach(visit);\n }\n this._onDidSplice.fire({ insertedNodes: nodesToInsert, deletedNodes });\n const currentlyHasChildren = parentNode.children.length > 0;\n if (lastHadChildren !== currentlyHasChildren) {\n this.setCollapsible(location.slice(0, -1), currentlyHasChildren);\n }\n let node = parentNode;\n while (node) {\n if (node.visibility === 2 /* TreeVisibility.Recurse */) {\n // delayed to avoid excessive refiltering, see #135941\n this.refilterDelayer.trigger(() => this.refilter());\n break;\n }\n node = node.parent;\n }\n }\n rerender(location) {\n if (location.length === 0) {\n throw new TreeError(this.user, 'Invalid tree location');\n }\n const { node, listIndex, revealed } = this.getTreeNodeWithListIndex(location);\n if (node.visible && revealed) {\n this.list.splice(listIndex, 1, [node]);\n }\n }\n has(location) {\n return this.hasTreeNode(location);\n }\n getListIndex(location) {\n const { listIndex, visible, revealed } = this.getTreeNodeWithListIndex(location);\n return visible && revealed ? listIndex : -1;\n }\n getListRenderCount(location) {\n return this.getTreeNode(location).renderNodeCount;\n }\n isCollapsible(location) {\n return this.getTreeNode(location).collapsible;\n }\n setCollapsible(location, collapsible) {\n const node = this.getTreeNode(location);\n if (typeof collapsible === 'undefined') {\n collapsible = !node.collapsible;\n }\n const update = { collapsible };\n return this.eventBufferer.bufferEvents(() => this._setCollapseState(location, update));\n }\n isCollapsed(location) {\n return this.getTreeNode(location).collapsed;\n }\n setCollapsed(location, collapsed, recursive) {\n const node = this.getTreeNode(location);\n if (typeof collapsed === 'undefined') {\n collapsed = !node.collapsed;\n }\n const update = { collapsed, recursive: recursive || false };\n return this.eventBufferer.bufferEvents(() => this._setCollapseState(location, update));\n }\n _setCollapseState(location, update) {\n const { node, listIndex, revealed } = this.getTreeNodeWithListIndex(location);\n const result = this._setListNodeCollapseState(node, listIndex, revealed, update);\n if (node !== this.root && this.autoExpandSingleChildren && result && !isCollapsibleStateUpdate(update) && node.collapsible && !node.collapsed && !update.recursive) {\n let onlyVisibleChildIndex = -1;\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (child.visible) {\n if (onlyVisibleChildIndex > -1) {\n onlyVisibleChildIndex = -1;\n break;\n }\n else {\n onlyVisibleChildIndex = i;\n }\n }\n }\n if (onlyVisibleChildIndex > -1) {\n this._setCollapseState([...location, onlyVisibleChildIndex], update);\n }\n }\n return result;\n }\n _setListNodeCollapseState(node, listIndex, revealed, update) {\n const result = this._setNodeCollapseState(node, update, false);\n if (!revealed || !node.visible || !result) {\n return result;\n }\n const previousRenderNodeCount = node.renderNodeCount;\n const toInsert = this.updateNodeAfterCollapseChange(node);\n const deleteCount = previousRenderNodeCount - (listIndex === -1 ? 0 : 1);\n this.list.splice(listIndex + 1, deleteCount, toInsert.slice(1));\n return result;\n }\n _setNodeCollapseState(node, update, deep) {\n let result;\n if (node === this.root) {\n result = false;\n }\n else {\n if (isCollapsibleStateUpdate(update)) {\n result = node.collapsible !== update.collapsible;\n node.collapsible = update.collapsible;\n }\n else if (!node.collapsible) {\n result = false;\n }\n else {\n result = node.collapsed !== update.collapsed;\n node.collapsed = update.collapsed;\n }\n if (result) {\n this._onDidChangeCollapseState.fire({ node, deep });\n }\n }\n if (!isCollapsibleStateUpdate(update) && update.recursive) {\n for (const child of node.children) {\n result = this._setNodeCollapseState(child, update, true) || result;\n }\n }\n return result;\n }\n expandTo(location) {\n this.eventBufferer.bufferEvents(() => {\n let node = this.getTreeNode(location);\n while (node.parent) {\n node = node.parent;\n location = location.slice(0, location.length - 1);\n if (node.collapsed) {\n this._setCollapseState(location, { collapsed: false, recursive: false });\n }\n }\n });\n }\n refilter() {\n const previousRenderNodeCount = this.root.renderNodeCount;\n const toInsert = this.updateNodeAfterFilterChange(this.root);\n this.list.splice(0, previousRenderNodeCount, toInsert);\n this.refilterDelayer.cancel();\n }\n createTreeNode(treeElement, parent, parentVisibility, revealed, treeListElements, onDidCreateNode) {\n const node = {\n parent,\n element: treeElement.element,\n children: [],\n depth: parent.depth + 1,\n visibleChildrenCount: 0,\n visibleChildIndex: -1,\n collapsible: typeof treeElement.collapsible === 'boolean' ? treeElement.collapsible : (typeof treeElement.collapsed !== 'undefined'),\n collapsed: typeof treeElement.collapsed === 'undefined' ? this.collapseByDefault : treeElement.collapsed,\n renderNodeCount: 1,\n visibility: 1 /* TreeVisibility.Visible */,\n visible: true,\n filterData: undefined\n };\n const visibility = this._filterNode(node, parentVisibility);\n node.visibility = visibility;\n if (revealed) {\n treeListElements.push(node);\n }\n const childElements = treeElement.children || Iterable.empty();\n const childRevealed = revealed && visibility !== 0 /* TreeVisibility.Hidden */ && !node.collapsed;\n const childNodes = Iterable.map(childElements, el => this.createTreeNode(el, node, visibility, childRevealed, treeListElements, onDidCreateNode));\n let visibleChildrenCount = 0;\n let renderNodeCount = 1;\n for (const child of childNodes) {\n node.children.push(child);\n renderNodeCount += child.renderNodeCount;\n if (child.visible) {\n child.visibleChildIndex = visibleChildrenCount++;\n }\n }\n node.collapsible = node.collapsible || node.children.length > 0;\n node.visibleChildrenCount = visibleChildrenCount;\n node.visible = visibility === 2 /* TreeVisibility.Recurse */ ? visibleChildrenCount > 0 : (visibility === 1 /* TreeVisibility.Visible */);\n if (!node.visible) {\n node.renderNodeCount = 0;\n if (revealed) {\n treeListElements.pop();\n }\n }\n else if (!node.collapsed) {\n node.renderNodeCount = renderNodeCount;\n }\n onDidCreateNode === null || onDidCreateNode === void 0 ? void 0 : onDidCreateNode(node);\n return node;\n }\n updateNodeAfterCollapseChange(node) {\n const previousRenderNodeCount = node.renderNodeCount;\n const result = [];\n this._updateNodeAfterCollapseChange(node, result);\n this._updateAncestorsRenderNodeCount(node.parent, result.length - previousRenderNodeCount);\n return result;\n }\n _updateNodeAfterCollapseChange(node, result) {\n if (node.visible === false) {\n return 0;\n }\n result.push(node);\n node.renderNodeCount = 1;\n if (!node.collapsed) {\n for (const child of node.children) {\n node.renderNodeCount += this._updateNodeAfterCollapseChange(child, result);\n }\n }\n this._onDidChangeRenderNodeCount.fire(node);\n return node.renderNodeCount;\n }\n updateNodeAfterFilterChange(node) {\n const previousRenderNodeCount = node.renderNodeCount;\n const result = [];\n this._updateNodeAfterFilterChange(node, node.visible ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */, result);\n this._updateAncestorsRenderNodeCount(node.parent, result.length - previousRenderNodeCount);\n return result;\n }\n _updateNodeAfterFilterChange(node, parentVisibility, result, revealed = true) {\n let visibility;\n if (node !== this.root) {\n visibility = this._filterNode(node, parentVisibility);\n if (visibility === 0 /* TreeVisibility.Hidden */) {\n node.visible = false;\n node.renderNodeCount = 0;\n return false;\n }\n if (revealed) {\n result.push(node);\n }\n }\n const resultStartLength = result.length;\n node.renderNodeCount = node === this.root ? 0 : 1;\n let hasVisibleDescendants = false;\n if (!node.collapsed || visibility !== 0 /* TreeVisibility.Hidden */) {\n let visibleChildIndex = 0;\n for (const child of node.children) {\n hasVisibleDescendants = this._updateNodeAfterFilterChange(child, visibility, result, revealed && !node.collapsed) || hasVisibleDescendants;\n if (child.visible) {\n child.visibleChildIndex = visibleChildIndex++;\n }\n }\n node.visibleChildrenCount = visibleChildIndex;\n }\n else {\n node.visibleChildrenCount = 0;\n }\n if (node !== this.root) {\n node.visible = visibility === 2 /* TreeVisibility.Recurse */ ? hasVisibleDescendants : (visibility === 1 /* TreeVisibility.Visible */);\n node.visibility = visibility;\n }\n if (!node.visible) {\n node.renderNodeCount = 0;\n if (revealed) {\n result.pop();\n }\n }\n else if (!node.collapsed) {\n node.renderNodeCount += result.length - resultStartLength;\n }\n this._onDidChangeRenderNodeCount.fire(node);\n return node.visible;\n }\n _updateAncestorsRenderNodeCount(node, diff) {\n if (diff === 0) {\n return;\n }\n while (node) {\n node.renderNodeCount += diff;\n this._onDidChangeRenderNodeCount.fire(node);\n node = node.parent;\n }\n }\n _filterNode(node, parentVisibility) {\n const result = this.filter ? this.filter.filter(node.element, parentVisibility) : 1 /* TreeVisibility.Visible */;\n if (typeof result === 'boolean') {\n node.filterData = undefined;\n return result ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */;\n }\n else if (isFilterResult(result)) {\n node.filterData = result.data;\n return getVisibleState(result.visibility);\n }\n else {\n node.filterData = undefined;\n return getVisibleState(result);\n }\n }\n // cheap\n hasTreeNode(location, node = this.root) {\n if (!location || location.length === 0) {\n return true;\n }\n const [index, ...rest] = location;\n if (index < 0 || index > node.children.length) {\n return false;\n }\n return this.hasTreeNode(rest, node.children[index]);\n }\n // cheap\n getTreeNode(location, node = this.root) {\n if (!location || location.length === 0) {\n return node;\n }\n const [index, ...rest] = location;\n if (index < 0 || index > node.children.length) {\n throw new TreeError(this.user, 'Invalid tree location');\n }\n return this.getTreeNode(rest, node.children[index]);\n }\n // expensive\n getTreeNodeWithListIndex(location) {\n if (location.length === 0) {\n return { node: this.root, listIndex: -1, revealed: true, visible: false };\n }\n const { parentNode, listIndex, revealed, visible } = this.getParentNodeWithListIndex(location);\n const index = location[location.length - 1];\n if (index < 0 || index > parentNode.children.length) {\n throw new TreeError(this.user, 'Invalid tree location');\n }\n const node = parentNode.children[index];\n return { node, listIndex, revealed, visible: visible && node.visible };\n }\n getParentNodeWithListIndex(location, node = this.root, listIndex = 0, revealed = true, visible = true) {\n const [index, ...rest] = location;\n if (index < 0 || index > node.children.length) {\n throw new TreeError(this.user, 'Invalid tree location');\n }\n // TODO@joao perf!\n for (let i = 0; i < index; i++) {\n listIndex += node.children[i].renderNodeCount;\n }\n revealed = revealed && !node.collapsed;\n visible = visible && node.visible;\n if (rest.length === 0) {\n return { parentNode: node, listIndex, revealed, visible };\n }\n return this.getParentNodeWithListIndex(rest, node.children[index], listIndex + 1, revealed, visible);\n }\n getNode(location = []) {\n return this.getTreeNode(location);\n }\n // TODO@joao perf!\n getNodeLocation(node) {\n const location = [];\n let indexTreeNode = node; // typing woes\n while (indexTreeNode.parent) {\n location.push(indexTreeNode.parent.children.indexOf(indexTreeNode));\n indexTreeNode = indexTreeNode.parent;\n }\n return location.reverse();\n }\n getParentNodeLocation(location) {\n if (location.length === 0) {\n return undefined;\n }\n else if (location.length === 1) {\n return [];\n }\n else {\n return tail2(location)[0];\n }\n }\n getFirstElementChild(location) {\n const node = this.getTreeNode(location);\n if (node.children.length === 0) {\n return undefined;\n }\n return node.children[0].element;\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport class SetMap {\n constructor() {\n this.map = new Map();\n }\n add(key, value) {\n let values = this.map.get(key);\n if (!values) {\n values = new Set();\n this.map.set(key, values);\n }\n values.add(value);\n }\n delete(key, value) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.delete(value);\n if (values.size === 0) {\n this.map.delete(key);\n }\n }\n forEach(key, fn) {\n const values = this.map.get(key);\n if (!values) {\n return;\n }\n values.forEach(fn);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { $, append, clearNode, createStyleSheet, h, hasParentWithClass } from '../../dom.js';\nimport { DomEmitter } from '../../event.js';\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\nimport { ActionBar } from '../actionbar/actionbar.js';\nimport { FindInput } from '../findinput/findInput.js';\nimport { ElementsDragAndDropData } from '../list/listView.js';\nimport { isButton, isInputElement, isMonacoEditor, List, MouseController } from '../list/listWidget.js';\nimport { Toggle } from '../toggle/toggle.js';\nimport { getVisibleState, isFilterResult } from './indexTreeModel.js';\nimport { TreeMouseEventTarget } from './tree.js';\nimport { Action } from '../../../common/actions.js';\nimport { distinct, equals, range } from '../../../common/arrays.js';\nimport { disposableTimeout, timeout } from '../../../common/async.js';\nimport { Codicon } from '../../../common/codicons.js';\nimport { SetMap } from '../../../common/collections.js';\nimport { Emitter, Event, EventBufferer, Relay } from '../../../common/event.js';\nimport { fuzzyScore, FuzzyScore } from '../../../common/filters.js';\nimport { Disposable, DisposableStore, dispose, toDisposable } from '../../../common/lifecycle.js';\nimport { clamp } from '../../../common/numbers.js';\nimport { isNumber } from '../../../common/types.js';\nimport './media/tree.css';\nimport { localize } from '../../../../nls.js';\nclass TreeElementsDragAndDropData extends ElementsDragAndDropData {\n constructor(data) {\n super(data.elements.map(node => node.element));\n this.data = data;\n }\n}\nfunction asTreeDragAndDropData(data) {\n if (data instanceof ElementsDragAndDropData) {\n return new TreeElementsDragAndDropData(data);\n }\n return data;\n}\nclass TreeNodeListDragAndDrop {\n constructor(modelProvider, dnd) {\n this.modelProvider = modelProvider;\n this.dnd = dnd;\n this.autoExpandDisposable = Disposable.None;\n }\n getDragURI(node) {\n return this.dnd.getDragURI(node.element);\n }\n getDragLabel(nodes, originalEvent) {\n if (this.dnd.getDragLabel) {\n return this.dnd.getDragLabel(nodes.map(node => node.element), originalEvent);\n }\n return undefined;\n }\n onDragStart(data, originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, asTreeDragAndDropData(data), originalEvent);\n }\n onDragOver(data, targetNode, targetIndex, originalEvent, raw = true) {\n const result = this.dnd.onDragOver(asTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n const didChangeAutoExpandNode = this.autoExpandNode !== targetNode;\n if (didChangeAutoExpandNode) {\n this.autoExpandDisposable.dispose();\n this.autoExpandNode = targetNode;\n }\n if (typeof targetNode === 'undefined') {\n return result;\n }\n if (didChangeAutoExpandNode && typeof result !== 'boolean' && result.autoExpand) {\n this.autoExpandDisposable = disposableTimeout(() => {\n const model = this.modelProvider();\n const ref = model.getNodeLocation(targetNode);\n if (model.isCollapsed(ref)) {\n model.setCollapsed(ref, false);\n }\n this.autoExpandNode = undefined;\n }, 500);\n }\n if (typeof result === 'boolean' || !result.accept || typeof result.bubble === 'undefined' || result.feedback) {\n if (!raw) {\n const accept = typeof result === 'boolean' ? result : result.accept;\n const effect = typeof result === 'boolean' ? undefined : result.effect;\n return { accept, effect, feedback: [targetIndex] };\n }\n return result;\n }\n if (result.bubble === 1 /* TreeDragOverBubble.Up */) {\n const model = this.modelProvider();\n const ref = model.getNodeLocation(targetNode);\n const parentRef = model.getParentNodeLocation(ref);\n const parentNode = model.getNode(parentRef);\n const parentIndex = parentRef && model.getListIndex(parentRef);\n return this.onDragOver(data, parentNode, parentIndex, originalEvent, false);\n }\n const model = this.modelProvider();\n const ref = model.getNodeLocation(targetNode);\n const start = model.getListIndex(ref);\n const length = model.getListRenderCount(ref);\n return Object.assign(Object.assign({}, result), { feedback: range(start, start + length) });\n }\n drop(data, targetNode, targetIndex, originalEvent) {\n this.autoExpandDisposable.dispose();\n this.autoExpandNode = undefined;\n this.dnd.drop(asTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n }\n onDragEnd(originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, originalEvent);\n }\n}\nfunction asListOptions(modelProvider, options) {\n return options && Object.assign(Object.assign({}, options), { identityProvider: options.identityProvider && {\n getId(el) {\n return options.identityProvider.getId(el.element);\n }\n }, dnd: options.dnd && new TreeNodeListDragAndDrop(modelProvider, options.dnd), multipleSelectionController: options.multipleSelectionController && {\n isSelectionSingleChangeEvent(e) {\n return options.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n },\n isSelectionRangeChangeEvent(e) {\n return options.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n }\n }, accessibilityProvider: options.accessibilityProvider && Object.assign(Object.assign({}, options.accessibilityProvider), { getSetSize(node) {\n const model = modelProvider();\n const ref = model.getNodeLocation(node);\n const parentRef = model.getParentNodeLocation(ref);\n const parentNode = model.getNode(parentRef);\n return parentNode.visibleChildrenCount;\n },\n getPosInSet(node) {\n return node.visibleChildIndex + 1;\n }, isChecked: options.accessibilityProvider && options.accessibilityProvider.isChecked ? (node) => {\n return options.accessibilityProvider.isChecked(node.element);\n } : undefined, getRole: options.accessibilityProvider && options.accessibilityProvider.getRole ? (node) => {\n return options.accessibilityProvider.getRole(node.element);\n } : () => 'treeitem', getAriaLabel(e) {\n return options.accessibilityProvider.getAriaLabel(e.element);\n },\n getWidgetAriaLabel() {\n return options.accessibilityProvider.getWidgetAriaLabel();\n }, getWidgetRole: options.accessibilityProvider && options.accessibilityProvider.getWidgetRole ? () => options.accessibilityProvider.getWidgetRole() : () => 'tree', getAriaLevel: options.accessibilityProvider && options.accessibilityProvider.getAriaLevel ? (node) => options.accessibilityProvider.getAriaLevel(node.element) : (node) => {\n return node.depth;\n }, getActiveDescendantId: options.accessibilityProvider.getActiveDescendantId && (node => {\n return options.accessibilityProvider.getActiveDescendantId(node.element);\n }) }), keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, options.keyboardNavigationLabelProvider), { getKeyboardNavigationLabel(node) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(node.element);\n } }) });\n}\nexport class ComposedTreeDelegate {\n constructor(delegate) {\n this.delegate = delegate;\n }\n getHeight(element) {\n return this.delegate.getHeight(element.element);\n }\n getTemplateId(element) {\n return this.delegate.getTemplateId(element.element);\n }\n hasDynamicHeight(element) {\n return !!this.delegate.hasDynamicHeight && this.delegate.hasDynamicHeight(element.element);\n }\n setDynamicHeight(element, height) {\n var _a, _b;\n (_b = (_a = this.delegate).setDynamicHeight) === null || _b === void 0 ? void 0 : _b.call(_a, element.element, height);\n }\n}\nexport var RenderIndentGuides;\n(function (RenderIndentGuides) {\n RenderIndentGuides[\"None\"] = \"none\";\n RenderIndentGuides[\"OnHover\"] = \"onHover\";\n RenderIndentGuides[\"Always\"] = \"always\";\n})(RenderIndentGuides || (RenderIndentGuides = {}));\nclass EventCollection {\n constructor(onDidChange, _elements = []) {\n this._elements = _elements;\n this.disposables = new DisposableStore();\n this.onDidChange = Event.forEach(onDidChange, elements => this._elements = elements, this.disposables);\n }\n get elements() {\n return this._elements;\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nclass TreeRenderer {\n constructor(renderer, modelProvider, onDidChangeCollapseState, activeNodes, options = {}) {\n var _a;\n this.renderer = renderer;\n this.modelProvider = modelProvider;\n this.activeNodes = activeNodes;\n this.renderedElements = new Map();\n this.renderedNodes = new Map();\n this.indent = TreeRenderer.DefaultIndent;\n this.hideTwistiesOfChildlessElements = false;\n this.shouldRenderIndentGuides = false;\n this.renderedIndentGuides = new SetMap();\n this.activeIndentNodes = new Set();\n this.indentGuidesDisposable = Disposable.None;\n this.disposables = new DisposableStore();\n this.templateId = renderer.templateId;\n this.updateOptions(options);\n Event.map(onDidChangeCollapseState, e => e.node)(this.onDidChangeNodeTwistieState, this, this.disposables);\n (_a = renderer.onDidChangeTwistieState) === null || _a === void 0 ? void 0 : _a.call(renderer, this.onDidChangeTwistieState, this, this.disposables);\n }\n updateOptions(options = {}) {\n if (typeof options.indent !== 'undefined') {\n this.indent = clamp(options.indent, 0, 40);\n }\n if (typeof options.renderIndentGuides !== 'undefined') {\n const shouldRenderIndentGuides = options.renderIndentGuides !== RenderIndentGuides.None;\n if (shouldRenderIndentGuides !== this.shouldRenderIndentGuides) {\n this.shouldRenderIndentGuides = shouldRenderIndentGuides;\n this.indentGuidesDisposable.dispose();\n if (shouldRenderIndentGuides) {\n const disposables = new DisposableStore();\n this.activeNodes.onDidChange(this._onDidChangeActiveNodes, this, disposables);\n this.indentGuidesDisposable = disposables;\n this._onDidChangeActiveNodes(this.activeNodes.elements);\n }\n }\n }\n if (typeof options.hideTwistiesOfChildlessElements !== 'undefined') {\n this.hideTwistiesOfChildlessElements = options.hideTwistiesOfChildlessElements;\n }\n }\n renderTemplate(container) {\n const el = append(container, $('.monaco-tl-row'));\n const indent = append(el, $('.monaco-tl-indent'));\n const twistie = append(el, $('.monaco-tl-twistie'));\n const contents = append(el, $('.monaco-tl-contents'));\n const templateData = this.renderer.renderTemplate(contents);\n return { container, indent, twistie, indentGuidesDisposable: Disposable.None, templateData };\n }\n renderElement(node, index, templateData, height) {\n if (typeof height === 'number') {\n this.renderedNodes.set(node, { templateData, height });\n this.renderedElements.set(node.element, node);\n }\n const indent = TreeRenderer.DefaultIndent + (node.depth - 1) * this.indent;\n templateData.twistie.style.paddingLeft = `${indent}px`;\n templateData.indent.style.width = `${indent + this.indent - 16}px`;\n this.renderTwistie(node, templateData);\n if (typeof height === 'number') {\n this.renderIndentGuides(node, templateData);\n }\n this.renderer.renderElement(node, index, templateData.templateData, height);\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b;\n templateData.indentGuidesDisposable.dispose();\n (_b = (_a = this.renderer).disposeElement) === null || _b === void 0 ? void 0 : _b.call(_a, node, index, templateData.templateData, height);\n if (typeof height === 'number') {\n this.renderedNodes.delete(node);\n this.renderedElements.delete(node.element);\n }\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.templateData);\n }\n onDidChangeTwistieState(element) {\n const node = this.renderedElements.get(element);\n if (!node) {\n return;\n }\n this.onDidChangeNodeTwistieState(node);\n }\n onDidChangeNodeTwistieState(node) {\n const data = this.renderedNodes.get(node);\n if (!data) {\n return;\n }\n this.renderTwistie(node, data.templateData);\n this._onDidChangeActiveNodes(this.activeNodes.elements);\n this.renderIndentGuides(node, data.templateData);\n }\n renderTwistie(node, templateData) {\n templateData.twistie.classList.remove(...Codicon.treeItemExpanded.classNamesArray);\n let twistieRendered = false;\n if (this.renderer.renderTwistie) {\n twistieRendered = this.renderer.renderTwistie(node.element, templateData.twistie);\n }\n if (node.collapsible && (!this.hideTwistiesOfChildlessElements || node.visibleChildrenCount > 0)) {\n if (!twistieRendered) {\n templateData.twistie.classList.add(...Codicon.treeItemExpanded.classNamesArray);\n }\n templateData.twistie.classList.add('collapsible');\n templateData.twistie.classList.toggle('collapsed', node.collapsed);\n }\n else {\n templateData.twistie.classList.remove('collapsible', 'collapsed');\n }\n if (node.collapsible) {\n templateData.container.setAttribute('aria-expanded', String(!node.collapsed));\n }\n else {\n templateData.container.removeAttribute('aria-expanded');\n }\n }\n renderIndentGuides(target, templateData) {\n clearNode(templateData.indent);\n templateData.indentGuidesDisposable.dispose();\n if (!this.shouldRenderIndentGuides) {\n return;\n }\n const disposableStore = new DisposableStore();\n const model = this.modelProvider();\n let node = target;\n while (true) {\n const ref = model.getNodeLocation(node);\n const parentRef = model.getParentNodeLocation(ref);\n if (!parentRef) {\n break;\n }\n const parent = model.getNode(parentRef);\n const guide = $('.indent-guide', { style: `width: ${this.indent}px` });\n if (this.activeIndentNodes.has(parent)) {\n guide.classList.add('active');\n }\n if (templateData.indent.childElementCount === 0) {\n templateData.indent.appendChild(guide);\n }\n else {\n templateData.indent.insertBefore(guide, templateData.indent.firstElementChild);\n }\n this.renderedIndentGuides.add(parent, guide);\n disposableStore.add(toDisposable(() => this.renderedIndentGuides.delete(parent, guide)));\n node = parent;\n }\n templateData.indentGuidesDisposable = disposableStore;\n }\n _onDidChangeActiveNodes(nodes) {\n if (!this.shouldRenderIndentGuides) {\n return;\n }\n const set = new Set();\n const model = this.modelProvider();\n nodes.forEach(node => {\n const ref = model.getNodeLocation(node);\n try {\n const parentRef = model.getParentNodeLocation(ref);\n if (node.collapsible && node.children.length > 0 && !node.collapsed) {\n set.add(node);\n }\n else if (parentRef) {\n set.add(model.getNode(parentRef));\n }\n }\n catch (_a) {\n // noop\n }\n });\n this.activeIndentNodes.forEach(node => {\n if (!set.has(node)) {\n this.renderedIndentGuides.forEach(node, line => line.classList.remove('active'));\n }\n });\n set.forEach(node => {\n if (!this.activeIndentNodes.has(node)) {\n this.renderedIndentGuides.forEach(node, line => line.classList.add('active'));\n }\n });\n this.activeIndentNodes = set;\n }\n dispose() {\n this.renderedNodes.clear();\n this.renderedElements.clear();\n this.indentGuidesDisposable.dispose();\n dispose(this.disposables);\n }\n}\nTreeRenderer.DefaultIndent = 8;\nclass FindFilter {\n constructor(tree, keyboardNavigationLabelProvider, _filter) {\n this.tree = tree;\n this.keyboardNavigationLabelProvider = keyboardNavigationLabelProvider;\n this._filter = _filter;\n this._totalCount = 0;\n this._matchCount = 0;\n this._pattern = '';\n this._lowercasePattern = '';\n this.disposables = new DisposableStore();\n tree.onWillRefilter(this.reset, this, this.disposables);\n }\n get totalCount() { return this._totalCount; }\n get matchCount() { return this._matchCount; }\n filter(element, parentVisibility) {\n let visibility = 1 /* TreeVisibility.Visible */;\n if (this._filter) {\n const result = this._filter.filter(element, parentVisibility);\n if (typeof result === 'boolean') {\n visibility = result ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */;\n }\n else if (isFilterResult(result)) {\n visibility = getVisibleState(result.visibility);\n }\n else {\n visibility = result;\n }\n if (visibility === 0 /* TreeVisibility.Hidden */) {\n return false;\n }\n }\n this._totalCount++;\n if (!this._pattern) {\n this._matchCount++;\n return { data: FuzzyScore.Default, visibility };\n }\n const label = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(element);\n const labels = Array.isArray(label) ? label : [label];\n for (const l of labels) {\n const labelStr = l && l.toString();\n if (typeof labelStr === 'undefined') {\n return { data: FuzzyScore.Default, visibility };\n }\n const score = fuzzyScore(this._pattern, this._lowercasePattern, 0, labelStr, labelStr.toLowerCase(), 0, { firstMatchCanBeWeak: true, boostFullMatch: true });\n if (score) {\n this._matchCount++;\n return labels.length === 1 ?\n { data: score, visibility } :\n { data: { label: labelStr, score: score }, visibility };\n }\n }\n if (this.tree.findMode === TreeFindMode.Filter) {\n return 2 /* TreeVisibility.Recurse */;\n }\n else {\n return { data: FuzzyScore.Default, visibility };\n }\n }\n reset() {\n this._totalCount = 0;\n this._matchCount = 0;\n }\n dispose() {\n dispose(this.disposables);\n }\n}\nexport class ModeToggle extends Toggle {\n constructor(opts) {\n var _a;\n super({\n icon: Codicon.filter,\n title: localize('filter', \"Filter\"),\n isChecked: (_a = opts === null || opts === void 0 ? void 0 : opts.isChecked) !== null && _a !== void 0 ? _a : false,\n inputActiveOptionBorder: opts === null || opts === void 0 ? void 0 : opts.inputActiveOptionBorder,\n inputActiveOptionForeground: opts === null || opts === void 0 ? void 0 : opts.inputActiveOptionForeground,\n inputActiveOptionBackground: opts === null || opts === void 0 ? void 0 : opts.inputActiveOptionBackground\n });\n }\n}\nexport var TreeFindMode;\n(function (TreeFindMode) {\n TreeFindMode[TreeFindMode[\"Highlight\"] = 0] = \"Highlight\";\n TreeFindMode[TreeFindMode[\"Filter\"] = 1] = \"Filter\";\n})(TreeFindMode || (TreeFindMode = {}));\nclass FindWidget extends Disposable {\n constructor(container, tree, contextViewProvider, mode, options) {\n super();\n this.tree = tree;\n this.elements = h('.monaco-tree-type-filter', [\n h('.monaco-tree-type-filter-grab.codicon.codicon-debug-gripper@grab', { tabIndex: 0 }),\n h('.monaco-tree-type-filter-input@findInput'),\n h('.monaco-tree-type-filter-actionbar@actionbar'),\n ]);\n this.width = 0;\n this.right = 0;\n this._onDidDisable = new Emitter();\n container.appendChild(this.elements.root);\n this._register(toDisposable(() => container.removeChild(this.elements.root)));\n this.modeToggle = this._register(new ModeToggle(Object.assign(Object.assign({}, options), { isChecked: mode === TreeFindMode.Filter })));\n this.onDidChangeMode = Event.map(this.modeToggle.onChange, () => this.modeToggle.checked ? TreeFindMode.Filter : TreeFindMode.Highlight, this._store);\n this.findInput = this._register(new FindInput(this.elements.findInput, contextViewProvider, false, {\n label: localize('type to search', \"Type to search\"),\n additionalToggles: [this.modeToggle]\n }));\n this.actionbar = this._register(new ActionBar(this.elements.actionbar));\n this.mode = mode;\n const emitter = this._register(new DomEmitter(this.findInput.inputBox.inputElement, 'keydown'));\n const onKeyDown = this._register(Event.chain(emitter.event))\n .map(e => new StandardKeyboardEvent(e))\n .event;\n this._register(onKeyDown((e) => {\n switch (e.keyCode) {\n case 18 /* KeyCode.DownArrow */:\n e.preventDefault();\n e.stopPropagation();\n this.tree.domFocus();\n return;\n }\n }));\n const closeAction = this._register(new Action('close', localize('close', \"Close\"), 'codicon codicon-close', true, () => this.dispose()));\n this.actionbar.push(closeAction, { icon: true, label: false });\n const onGrabMouseDown = this._register(new DomEmitter(this.elements.grab, 'mousedown'));\n this._register(onGrabMouseDown.event(e => {\n const disposables = new DisposableStore();\n const onWindowMouseMove = disposables.add(new DomEmitter(window, 'mousemove'));\n const onWindowMouseUp = disposables.add(new DomEmitter(window, 'mouseup'));\n const startRight = this.right;\n const startX = e.pageX;\n this.elements.grab.classList.add('grabbing');\n const update = (e) => {\n const deltaX = e.pageX - startX;\n this.right = startRight - deltaX;\n this.layout();\n };\n disposables.add(onWindowMouseMove.event(update));\n disposables.add(onWindowMouseUp.event(e => {\n update(e);\n this.elements.grab.classList.remove('grabbing');\n disposables.dispose();\n }));\n }));\n const onGrabKeyDown = this._register(Event.chain(this._register(new DomEmitter(this.elements.grab, 'keydown')).event))\n .map(e => new StandardKeyboardEvent(e))\n .event;\n this._register(onGrabKeyDown((e) => {\n let right;\n if (e.keyCode === 15 /* KeyCode.LeftArrow */) {\n right = Number.POSITIVE_INFINITY;\n }\n else if (e.keyCode === 17 /* KeyCode.RightArrow */) {\n right = 0;\n }\n else if (e.keyCode === 10 /* KeyCode.Space */) {\n right = this.right === 0 ? Number.POSITIVE_INFINITY : 0;\n }\n if (right !== undefined) {\n e.preventDefault();\n e.stopPropagation();\n this.right = right;\n this.layout();\n }\n }));\n this.onDidChangeValue = this.findInput.onDidChange;\n this.style(options !== null && options !== void 0 ? options : {});\n }\n set mode(mode) {\n this.modeToggle.checked = mode === TreeFindMode.Filter;\n this.findInput.inputBox.setPlaceHolder(mode === TreeFindMode.Filter ? localize('type to filter', \"Type to filter\") : localize('type to search', \"Type to search\"));\n }\n style(styles) {\n this.findInput.style(styles);\n if (styles.listFilterWidgetBackground) {\n this.elements.root.style.backgroundColor = styles.listFilterWidgetBackground.toString();\n }\n if (styles.listFilterWidgetShadow) {\n this.elements.root.style.boxShadow = `0 0 8px 2px ${styles.listFilterWidgetShadow}`;\n }\n }\n layout(width = this.width) {\n this.width = width;\n this.right = clamp(this.right, 0, Math.max(0, width - 212));\n this.elements.root.style.right = `${this.right}px`;\n }\n showMessage(message) {\n this.findInput.showMessage(message);\n }\n clearMessage() {\n this.findInput.clearMessage();\n }\n dispose() {\n const _super = Object.create(null, {\n dispose: { get: () => super.dispose }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this._onDidDisable.fire();\n this.elements.root.classList.add('disabled');\n yield timeout(300);\n _super.dispose.call(this);\n });\n }\n}\nclass FindController {\n constructor(tree, model, view, filter, contextViewProvider) {\n var _a;\n this.tree = tree;\n this.view = view;\n this.filter = filter;\n this.contextViewProvider = contextViewProvider;\n this._pattern = '';\n this.width = 0;\n this._onDidChangeMode = new Emitter();\n this.onDidChangeMode = this._onDidChangeMode.event;\n this._onDidChangePattern = new Emitter();\n this._onDidChangeOpenState = new Emitter();\n this.onDidChangeOpenState = this._onDidChangeOpenState.event;\n this.enabledDisposables = new DisposableStore();\n this.disposables = new DisposableStore();\n this._mode = (_a = tree.options.defaultFindMode) !== null && _a !== void 0 ? _a : TreeFindMode.Highlight;\n model.onDidSplice(this.onDidSpliceModel, this, this.disposables);\n }\n get pattern() { return this._pattern; }\n get mode() { return this._mode; }\n set mode(mode) {\n if (mode === this._mode) {\n return;\n }\n this._mode = mode;\n if (this.widget) {\n this.widget.mode = this._mode;\n }\n this.tree.refilter();\n this.render();\n this._onDidChangeMode.fire(mode);\n }\n onDidSpliceModel() {\n if (!this.widget || this.pattern.length === 0) {\n return;\n }\n this.tree.refilter();\n this.render();\n }\n render() {\n var _a, _b;\n const noMatches = this.filter.totalCount > 0 && this.filter.matchCount === 0;\n if (this.pattern && noMatches) {\n (_a = this.widget) === null || _a === void 0 ? void 0 : _a.showMessage({ type: 2 /* MessageType.WARNING */, content: localize('not found', \"No elements found.\") });\n }\n else {\n (_b = this.widget) === null || _b === void 0 ? void 0 : _b.clearMessage();\n }\n }\n shouldAllowFocus(node) {\n if (!this.widget || !this.pattern || this._mode === TreeFindMode.Filter) {\n return true;\n }\n if (this.filter.totalCount > 0 && this.filter.matchCount <= 1) {\n return true;\n }\n return !FuzzyScore.isDefault(node.filterData);\n }\n style(styles) {\n var _a;\n this.styles = styles;\n (_a = this.widget) === null || _a === void 0 ? void 0 : _a.style(styles);\n }\n layout(width) {\n var _a;\n this.width = width;\n (_a = this.widget) === null || _a === void 0 ? void 0 : _a.layout(width);\n }\n dispose() {\n this._onDidChangePattern.dispose();\n this.enabledDisposables.dispose();\n this.disposables.dispose();\n }\n}\nfunction asTreeMouseEvent(event) {\n let target = TreeMouseEventTarget.Unknown;\n if (hasParentWithClass(event.browserEvent.target, 'monaco-tl-twistie', 'monaco-tl-row')) {\n target = TreeMouseEventTarget.Twistie;\n }\n else if (hasParentWithClass(event.browserEvent.target, 'monaco-tl-contents', 'monaco-tl-row')) {\n target = TreeMouseEventTarget.Element;\n }\n else if (hasParentWithClass(event.browserEvent.target, 'monaco-tree-type-filter', 'monaco-list')) {\n target = TreeMouseEventTarget.Filter;\n }\n return {\n browserEvent: event.browserEvent,\n element: event.element ? event.element.element : null,\n target\n };\n}\nfunction dfs(node, fn) {\n fn(node);\n node.children.forEach(child => dfs(child, fn));\n}\n/**\n * The trait concept needs to exist at the tree level, because collapsed\n * tree nodes will not be known by the list.\n */\nclass Trait {\n constructor(getFirstViewElementWithTrait, identityProvider) {\n this.getFirstViewElementWithTrait = getFirstViewElementWithTrait;\n this.identityProvider = identityProvider;\n this.nodes = [];\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n }\n get nodeSet() {\n if (!this._nodeSet) {\n this._nodeSet = this.createNodeSet();\n }\n return this._nodeSet;\n }\n set(nodes, browserEvent) {\n if (!(browserEvent === null || browserEvent === void 0 ? void 0 : browserEvent.__forceEvent) && equals(this.nodes, nodes)) {\n return;\n }\n this._set(nodes, false, browserEvent);\n }\n _set(nodes, silent, browserEvent) {\n this.nodes = [...nodes];\n this.elements = undefined;\n this._nodeSet = undefined;\n if (!silent) {\n const that = this;\n this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent });\n }\n }\n get() {\n if (!this.elements) {\n this.elements = this.nodes.map(node => node.element);\n }\n return [...this.elements];\n }\n getNodes() {\n return this.nodes;\n }\n has(node) {\n return this.nodeSet.has(node);\n }\n onDidModelSplice({ insertedNodes, deletedNodes }) {\n if (!this.identityProvider) {\n const set = this.createNodeSet();\n const visit = (node) => set.delete(node);\n deletedNodes.forEach(node => dfs(node, visit));\n this.set([...set.values()]);\n return;\n }\n const deletedNodesIdSet = new Set();\n const deletedNodesVisitor = (node) => deletedNodesIdSet.add(this.identityProvider.getId(node.element).toString());\n deletedNodes.forEach(node => dfs(node, deletedNodesVisitor));\n const insertedNodesMap = new Map();\n const insertedNodesVisitor = (node) => insertedNodesMap.set(this.identityProvider.getId(node.element).toString(), node);\n insertedNodes.forEach(node => dfs(node, insertedNodesVisitor));\n const nodes = [];\n for (const node of this.nodes) {\n const id = this.identityProvider.getId(node.element).toString();\n const wasDeleted = deletedNodesIdSet.has(id);\n if (!wasDeleted) {\n nodes.push(node);\n }\n else {\n const insertedNode = insertedNodesMap.get(id);\n if (insertedNode) {\n nodes.push(insertedNode);\n }\n }\n }\n if (this.nodes.length > 0 && nodes.length === 0) {\n const node = this.getFirstViewElementWithTrait();\n if (node) {\n nodes.push(node);\n }\n }\n this._set(nodes, true);\n }\n createNodeSet() {\n const set = new Set();\n for (const node of this.nodes) {\n set.add(node);\n }\n return set;\n }\n}\nclass TreeNodeListMouseController extends MouseController {\n constructor(list, tree) {\n super(list);\n this.tree = tree;\n }\n onViewPointer(e) {\n if (isButton(e.browserEvent.target) ||\n isInputElement(e.browserEvent.target) ||\n isMonacoEditor(e.browserEvent.target)) {\n return;\n }\n const node = e.element;\n if (!node) {\n return super.onViewPointer(e);\n }\n if (this.isSelectionRangeChangeEvent(e) || this.isSelectionSingleChangeEvent(e)) {\n return super.onViewPointer(e);\n }\n const target = e.browserEvent.target;\n const onTwistie = target.classList.contains('monaco-tl-twistie')\n || (target.classList.contains('monaco-icon-label') && target.classList.contains('folder-icon') && e.browserEvent.offsetX < 16);\n let expandOnlyOnTwistieClick = false;\n if (typeof this.tree.expandOnlyOnTwistieClick === 'function') {\n expandOnlyOnTwistieClick = this.tree.expandOnlyOnTwistieClick(node.element);\n }\n else {\n expandOnlyOnTwistieClick = !!this.tree.expandOnlyOnTwistieClick;\n }\n if (expandOnlyOnTwistieClick && !onTwistie && e.browserEvent.detail !== 2) {\n return super.onViewPointer(e);\n }\n if (!this.tree.expandOnDoubleClick && e.browserEvent.detail === 2) {\n return super.onViewPointer(e);\n }\n if (node.collapsible) {\n const model = this.tree.model; // internal\n const location = model.getNodeLocation(node);\n const recursive = e.browserEvent.altKey;\n this.tree.setFocus([location]);\n model.setCollapsed(location, undefined, recursive);\n if (expandOnlyOnTwistieClick && onTwistie) {\n return;\n }\n }\n super.onViewPointer(e);\n }\n onDoubleClick(e) {\n const onTwistie = e.browserEvent.target.classList.contains('monaco-tl-twistie');\n if (onTwistie || !this.tree.expandOnDoubleClick) {\n return;\n }\n super.onDoubleClick(e);\n }\n}\n/**\n * We use this List subclass to restore selection and focus as nodes\n * get rendered in the list, possibly due to a node expand() call.\n */\nclass TreeNodeList extends List {\n constructor(user, container, virtualDelegate, renderers, focusTrait, selectionTrait, anchorTrait, options) {\n super(user, container, virtualDelegate, renderers, options);\n this.focusTrait = focusTrait;\n this.selectionTrait = selectionTrait;\n this.anchorTrait = anchorTrait;\n }\n createMouseController(options) {\n return new TreeNodeListMouseController(this, options.tree);\n }\n splice(start, deleteCount, elements = []) {\n super.splice(start, deleteCount, elements);\n if (elements.length === 0) {\n return;\n }\n const additionalFocus = [];\n const additionalSelection = [];\n let anchor;\n elements.forEach((node, index) => {\n if (this.focusTrait.has(node)) {\n additionalFocus.push(start + index);\n }\n if (this.selectionTrait.has(node)) {\n additionalSelection.push(start + index);\n }\n if (this.anchorTrait.has(node)) {\n anchor = start + index;\n }\n });\n if (additionalFocus.length > 0) {\n super.setFocus(distinct([...super.getFocus(), ...additionalFocus]));\n }\n if (additionalSelection.length > 0) {\n super.setSelection(distinct([...super.getSelection(), ...additionalSelection]));\n }\n if (typeof anchor === 'number') {\n super.setAnchor(anchor);\n }\n }\n setFocus(indexes, browserEvent, fromAPI = false) {\n super.setFocus(indexes, browserEvent);\n if (!fromAPI) {\n this.focusTrait.set(indexes.map(i => this.element(i)), browserEvent);\n }\n }\n setSelection(indexes, browserEvent, fromAPI = false) {\n super.setSelection(indexes, browserEvent);\n if (!fromAPI) {\n this.selectionTrait.set(indexes.map(i => this.element(i)), browserEvent);\n }\n }\n setAnchor(index, fromAPI = false) {\n super.setAnchor(index);\n if (!fromAPI) {\n if (typeof index === 'undefined') {\n this.anchorTrait.set([]);\n }\n else {\n this.anchorTrait.set([this.element(index)]);\n }\n }\n }\n}\nexport class AbstractTree {\n constructor(_user, container, delegate, renderers, _options = {}) {\n var _a;\n this._user = _user;\n this._options = _options;\n this.eventBufferer = new EventBufferer();\n this.onDidChangeFindOpenState = Event.None;\n this.disposables = new DisposableStore();\n this._onWillRefilter = new Emitter();\n this.onWillRefilter = this._onWillRefilter.event;\n this._onDidUpdateOptions = new Emitter();\n const treeDelegate = new ComposedTreeDelegate(delegate);\n const onDidChangeCollapseStateRelay = new Relay();\n const onDidChangeActiveNodes = new Relay();\n const activeNodes = this.disposables.add(new EventCollection(onDidChangeActiveNodes.event));\n this.renderers = renderers.map(r => new TreeRenderer(r, () => this.model, onDidChangeCollapseStateRelay.event, activeNodes, _options));\n for (const r of this.renderers) {\n this.disposables.add(r);\n }\n let filter;\n if (_options.keyboardNavigationLabelProvider) {\n filter = new FindFilter(this, _options.keyboardNavigationLabelProvider, _options.filter);\n _options = Object.assign(Object.assign({}, _options), { filter: filter }); // TODO need typescript help here\n this.disposables.add(filter);\n }\n this.focus = new Trait(() => this.view.getFocusedElements()[0], _options.identityProvider);\n this.selection = new Trait(() => this.view.getSelectedElements()[0], _options.identityProvider);\n this.anchor = new Trait(() => this.view.getAnchorElement(), _options.identityProvider);\n this.view = new TreeNodeList(_user, container, treeDelegate, this.renderers, this.focus, this.selection, this.anchor, Object.assign(Object.assign({}, asListOptions(() => this.model, _options)), { tree: this }));\n this.model = this.createModel(_user, this.view, _options);\n onDidChangeCollapseStateRelay.input = this.model.onDidChangeCollapseState;\n const onDidModelSplice = Event.forEach(this.model.onDidSplice, e => {\n this.eventBufferer.bufferEvents(() => {\n this.focus.onDidModelSplice(e);\n this.selection.onDidModelSplice(e);\n });\n }, this.disposables);\n // Make sure the `forEach` always runs\n onDidModelSplice(() => null, null, this.disposables);\n // Active nodes can change when the model changes or when focus or selection change.\n // We debounce it with 0 delay since these events may fire in the same stack and we only\n // want to run this once. It also doesn't matter if it runs on the next tick since it's only\n // a nice to have UI feature.\n onDidChangeActiveNodes.input = Event.chain(Event.any(onDidModelSplice, this.focus.onDidChange, this.selection.onDidChange))\n .debounce(() => null, 0)\n .map(() => {\n const set = new Set();\n for (const node of this.focus.getNodes()) {\n set.add(node);\n }\n for (const node of this.selection.getNodes()) {\n set.add(node);\n }\n return [...set.values()];\n }).event;\n if (_options.keyboardSupport !== false) {\n const onKeyDown = Event.chain(this.view.onKeyDown)\n .filter(e => !isInputElement(e.target))\n .map(e => new StandardKeyboardEvent(e));\n onKeyDown.filter(e => e.keyCode === 15 /* KeyCode.LeftArrow */).on(this.onLeftArrow, this, this.disposables);\n onKeyDown.filter(e => e.keyCode === 17 /* KeyCode.RightArrow */).on(this.onRightArrow, this, this.disposables);\n onKeyDown.filter(e => e.keyCode === 10 /* KeyCode.Space */).on(this.onSpace, this, this.disposables);\n }\n if (((_a = _options.findWidgetEnabled) !== null && _a !== void 0 ? _a : true) && _options.keyboardNavigationLabelProvider && _options.contextViewProvider) {\n this.findController = new FindController(this, this.model, this.view, filter, _options.contextViewProvider);\n this.focusNavigationFilter = node => this.findController.shouldAllowFocus(node);\n this.onDidChangeFindOpenState = this.findController.onDidChangeOpenState;\n this.disposables.add(this.findController);\n this.onDidChangeFindMode = this.findController.onDidChangeMode;\n }\n else {\n this.onDidChangeFindMode = Event.None;\n }\n this.styleElement = createStyleSheet(this.view.getHTMLElement());\n this.getHTMLElement().classList.toggle('always', this._options.renderIndentGuides === RenderIndentGuides.Always);\n }\n get onDidChangeFocus() { return this.eventBufferer.wrapEvent(this.focus.onDidChange); }\n get onDidChangeSelection() { return this.eventBufferer.wrapEvent(this.selection.onDidChange); }\n get onMouseDblClick() { return Event.filter(Event.map(this.view.onMouseDblClick, asTreeMouseEvent), e => e.target !== TreeMouseEventTarget.Filter); }\n get onPointer() { return Event.map(this.view.onPointer, asTreeMouseEvent); }\n get onDidFocus() { return this.view.onDidFocus; }\n get onDidChangeModel() { return Event.signal(this.model.onDidSplice); }\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\n get findMode() { var _a, _b; return (_b = (_a = this.findController) === null || _a === void 0 ? void 0 : _a.mode) !== null && _b !== void 0 ? _b : TreeFindMode.Highlight; }\n set findMode(findMode) { if (this.findController) {\n this.findController.mode = findMode;\n } }\n get expandOnDoubleClick() { return typeof this._options.expandOnDoubleClick === 'undefined' ? true : this._options.expandOnDoubleClick; }\n get expandOnlyOnTwistieClick() { return typeof this._options.expandOnlyOnTwistieClick === 'undefined' ? true : this._options.expandOnlyOnTwistieClick; }\n get onDidDispose() { return this.view.onDidDispose; }\n updateOptions(optionsUpdate = {}) {\n this._options = Object.assign(Object.assign({}, this._options), optionsUpdate);\n for (const renderer of this.renderers) {\n renderer.updateOptions(optionsUpdate);\n }\n this.view.updateOptions(this._options);\n this._onDidUpdateOptions.fire(this._options);\n this.getHTMLElement().classList.toggle('always', this._options.renderIndentGuides === RenderIndentGuides.Always);\n }\n get options() {\n return this._options;\n }\n // Widget\n getHTMLElement() {\n return this.view.getHTMLElement();\n }\n get scrollTop() {\n return this.view.scrollTop;\n }\n set scrollTop(scrollTop) {\n this.view.scrollTop = scrollTop;\n }\n domFocus() {\n this.view.domFocus();\n }\n layout(height, width) {\n var _a;\n this.view.layout(height, width);\n if (isNumber(width)) {\n (_a = this.findController) === null || _a === void 0 ? void 0 : _a.layout(width);\n }\n }\n style(styles) {\n var _a;\n const suffix = `.${this.view.domId}`;\n const content = [];\n if (styles.treeIndentGuidesStroke) {\n content.push(`.monaco-list${suffix}:hover .monaco-tl-indent > .indent-guide, .monaco-list${suffix}.always .monaco-tl-indent > .indent-guide { border-color: ${styles.treeIndentGuidesStroke.transparent(0.4)}; }`);\n content.push(`.monaco-list${suffix} .monaco-tl-indent > .indent-guide.active { border-color: ${styles.treeIndentGuidesStroke}; }`);\n }\n this.styleElement.textContent = content.join('\\n');\n (_a = this.findController) === null || _a === void 0 ? void 0 : _a.style(styles);\n this.view.style(styles);\n }\n // Tree navigation\n getParentElement(location) {\n const parentRef = this.model.getParentNodeLocation(location);\n const parentNode = this.model.getNode(parentRef);\n return parentNode.element;\n }\n getFirstElementChild(location) {\n return this.model.getFirstElementChild(location);\n }\n // Tree\n getNode(location) {\n return this.model.getNode(location);\n }\n collapse(location, recursive = false) {\n return this.model.setCollapsed(location, true, recursive);\n }\n expand(location, recursive = false) {\n return this.model.setCollapsed(location, false, recursive);\n }\n isCollapsible(location) {\n return this.model.isCollapsible(location);\n }\n setCollapsible(location, collapsible) {\n return this.model.setCollapsible(location, collapsible);\n }\n isCollapsed(location) {\n return this.model.isCollapsed(location);\n }\n refilter() {\n this._onWillRefilter.fire(undefined);\n this.model.refilter();\n }\n setSelection(elements, browserEvent) {\n const nodes = elements.map(e => this.model.getNode(e));\n this.selection.set(nodes, browserEvent);\n const indexes = elements.map(e => this.model.getListIndex(e)).filter(i => i > -1);\n this.view.setSelection(indexes, browserEvent, true);\n }\n getSelection() {\n return this.selection.get();\n }\n setFocus(elements, browserEvent) {\n const nodes = elements.map(e => this.model.getNode(e));\n this.focus.set(nodes, browserEvent);\n const indexes = elements.map(e => this.model.getListIndex(e)).filter(i => i > -1);\n this.view.setFocus(indexes, browserEvent, true);\n }\n getFocus() {\n return this.focus.get();\n }\n reveal(location, relativeTop) {\n this.model.expandTo(location);\n const index = this.model.getListIndex(location);\n if (index === -1) {\n return;\n }\n this.view.reveal(index, relativeTop);\n }\n // List\n onLeftArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n const nodes = this.view.getFocusedElements();\n if (nodes.length === 0) {\n return;\n }\n const node = nodes[0];\n const location = this.model.getNodeLocation(node);\n const didChange = this.model.setCollapsed(location, true);\n if (!didChange) {\n const parentLocation = this.model.getParentNodeLocation(location);\n if (!parentLocation) {\n return;\n }\n const parentListIndex = this.model.getListIndex(parentLocation);\n this.view.reveal(parentListIndex);\n this.view.setFocus([parentListIndex]);\n }\n }\n onRightArrow(e) {\n e.preventDefault();\n e.stopPropagation();\n const nodes = this.view.getFocusedElements();\n if (nodes.length === 0) {\n return;\n }\n const node = nodes[0];\n const location = this.model.getNodeLocation(node);\n const didChange = this.model.setCollapsed(location, false);\n if (!didChange) {\n if (!node.children.some(child => child.visible)) {\n return;\n }\n const [focusedIndex] = this.view.getFocus();\n const firstChildIndex = focusedIndex + 1;\n this.view.reveal(firstChildIndex);\n this.view.setFocus([firstChildIndex]);\n }\n }\n onSpace(e) {\n e.preventDefault();\n e.stopPropagation();\n const nodes = this.view.getFocusedElements();\n if (nodes.length === 0) {\n return;\n }\n const node = nodes[0];\n const location = this.model.getNodeLocation(node);\n const recursive = e.browserEvent.altKey;\n this.model.setCollapsed(location, undefined, recursive);\n }\n dispose() {\n dispose(this.disposables);\n this.view.dispose();\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IndexTreeModel } from './indexTreeModel.js';\nimport { TreeError } from './tree.js';\nimport { Iterable } from '../../../common/iterator.js';\nexport class ObjectTreeModel {\n constructor(user, list, options = {}) {\n this.user = user;\n this.rootRef = null;\n this.nodes = new Map();\n this.nodesByIdentity = new Map();\n this.model = new IndexTreeModel(user, list, null, options);\n this.onDidSplice = this.model.onDidSplice;\n this.onDidChangeCollapseState = this.model.onDidChangeCollapseState;\n this.onDidChangeRenderNodeCount = this.model.onDidChangeRenderNodeCount;\n if (options.sorter) {\n this.sorter = {\n compare(a, b) {\n return options.sorter.compare(a.element, b.element);\n }\n };\n }\n this.identityProvider = options.identityProvider;\n }\n setChildren(element, children = Iterable.empty(), options = {}) {\n const location = this.getElementLocation(element);\n this._setChildren(location, this.preserveCollapseState(children), options);\n }\n _setChildren(location, children = Iterable.empty(), options) {\n const insertedElements = new Set();\n const insertedElementIds = new Set();\n const onDidCreateNode = (node) => {\n var _a;\n if (node.element === null) {\n return;\n }\n const tnode = node;\n insertedElements.add(tnode.element);\n this.nodes.set(tnode.element, tnode);\n if (this.identityProvider) {\n const id = this.identityProvider.getId(tnode.element).toString();\n insertedElementIds.add(id);\n this.nodesByIdentity.set(id, tnode);\n }\n (_a = options.onDidCreateNode) === null || _a === void 0 ? void 0 : _a.call(options, tnode);\n };\n const onDidDeleteNode = (node) => {\n var _a;\n if (node.element === null) {\n return;\n }\n const tnode = node;\n if (!insertedElements.has(tnode.element)) {\n this.nodes.delete(tnode.element);\n }\n if (this.identityProvider) {\n const id = this.identityProvider.getId(tnode.element).toString();\n if (!insertedElementIds.has(id)) {\n this.nodesByIdentity.delete(id);\n }\n }\n (_a = options.onDidDeleteNode) === null || _a === void 0 ? void 0 : _a.call(options, tnode);\n };\n this.model.splice([...location, 0], Number.MAX_VALUE, children, Object.assign(Object.assign({}, options), { onDidCreateNode, onDidDeleteNode }));\n }\n preserveCollapseState(elements = Iterable.empty()) {\n if (this.sorter) {\n elements = [...elements].sort(this.sorter.compare.bind(this.sorter));\n }\n return Iterable.map(elements, treeElement => {\n let node = this.nodes.get(treeElement.element);\n if (!node && this.identityProvider) {\n const id = this.identityProvider.getId(treeElement.element).toString();\n node = this.nodesByIdentity.get(id);\n }\n if (!node) {\n return Object.assign(Object.assign({}, treeElement), { children: this.preserveCollapseState(treeElement.children) });\n }\n const collapsible = typeof treeElement.collapsible === 'boolean' ? treeElement.collapsible : node.collapsible;\n const collapsed = typeof treeElement.collapsed !== 'undefined' ? treeElement.collapsed : node.collapsed;\n return Object.assign(Object.assign({}, treeElement), { collapsible,\n collapsed, children: this.preserveCollapseState(treeElement.children) });\n });\n }\n rerender(element) {\n const location = this.getElementLocation(element);\n this.model.rerender(location);\n }\n getFirstElementChild(ref = null) {\n const location = this.getElementLocation(ref);\n return this.model.getFirstElementChild(location);\n }\n has(element) {\n return this.nodes.has(element);\n }\n getListIndex(element) {\n const location = this.getElementLocation(element);\n return this.model.getListIndex(location);\n }\n getListRenderCount(element) {\n const location = this.getElementLocation(element);\n return this.model.getListRenderCount(location);\n }\n isCollapsible(element) {\n const location = this.getElementLocation(element);\n return this.model.isCollapsible(location);\n }\n setCollapsible(element, collapsible) {\n const location = this.getElementLocation(element);\n return this.model.setCollapsible(location, collapsible);\n }\n isCollapsed(element) {\n const location = this.getElementLocation(element);\n return this.model.isCollapsed(location);\n }\n setCollapsed(element, collapsed, recursive) {\n const location = this.getElementLocation(element);\n return this.model.setCollapsed(location, collapsed, recursive);\n }\n expandTo(element) {\n const location = this.getElementLocation(element);\n this.model.expandTo(location);\n }\n refilter() {\n this.model.refilter();\n }\n getNode(element = null) {\n if (element === null) {\n return this.model.getNode(this.model.rootRef);\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new TreeError(this.user, `Tree element not found: ${element}`);\n }\n return node;\n }\n getNodeLocation(node) {\n return node.element;\n }\n getParentNodeLocation(element) {\n if (element === null) {\n throw new TreeError(this.user, `Invalid getParentNodeLocation call`);\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new TreeError(this.user, `Tree element not found: ${element}`);\n }\n const location = this.model.getNodeLocation(node);\n const parentLocation = this.model.getParentNodeLocation(location);\n const parent = this.model.getNode(parentLocation);\n return parent.element;\n }\n getElementLocation(element) {\n if (element === null) {\n return [];\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new TreeError(this.user, `Tree element not found: ${element}`);\n }\n return this.model.getNodeLocation(node);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { ObjectTreeModel } from './objectTreeModel.js';\nimport { TreeError, WeakMapper } from './tree.js';\nimport { Event } from '../../../common/event.js';\nimport { Iterable } from '../../../common/iterator.js';\nfunction noCompress(element) {\n const elements = [element.element];\n const incompressible = element.incompressible || false;\n return {\n element: { elements, incompressible },\n children: Iterable.map(Iterable.from(element.children), noCompress),\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n}\n// Exported only for test reasons, do not use directly\nexport function compress(element) {\n const elements = [element.element];\n const incompressible = element.incompressible || false;\n let childrenIterator;\n let children;\n while (true) {\n [children, childrenIterator] = Iterable.consume(Iterable.from(element.children), 2);\n if (children.length !== 1) {\n break;\n }\n if (children[0].incompressible) {\n break;\n }\n element = children[0];\n elements.push(element.element);\n }\n return {\n element: { elements, incompressible },\n children: Iterable.map(Iterable.concat(children, childrenIterator), compress),\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n}\nfunction _decompress(element, index = 0) {\n let children;\n if (index < element.element.elements.length - 1) {\n children = [_decompress(element, index + 1)];\n }\n else {\n children = Iterable.map(Iterable.from(element.children), el => _decompress(el, 0));\n }\n if (index === 0 && element.element.incompressible) {\n return {\n element: element.element.elements[index],\n children,\n incompressible: true,\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n }\n return {\n element: element.element.elements[index],\n children,\n collapsible: element.collapsible,\n collapsed: element.collapsed\n };\n}\n// Exported only for test reasons, do not use directly\nexport function decompress(element) {\n return _decompress(element, 0);\n}\nfunction splice(treeElement, element, children) {\n if (treeElement.element === element) {\n return Object.assign(Object.assign({}, treeElement), { children });\n }\n return Object.assign(Object.assign({}, treeElement), { children: Iterable.map(Iterable.from(treeElement.children), e => splice(e, element, children)) });\n}\nconst wrapIdentityProvider = (base) => ({\n getId(node) {\n return node.elements.map(e => base.getId(e).toString()).join('\\0');\n }\n});\n// Exported only for test reasons, do not use directly\nexport class CompressedObjectTreeModel {\n constructor(user, list, options = {}) {\n this.user = user;\n this.rootRef = null;\n this.nodes = new Map();\n this.model = new ObjectTreeModel(user, list, options);\n this.enabled = typeof options.compressionEnabled === 'undefined' ? true : options.compressionEnabled;\n this.identityProvider = options.identityProvider;\n }\n get onDidSplice() { return this.model.onDidSplice; }\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\n get onDidChangeRenderNodeCount() { return this.model.onDidChangeRenderNodeCount; }\n setChildren(element, children = Iterable.empty(), options) {\n // Diffs must be deem, since the compression can affect nested elements.\n // @see https://github.com/microsoft/vscode/pull/114237#issuecomment-759425034\n const diffIdentityProvider = options.diffIdentityProvider && wrapIdentityProvider(options.diffIdentityProvider);\n if (element === null) {\n const compressedChildren = Iterable.map(children, this.enabled ? compress : noCompress);\n this._setChildren(null, compressedChildren, { diffIdentityProvider, diffDepth: Infinity });\n return;\n }\n const compressedNode = this.nodes.get(element);\n if (!compressedNode) {\n throw new Error('Unknown compressed tree node');\n }\n const node = this.model.getNode(compressedNode);\n const compressedParentNode = this.model.getParentNodeLocation(compressedNode);\n const parent = this.model.getNode(compressedParentNode);\n const decompressedElement = decompress(node);\n const splicedElement = splice(decompressedElement, element, children);\n const recompressedElement = (this.enabled ? compress : noCompress)(splicedElement);\n const parentChildren = parent.children\n .map(child => child === node ? recompressedElement : child);\n this._setChildren(parent.element, parentChildren, {\n diffIdentityProvider,\n diffDepth: node.depth - parent.depth,\n });\n }\n setCompressionEnabled(enabled) {\n if (enabled === this.enabled) {\n return;\n }\n this.enabled = enabled;\n const root = this.model.getNode();\n const rootChildren = root.children;\n const decompressedRootChildren = Iterable.map(rootChildren, decompress);\n const recompressedRootChildren = Iterable.map(decompressedRootChildren, enabled ? compress : noCompress);\n // it should be safe to always use deep diff mode here if an identity\n // provider is available, since we know the raw nodes are unchanged.\n this._setChildren(null, recompressedRootChildren, {\n diffIdentityProvider: this.identityProvider,\n diffDepth: Infinity,\n });\n }\n _setChildren(node, children, options) {\n const insertedElements = new Set();\n const onDidCreateNode = (node) => {\n for (const element of node.element.elements) {\n insertedElements.add(element);\n this.nodes.set(element, node.element);\n }\n };\n const onDidDeleteNode = (node) => {\n for (const element of node.element.elements) {\n if (!insertedElements.has(element)) {\n this.nodes.delete(element);\n }\n }\n };\n this.model.setChildren(node, children, Object.assign(Object.assign({}, options), { onDidCreateNode, onDidDeleteNode }));\n }\n has(element) {\n return this.nodes.has(element);\n }\n getListIndex(location) {\n const node = this.getCompressedNode(location);\n return this.model.getListIndex(node);\n }\n getListRenderCount(location) {\n const node = this.getCompressedNode(location);\n return this.model.getListRenderCount(node);\n }\n getNode(location) {\n if (typeof location === 'undefined') {\n return this.model.getNode();\n }\n const node = this.getCompressedNode(location);\n return this.model.getNode(node);\n }\n // TODO: review this\n getNodeLocation(node) {\n const compressedNode = this.model.getNodeLocation(node);\n if (compressedNode === null) {\n return null;\n }\n return compressedNode.elements[compressedNode.elements.length - 1];\n }\n // TODO: review this\n getParentNodeLocation(location) {\n const compressedNode = this.getCompressedNode(location);\n const parentNode = this.model.getParentNodeLocation(compressedNode);\n if (parentNode === null) {\n return null;\n }\n return parentNode.elements[parentNode.elements.length - 1];\n }\n getFirstElementChild(location) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.getFirstElementChild(compressedNode);\n }\n isCollapsible(location) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.isCollapsible(compressedNode);\n }\n setCollapsible(location, collapsible) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.setCollapsible(compressedNode, collapsible);\n }\n isCollapsed(location) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.isCollapsed(compressedNode);\n }\n setCollapsed(location, collapsed, recursive) {\n const compressedNode = this.getCompressedNode(location);\n return this.model.setCollapsed(compressedNode, collapsed, recursive);\n }\n expandTo(location) {\n const compressedNode = this.getCompressedNode(location);\n this.model.expandTo(compressedNode);\n }\n rerender(location) {\n const compressedNode = this.getCompressedNode(location);\n this.model.rerender(compressedNode);\n }\n refilter() {\n this.model.refilter();\n }\n getCompressedNode(element) {\n if (element === null) {\n return null;\n }\n const node = this.nodes.get(element);\n if (!node) {\n throw new TreeError(this.user, `Tree element not found: ${element}`);\n }\n return node;\n }\n}\nexport const DefaultElementMapper = elements => elements[elements.length - 1];\nclass CompressedTreeNodeWrapper {\n constructor(unwrapper, node) {\n this.unwrapper = unwrapper;\n this.node = node;\n }\n get element() { return this.node.element === null ? null : this.unwrapper(this.node.element); }\n get children() { return this.node.children.map(node => new CompressedTreeNodeWrapper(this.unwrapper, node)); }\n get depth() { return this.node.depth; }\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\n get visibleChildIndex() { return this.node.visibleChildIndex; }\n get collapsible() { return this.node.collapsible; }\n get collapsed() { return this.node.collapsed; }\n get visible() { return this.node.visible; }\n get filterData() { return this.node.filterData; }\n}\nfunction mapList(nodeMapper, list) {\n return {\n splice(start, deleteCount, toInsert) {\n list.splice(start, deleteCount, toInsert.map(node => nodeMapper.map(node)));\n },\n updateElementHeight(index, height) {\n list.updateElementHeight(index, height);\n }\n };\n}\nfunction mapOptions(compressedNodeUnwrapper, options) {\n return Object.assign(Object.assign({}, options), { identityProvider: options.identityProvider && {\n getId(node) {\n return options.identityProvider.getId(compressedNodeUnwrapper(node));\n }\n }, sorter: options.sorter && {\n compare(node, otherNode) {\n return options.sorter.compare(node.elements[0], otherNode.elements[0]);\n }\n }, filter: options.filter && {\n filter(node, parentVisibility) {\n return options.filter.filter(compressedNodeUnwrapper(node), parentVisibility);\n }\n } });\n}\nexport class CompressibleObjectTreeModel {\n constructor(user, list, options = {}) {\n this.rootRef = null;\n this.elementMapper = options.elementMapper || DefaultElementMapper;\n const compressedNodeUnwrapper = node => this.elementMapper(node.elements);\n this.nodeMapper = new WeakMapper(node => new CompressedTreeNodeWrapper(compressedNodeUnwrapper, node));\n this.model = new CompressedObjectTreeModel(user, mapList(this.nodeMapper, list), mapOptions(compressedNodeUnwrapper, options));\n }\n get onDidSplice() {\n return Event.map(this.model.onDidSplice, ({ insertedNodes, deletedNodes }) => ({\n insertedNodes: insertedNodes.map(node => this.nodeMapper.map(node)),\n deletedNodes: deletedNodes.map(node => this.nodeMapper.map(node)),\n }));\n }\n get onDidChangeCollapseState() {\n return Event.map(this.model.onDidChangeCollapseState, ({ node, deep }) => ({\n node: this.nodeMapper.map(node),\n deep\n }));\n }\n get onDidChangeRenderNodeCount() {\n return Event.map(this.model.onDidChangeRenderNodeCount, node => this.nodeMapper.map(node));\n }\n setChildren(element, children = Iterable.empty(), options = {}) {\n this.model.setChildren(element, children, options);\n }\n setCompressionEnabled(enabled) {\n this.model.setCompressionEnabled(enabled);\n }\n has(location) {\n return this.model.has(location);\n }\n getListIndex(location) {\n return this.model.getListIndex(location);\n }\n getListRenderCount(location) {\n return this.model.getListRenderCount(location);\n }\n getNode(location) {\n return this.nodeMapper.map(this.model.getNode(location));\n }\n getNodeLocation(node) {\n return node.element;\n }\n getParentNodeLocation(location) {\n return this.model.getParentNodeLocation(location);\n }\n getFirstElementChild(location) {\n const result = this.model.getFirstElementChild(location);\n if (result === null || typeof result === 'undefined') {\n return result;\n }\n return this.elementMapper(result.elements);\n }\n isCollapsible(location) {\n return this.model.isCollapsible(location);\n }\n setCollapsible(location, collapsed) {\n return this.model.setCollapsible(location, collapsed);\n }\n isCollapsed(location) {\n return this.model.isCollapsed(location);\n }\n setCollapsed(location, collapsed, recursive) {\n return this.model.setCollapsed(location, collapsed, recursive);\n }\n expandTo(location) {\n return this.model.expandTo(location);\n }\n rerender(location) {\n return this.model.rerender(location);\n }\n refilter() {\n return this.model.refilter();\n }\n getCompressedTreeNode(location = null) {\n return this.model.getNode(location);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AbstractTree } from './abstractTree.js';\nimport { CompressibleObjectTreeModel } from './compressedObjectTreeModel.js';\nimport { ObjectTreeModel } from './objectTreeModel.js';\nimport { memoize } from '../../../common/decorators.js';\nimport { Iterable } from '../../../common/iterator.js';\nexport class ObjectTree extends AbstractTree {\n constructor(user, container, delegate, renderers, options = {}) {\n super(user, container, delegate, renderers, options);\n this.user = user;\n }\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\n setChildren(element, children = Iterable.empty(), options) {\n this.model.setChildren(element, children, options);\n }\n rerender(element) {\n if (element === undefined) {\n this.view.rerender();\n return;\n }\n this.model.rerender(element);\n }\n hasElement(element) {\n return this.model.has(element);\n }\n createModel(user, view, options) {\n return new ObjectTreeModel(user, view, options);\n }\n}\nclass CompressibleRenderer {\n constructor(_compressedTreeNodeProvider, renderer) {\n this._compressedTreeNodeProvider = _compressedTreeNodeProvider;\n this.renderer = renderer;\n this.templateId = renderer.templateId;\n if (renderer.onDidChangeTwistieState) {\n this.onDidChangeTwistieState = renderer.onDidChangeTwistieState;\n }\n }\n get compressedTreeNodeProvider() {\n return this._compressedTreeNodeProvider();\n }\n renderTemplate(container) {\n const data = this.renderer.renderTemplate(container);\n return { compressedTreeNode: undefined, data };\n }\n renderElement(node, index, templateData, height) {\n const compressedTreeNode = this.compressedTreeNodeProvider.getCompressedTreeNode(node.element);\n if (compressedTreeNode.element.elements.length === 1) {\n templateData.compressedTreeNode = undefined;\n this.renderer.renderElement(node, index, templateData.data, height);\n }\n else {\n templateData.compressedTreeNode = compressedTreeNode;\n this.renderer.renderCompressedElements(compressedTreeNode, index, templateData.data, height);\n }\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b, _c, _d;\n if (templateData.compressedTreeNode) {\n (_b = (_a = this.renderer).disposeCompressedElements) === null || _b === void 0 ? void 0 : _b.call(_a, templateData.compressedTreeNode, index, templateData.data, height);\n }\n else {\n (_d = (_c = this.renderer).disposeElement) === null || _d === void 0 ? void 0 : _d.call(_c, node, index, templateData.data, height);\n }\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.data);\n }\n renderTwistie(element, twistieElement) {\n if (this.renderer.renderTwistie) {\n return this.renderer.renderTwistie(element, twistieElement);\n }\n return false;\n }\n}\n__decorate([\n memoize\n], CompressibleRenderer.prototype, \"compressedTreeNodeProvider\", null);\nfunction asObjectTreeOptions(compressedTreeNodeProvider, options) {\n return options && Object.assign(Object.assign({}, options), { keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && {\n getKeyboardNavigationLabel(e) {\n let compressedTreeNode;\n try {\n compressedTreeNode = compressedTreeNodeProvider().getCompressedTreeNode(e);\n }\n catch (_a) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);\n }\n if (compressedTreeNode.element.elements.length === 1) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);\n }\n else {\n return options.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(compressedTreeNode.element.elements);\n }\n }\n } });\n}\nexport class CompressibleObjectTree extends ObjectTree {\n constructor(user, container, delegate, renderers, options = {}) {\n const compressedTreeNodeProvider = () => this;\n const compressibleRenderers = renderers.map(r => new CompressibleRenderer(compressedTreeNodeProvider, r));\n super(user, container, delegate, compressibleRenderers, asObjectTreeOptions(compressedTreeNodeProvider, options));\n }\n setChildren(element, children = Iterable.empty(), options) {\n this.model.setChildren(element, children, options);\n }\n createModel(user, view, options) {\n return new CompressibleObjectTreeModel(user, view, options);\n }\n updateOptions(optionsUpdate = {}) {\n super.updateOptions(optionsUpdate);\n if (typeof optionsUpdate.compressionEnabled !== 'undefined') {\n this.model.setCompressionEnabled(optionsUpdate.compressionEnabled);\n }\n }\n getCompressedTreeNode(element = null) {\n return this.model.getCompressedTreeNode(element);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { ElementsDragAndDropData } from '../list/listView.js';\nimport { ComposedTreeDelegate } from './abstractTree.js';\nimport { getVisibleState, isFilterResult } from './indexTreeModel.js';\nimport { CompressibleObjectTree, ObjectTree } from './objectTree.js';\nimport { TreeError, WeakMapper } from './tree.js';\nimport { createCancelablePromise, Promises, timeout } from '../../../common/async.js';\nimport { Codicon } from '../../../common/codicons.js';\nimport { isCancellationError, onUnexpectedError } from '../../../common/errors.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { Iterable } from '../../../common/iterator.js';\nimport { DisposableStore, dispose } from '../../../common/lifecycle.js';\nimport { isIterable } from '../../../common/types.js';\nfunction createAsyncDataTreeNode(props) {\n return Object.assign(Object.assign({}, props), { children: [], refreshPromise: undefined, stale: true, slow: false, collapsedByDefault: undefined });\n}\nfunction isAncestor(ancestor, descendant) {\n if (!descendant.parent) {\n return false;\n }\n else if (descendant.parent === ancestor) {\n return true;\n }\n else {\n return isAncestor(ancestor, descendant.parent);\n }\n}\nfunction intersects(node, other) {\n return node === other || isAncestor(node, other) || isAncestor(other, node);\n}\nclass AsyncDataTreeNodeWrapper {\n constructor(node) {\n this.node = node;\n }\n get element() { return this.node.element.element; }\n get children() { return this.node.children.map(node => new AsyncDataTreeNodeWrapper(node)); }\n get depth() { return this.node.depth; }\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\n get visibleChildIndex() { return this.node.visibleChildIndex; }\n get collapsible() { return this.node.collapsible; }\n get collapsed() { return this.node.collapsed; }\n get visible() { return this.node.visible; }\n get filterData() { return this.node.filterData; }\n}\nclass AsyncDataTreeRenderer {\n constructor(renderer, nodeMapper, onDidChangeTwistieState) {\n this.renderer = renderer;\n this.nodeMapper = nodeMapper;\n this.onDidChangeTwistieState = onDidChangeTwistieState;\n this.renderedNodes = new Map();\n this.templateId = renderer.templateId;\n }\n renderTemplate(container) {\n const templateData = this.renderer.renderTemplate(container);\n return { templateData };\n }\n renderElement(node, index, templateData, height) {\n this.renderer.renderElement(this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n renderTwistie(element, twistieElement) {\n if (element.slow) {\n twistieElement.classList.add(...Codicon.treeItemLoading.classNamesArray);\n return true;\n }\n else {\n twistieElement.classList.remove(...Codicon.treeItemLoading.classNamesArray);\n return false;\n }\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b;\n (_b = (_a = this.renderer).disposeElement) === null || _b === void 0 ? void 0 : _b.call(_a, this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.templateData);\n }\n dispose() {\n this.renderedNodes.clear();\n }\n}\nfunction asTreeEvent(e) {\n return {\n browserEvent: e.browserEvent,\n elements: e.elements.map(e => e.element)\n };\n}\nfunction asTreeMouseEvent(e) {\n return {\n browserEvent: e.browserEvent,\n element: e.element && e.element.element,\n target: e.target\n };\n}\nclass AsyncDataTreeElementsDragAndDropData extends ElementsDragAndDropData {\n constructor(data) {\n super(data.elements.map(node => node.element));\n this.data = data;\n }\n}\nfunction asAsyncDataTreeDragAndDropData(data) {\n if (data instanceof ElementsDragAndDropData) {\n return new AsyncDataTreeElementsDragAndDropData(data);\n }\n return data;\n}\nclass AsyncDataTreeNodeListDragAndDrop {\n constructor(dnd) {\n this.dnd = dnd;\n }\n getDragURI(node) {\n return this.dnd.getDragURI(node.element);\n }\n getDragLabel(nodes, originalEvent) {\n if (this.dnd.getDragLabel) {\n return this.dnd.getDragLabel(nodes.map(node => node.element), originalEvent);\n }\n return undefined;\n }\n onDragStart(data, originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragStart) === null || _b === void 0 ? void 0 : _b.call(_a, asAsyncDataTreeDragAndDropData(data), originalEvent);\n }\n onDragOver(data, targetNode, targetIndex, originalEvent, raw = true) {\n return this.dnd.onDragOver(asAsyncDataTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n }\n drop(data, targetNode, targetIndex, originalEvent) {\n this.dnd.drop(asAsyncDataTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\n }\n onDragEnd(originalEvent) {\n var _a, _b;\n (_b = (_a = this.dnd).onDragEnd) === null || _b === void 0 ? void 0 : _b.call(_a, originalEvent);\n }\n}\nfunction asObjectTreeOptions(options) {\n return options && Object.assign(Object.assign({}, options), { collapseByDefault: true, identityProvider: options.identityProvider && {\n getId(el) {\n return options.identityProvider.getId(el.element);\n }\n }, dnd: options.dnd && new AsyncDataTreeNodeListDragAndDrop(options.dnd), multipleSelectionController: options.multipleSelectionController && {\n isSelectionSingleChangeEvent(e) {\n return options.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n },\n isSelectionRangeChangeEvent(e) {\n return options.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\n }\n }, accessibilityProvider: options.accessibilityProvider && Object.assign(Object.assign({}, options.accessibilityProvider), { getPosInSet: undefined, getSetSize: undefined, getRole: options.accessibilityProvider.getRole ? (el) => {\n return options.accessibilityProvider.getRole(el.element);\n } : () => 'treeitem', isChecked: options.accessibilityProvider.isChecked ? (e) => {\n var _a;\n return !!((_a = options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.isChecked(e.element));\n } : undefined, getAriaLabel(e) {\n return options.accessibilityProvider.getAriaLabel(e.element);\n },\n getWidgetAriaLabel() {\n return options.accessibilityProvider.getWidgetAriaLabel();\n }, getWidgetRole: options.accessibilityProvider.getWidgetRole ? () => options.accessibilityProvider.getWidgetRole() : () => 'tree', getAriaLevel: options.accessibilityProvider.getAriaLevel && (node => {\n return options.accessibilityProvider.getAriaLevel(node.element);\n }), getActiveDescendantId: options.accessibilityProvider.getActiveDescendantId && (node => {\n return options.accessibilityProvider.getActiveDescendantId(node.element);\n }) }), filter: options.filter && {\n filter(e, parentVisibility) {\n return options.filter.filter(e.element, parentVisibility);\n }\n }, keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, options.keyboardNavigationLabelProvider), { getKeyboardNavigationLabel(e) {\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element);\n } }), sorter: undefined, expandOnlyOnTwistieClick: typeof options.expandOnlyOnTwistieClick === 'undefined' ? undefined : (typeof options.expandOnlyOnTwistieClick !== 'function' ? options.expandOnlyOnTwistieClick : (e => options.expandOnlyOnTwistieClick(e.element))), additionalScrollHeight: options.additionalScrollHeight });\n}\nfunction dfs(node, fn) {\n fn(node);\n node.children.forEach(child => dfs(child, fn));\n}\nexport class AsyncDataTree {\n constructor(user, container, delegate, renderers, dataSource, options = {}) {\n this.user = user;\n this.dataSource = dataSource;\n this.nodes = new Map();\n this.subTreeRefreshPromises = new Map();\n this.refreshPromises = new Map();\n this._onDidRender = new Emitter();\n this._onDidChangeNodeSlowState = new Emitter();\n this.nodeMapper = new WeakMapper(node => new AsyncDataTreeNodeWrapper(node));\n this.disposables = new DisposableStore();\n this.identityProvider = options.identityProvider;\n this.autoExpandSingleChildren = typeof options.autoExpandSingleChildren === 'undefined' ? false : options.autoExpandSingleChildren;\n this.sorter = options.sorter;\n this.collapseByDefault = options.collapseByDefault;\n this.tree = this.createTree(user, container, delegate, renderers, options);\n this.onDidChangeFindMode = this.tree.onDidChangeFindMode;\n this.root = createAsyncDataTreeNode({\n element: undefined,\n parent: null,\n hasChildren: true\n });\n if (this.identityProvider) {\n this.root = Object.assign(Object.assign({}, this.root), { id: null });\n }\n this.nodes.set(null, this.root);\n this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState, this, this.disposables);\n }\n get onDidChangeFocus() { return Event.map(this.tree.onDidChangeFocus, asTreeEvent); }\n get onDidChangeSelection() { return Event.map(this.tree.onDidChangeSelection, asTreeEvent); }\n get onMouseDblClick() { return Event.map(this.tree.onMouseDblClick, asTreeMouseEvent); }\n get onPointer() { return Event.map(this.tree.onPointer, asTreeMouseEvent); }\n get onDidFocus() { return this.tree.onDidFocus; }\n get onDidChangeModel() { return this.tree.onDidChangeModel; }\n get onDidChangeCollapseState() { return this.tree.onDidChangeCollapseState; }\n get onDidChangeFindOpenState() { return this.tree.onDidChangeFindOpenState; }\n get onDidDispose() { return this.tree.onDidDispose; }\n createTree(user, container, delegate, renderers, options) {\n const objectTreeDelegate = new ComposedTreeDelegate(delegate);\n const objectTreeRenderers = renderers.map(r => new AsyncDataTreeRenderer(r, this.nodeMapper, this._onDidChangeNodeSlowState.event));\n const objectTreeOptions = asObjectTreeOptions(options) || {};\n return new ObjectTree(user, container, objectTreeDelegate, objectTreeRenderers, objectTreeOptions);\n }\n updateOptions(options = {}) {\n this.tree.updateOptions(options);\n }\n // Widget\n getHTMLElement() {\n return this.tree.getHTMLElement();\n }\n get scrollTop() {\n return this.tree.scrollTop;\n }\n set scrollTop(scrollTop) {\n this.tree.scrollTop = scrollTop;\n }\n domFocus() {\n this.tree.domFocus();\n }\n layout(height, width) {\n this.tree.layout(height, width);\n }\n style(styles) {\n this.tree.style(styles);\n }\n // Model\n getInput() {\n return this.root.element;\n }\n setInput(input, viewState) {\n return __awaiter(this, void 0, void 0, function* () {\n this.refreshPromises.forEach(promise => promise.cancel());\n this.refreshPromises.clear();\n this.root.element = input;\n const viewStateContext = viewState && { viewState, focus: [], selection: [] };\n yield this._updateChildren(input, true, false, viewStateContext);\n if (viewStateContext) {\n this.tree.setFocus(viewStateContext.focus);\n this.tree.setSelection(viewStateContext.selection);\n }\n if (viewState && typeof viewState.scrollTop === 'number') {\n this.scrollTop = viewState.scrollTop;\n }\n });\n }\n _updateChildren(element = this.root.element, recursive = true, rerender = false, viewStateContext, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof this.root.element === 'undefined') {\n throw new TreeError(this.user, 'Tree input not set');\n }\n if (this.root.refreshPromise) {\n yield this.root.refreshPromise;\n yield Event.toPromise(this._onDidRender.event);\n }\n const node = this.getDataNode(element);\n yield this.refreshAndRenderNode(node, recursive, viewStateContext, options);\n if (rerender) {\n try {\n this.tree.rerender(node);\n }\n catch (_a) {\n // missing nodes are fine, this could've resulted from\n // parallel refresh calls, removing `node` altogether\n }\n }\n });\n }\n // View\n rerender(element) {\n if (element === undefined || element === this.root.element) {\n this.tree.rerender();\n return;\n }\n const node = this.getDataNode(element);\n this.tree.rerender(node);\n }\n // Tree\n getNode(element = this.root.element) {\n const dataNode = this.getDataNode(element);\n const node = this.tree.getNode(dataNode === this.root ? null : dataNode);\n return this.nodeMapper.map(node);\n }\n collapse(element, recursive = false) {\n const node = this.getDataNode(element);\n return this.tree.collapse(node === this.root ? null : node, recursive);\n }\n expand(element, recursive = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof this.root.element === 'undefined') {\n throw new TreeError(this.user, 'Tree input not set');\n }\n if (this.root.refreshPromise) {\n yield this.root.refreshPromise;\n yield Event.toPromise(this._onDidRender.event);\n }\n const node = this.getDataNode(element);\n if (this.tree.hasElement(node) && !this.tree.isCollapsible(node)) {\n return false;\n }\n if (node.refreshPromise) {\n yield this.root.refreshPromise;\n yield Event.toPromise(this._onDidRender.event);\n }\n if (node !== this.root && !node.refreshPromise && !this.tree.isCollapsed(node)) {\n return false;\n }\n const result = this.tree.expand(node === this.root ? null : node, recursive);\n if (node.refreshPromise) {\n yield this.root.refreshPromise;\n yield Event.toPromise(this._onDidRender.event);\n }\n return result;\n });\n }\n setSelection(elements, browserEvent) {\n const nodes = elements.map(e => this.getDataNode(e));\n this.tree.setSelection(nodes, browserEvent);\n }\n getSelection() {\n const nodes = this.tree.getSelection();\n return nodes.map(n => n.element);\n }\n setFocus(elements, browserEvent) {\n const nodes = elements.map(e => this.getDataNode(e));\n this.tree.setFocus(nodes, browserEvent);\n }\n getFocus() {\n const nodes = this.tree.getFocus();\n return nodes.map(n => n.element);\n }\n reveal(element, relativeTop) {\n this.tree.reveal(this.getDataNode(element), relativeTop);\n }\n // Tree navigation\n getParentElement(element) {\n const node = this.tree.getParentElement(this.getDataNode(element));\n return (node && node.element);\n }\n getFirstElementChild(element = this.root.element) {\n const dataNode = this.getDataNode(element);\n const node = this.tree.getFirstElementChild(dataNode === this.root ? null : dataNode);\n return (node && node.element);\n }\n // Implementation\n getDataNode(element) {\n const node = this.nodes.get((element === this.root.element ? null : element));\n if (!node) {\n throw new TreeError(this.user, `Data tree node not found: ${element}`);\n }\n return node;\n }\n refreshAndRenderNode(node, recursive, viewStateContext, options) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.refreshNode(node, recursive, viewStateContext);\n this.render(node, viewStateContext, options);\n });\n }\n refreshNode(node, recursive, viewStateContext) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n this.subTreeRefreshPromises.forEach((refreshPromise, refreshNode) => {\n if (!result && intersects(refreshNode, node)) {\n result = refreshPromise.then(() => this.refreshNode(node, recursive, viewStateContext));\n }\n });\n if (result) {\n return result;\n }\n if (node !== this.root) {\n const treeNode = this.tree.getNode(node);\n if (treeNode.collapsed) {\n node.hasChildren = !!this.dataSource.hasChildren(node.element);\n node.stale = true;\n return;\n }\n }\n return this.doRefreshSubTree(node, recursive, viewStateContext);\n });\n }\n doRefreshSubTree(node, recursive, viewStateContext) {\n return __awaiter(this, void 0, void 0, function* () {\n let done;\n node.refreshPromise = new Promise(c => done = c);\n this.subTreeRefreshPromises.set(node, node.refreshPromise);\n node.refreshPromise.finally(() => {\n node.refreshPromise = undefined;\n this.subTreeRefreshPromises.delete(node);\n });\n try {\n const childrenToRefresh = yield this.doRefreshNode(node, recursive, viewStateContext);\n node.stale = false;\n yield Promises.settled(childrenToRefresh.map(child => this.doRefreshSubTree(child, recursive, viewStateContext)));\n }\n finally {\n done();\n }\n });\n }\n doRefreshNode(node, recursive, viewStateContext) {\n return __awaiter(this, void 0, void 0, function* () {\n node.hasChildren = !!this.dataSource.hasChildren(node.element);\n let childrenPromise;\n if (!node.hasChildren) {\n childrenPromise = Promise.resolve(Iterable.empty());\n }\n else {\n const children = this.doGetChildren(node);\n if (isIterable(children)) {\n childrenPromise = Promise.resolve(children);\n }\n else {\n const slowTimeout = timeout(800);\n slowTimeout.then(() => {\n node.slow = true;\n this._onDidChangeNodeSlowState.fire(node);\n }, _ => null);\n childrenPromise = children.finally(() => slowTimeout.cancel());\n }\n }\n try {\n const children = yield childrenPromise;\n return this.setChildren(node, children, recursive, viewStateContext);\n }\n catch (err) {\n if (node !== this.root && this.tree.hasElement(node)) {\n this.tree.collapse(node);\n }\n if (isCancellationError(err)) {\n return [];\n }\n throw err;\n }\n finally {\n if (node.slow) {\n node.slow = false;\n this._onDidChangeNodeSlowState.fire(node);\n }\n }\n });\n }\n doGetChildren(node) {\n let result = this.refreshPromises.get(node);\n if (result) {\n return result;\n }\n const children = this.dataSource.getChildren(node.element);\n if (isIterable(children)) {\n return this.processChildren(children);\n }\n else {\n result = createCancelablePromise(() => __awaiter(this, void 0, void 0, function* () { return this.processChildren(yield children); }));\n this.refreshPromises.set(node, result);\n return result.finally(() => { this.refreshPromises.delete(node); });\n }\n }\n _onDidChangeCollapseState({ node, deep }) {\n if (node.element === null) {\n return;\n }\n if (!node.collapsed && node.element.stale) {\n if (deep) {\n this.collapse(node.element.element);\n }\n else {\n this.refreshAndRenderNode(node.element, false)\n .catch(onUnexpectedError);\n }\n }\n }\n setChildren(node, childrenElementsIterable, recursive, viewStateContext) {\n const childrenElements = [...childrenElementsIterable];\n // perf: if the node was and still is a leaf, avoid all this hassle\n if (node.children.length === 0 && childrenElements.length === 0) {\n return [];\n }\n const nodesToForget = new Map();\n const childrenTreeNodesById = new Map();\n for (const child of node.children) {\n nodesToForget.set(child.element, child);\n if (this.identityProvider) {\n const collapsed = this.tree.isCollapsed(child);\n childrenTreeNodesById.set(child.id, { node: child, collapsed });\n }\n }\n const childrenToRefresh = [];\n const children = childrenElements.map(element => {\n const hasChildren = !!this.dataSource.hasChildren(element);\n if (!this.identityProvider) {\n const asyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, hasChildren });\n if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\n asyncDataTreeNode.collapsedByDefault = false;\n childrenToRefresh.push(asyncDataTreeNode);\n }\n return asyncDataTreeNode;\n }\n const id = this.identityProvider.getId(element).toString();\n const result = childrenTreeNodesById.get(id);\n if (result) {\n const asyncDataTreeNode = result.node;\n nodesToForget.delete(asyncDataTreeNode.element);\n this.nodes.delete(asyncDataTreeNode.element);\n this.nodes.set(element, asyncDataTreeNode);\n asyncDataTreeNode.element = element;\n asyncDataTreeNode.hasChildren = hasChildren;\n if (recursive) {\n if (result.collapsed) {\n asyncDataTreeNode.children.forEach(node => dfs(node, node => this.nodes.delete(node.element)));\n asyncDataTreeNode.children.splice(0, asyncDataTreeNode.children.length);\n asyncDataTreeNode.stale = true;\n }\n else {\n childrenToRefresh.push(asyncDataTreeNode);\n }\n }\n else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\n asyncDataTreeNode.collapsedByDefault = false;\n childrenToRefresh.push(asyncDataTreeNode);\n }\n return asyncDataTreeNode;\n }\n const childAsyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, id, hasChildren });\n if (viewStateContext && viewStateContext.viewState.focus && viewStateContext.viewState.focus.indexOf(id) > -1) {\n viewStateContext.focus.push(childAsyncDataTreeNode);\n }\n if (viewStateContext && viewStateContext.viewState.selection && viewStateContext.viewState.selection.indexOf(id) > -1) {\n viewStateContext.selection.push(childAsyncDataTreeNode);\n }\n if (viewStateContext && viewStateContext.viewState.expanded && viewStateContext.viewState.expanded.indexOf(id) > -1) {\n childrenToRefresh.push(childAsyncDataTreeNode);\n }\n else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\n childAsyncDataTreeNode.collapsedByDefault = false;\n childrenToRefresh.push(childAsyncDataTreeNode);\n }\n return childAsyncDataTreeNode;\n });\n for (const node of nodesToForget.values()) {\n dfs(node, node => this.nodes.delete(node.element));\n }\n for (const child of children) {\n this.nodes.set(child.element, child);\n }\n node.children.splice(0, node.children.length, ...children);\n // TODO@joao this doesn't take filter into account\n if (node !== this.root && this.autoExpandSingleChildren && children.length === 1 && childrenToRefresh.length === 0) {\n children[0].collapsedByDefault = false;\n childrenToRefresh.push(children[0]);\n }\n return childrenToRefresh;\n }\n render(node, viewStateContext, options) {\n const children = node.children.map(node => this.asTreeElement(node, viewStateContext));\n const objectTreeOptions = options && Object.assign(Object.assign({}, options), { diffIdentityProvider: options.diffIdentityProvider && {\n getId(node) {\n return options.diffIdentityProvider.getId(node.element);\n }\n } });\n this.tree.setChildren(node === this.root ? null : node, children, objectTreeOptions);\n if (node !== this.root) {\n this.tree.setCollapsible(node, node.hasChildren);\n }\n this._onDidRender.fire();\n }\n asTreeElement(node, viewStateContext) {\n if (node.stale) {\n return {\n element: node,\n collapsible: node.hasChildren,\n collapsed: true\n };\n }\n let collapsed;\n if (viewStateContext && viewStateContext.viewState.expanded && node.id && viewStateContext.viewState.expanded.indexOf(node.id) > -1) {\n collapsed = false;\n }\n else {\n collapsed = node.collapsedByDefault;\n }\n node.collapsedByDefault = undefined;\n return {\n element: node,\n children: node.hasChildren ? Iterable.map(node.children, child => this.asTreeElement(child, viewStateContext)) : [],\n collapsible: node.hasChildren,\n collapsed\n };\n }\n processChildren(children) {\n if (this.sorter) {\n children = [...children].sort(this.sorter.compare.bind(this.sorter));\n }\n return children;\n }\n dispose() {\n this.disposables.dispose();\n }\n}\nclass CompressibleAsyncDataTreeNodeWrapper {\n constructor(node) {\n this.node = node;\n }\n get element() {\n return {\n elements: this.node.element.elements.map(e => e.element),\n incompressible: this.node.element.incompressible\n };\n }\n get children() { return this.node.children.map(node => new CompressibleAsyncDataTreeNodeWrapper(node)); }\n get depth() { return this.node.depth; }\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\n get visibleChildIndex() { return this.node.visibleChildIndex; }\n get collapsible() { return this.node.collapsible; }\n get collapsed() { return this.node.collapsed; }\n get visible() { return this.node.visible; }\n get filterData() { return this.node.filterData; }\n}\nclass CompressibleAsyncDataTreeRenderer {\n constructor(renderer, nodeMapper, compressibleNodeMapperProvider, onDidChangeTwistieState) {\n this.renderer = renderer;\n this.nodeMapper = nodeMapper;\n this.compressibleNodeMapperProvider = compressibleNodeMapperProvider;\n this.onDidChangeTwistieState = onDidChangeTwistieState;\n this.renderedNodes = new Map();\n this.disposables = [];\n this.templateId = renderer.templateId;\n }\n renderTemplate(container) {\n const templateData = this.renderer.renderTemplate(container);\n return { templateData };\n }\n renderElement(node, index, templateData, height) {\n this.renderer.renderElement(this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n renderCompressedElements(node, index, templateData, height) {\n this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(node), index, templateData.templateData, height);\n }\n renderTwistie(element, twistieElement) {\n if (element.slow) {\n twistieElement.classList.add(...Codicon.treeItemLoading.classNamesArray);\n return true;\n }\n else {\n twistieElement.classList.remove(...Codicon.treeItemLoading.classNamesArray);\n return false;\n }\n }\n disposeElement(node, index, templateData, height) {\n var _a, _b;\n (_b = (_a = this.renderer).disposeElement) === null || _b === void 0 ? void 0 : _b.call(_a, this.nodeMapper.map(node), index, templateData.templateData, height);\n }\n disposeCompressedElements(node, index, templateData, height) {\n var _a, _b;\n (_b = (_a = this.renderer).disposeCompressedElements) === null || _b === void 0 ? void 0 : _b.call(_a, this.compressibleNodeMapperProvider().map(node), index, templateData.templateData, height);\n }\n disposeTemplate(templateData) {\n this.renderer.disposeTemplate(templateData.templateData);\n }\n dispose() {\n this.renderedNodes.clear();\n this.disposables = dispose(this.disposables);\n }\n}\nfunction asCompressibleObjectTreeOptions(options) {\n const objectTreeOptions = options && asObjectTreeOptions(options);\n return objectTreeOptions && Object.assign(Object.assign({}, objectTreeOptions), { keyboardNavigationLabelProvider: objectTreeOptions.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, objectTreeOptions.keyboardNavigationLabelProvider), { getCompressedNodeKeyboardNavigationLabel(els) {\n return options.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(els.map(e => e.element));\n } }) });\n}\nexport class CompressibleAsyncDataTree extends AsyncDataTree {\n constructor(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, options = {}) {\n super(user, container, virtualDelegate, renderers, dataSource, options);\n this.compressionDelegate = compressionDelegate;\n this.compressibleNodeMapper = new WeakMapper(node => new CompressibleAsyncDataTreeNodeWrapper(node));\n this.filter = options.filter;\n }\n createTree(user, container, delegate, renderers, options) {\n const objectTreeDelegate = new ComposedTreeDelegate(delegate);\n const objectTreeRenderers = renderers.map(r => new CompressibleAsyncDataTreeRenderer(r, this.nodeMapper, () => this.compressibleNodeMapper, this._onDidChangeNodeSlowState.event));\n const objectTreeOptions = asCompressibleObjectTreeOptions(options) || {};\n return new CompressibleObjectTree(user, container, objectTreeDelegate, objectTreeRenderers, objectTreeOptions);\n }\n asTreeElement(node, viewStateContext) {\n return Object.assign({ incompressible: this.compressionDelegate.isIncompressible(node.element) }, super.asTreeElement(node, viewStateContext));\n }\n updateOptions(options = {}) {\n this.tree.updateOptions(options);\n }\n render(node, viewStateContext) {\n if (!this.identityProvider) {\n return super.render(node, viewStateContext);\n }\n // Preserve traits across compressions. Hacky but does the trick.\n // This is hard to fix properly since it requires rewriting the traits\n // across trees and lists. Let's just keep it this way for now.\n const getId = (element) => this.identityProvider.getId(element).toString();\n const getUncompressedIds = (nodes) => {\n const result = new Set();\n for (const node of nodes) {\n const compressedNode = this.tree.getCompressedTreeNode(node === this.root ? null : node);\n if (!compressedNode.element) {\n continue;\n }\n for (const node of compressedNode.element.elements) {\n result.add(getId(node.element));\n }\n }\n return result;\n };\n const oldSelection = getUncompressedIds(this.tree.getSelection());\n const oldFocus = getUncompressedIds(this.tree.getFocus());\n super.render(node, viewStateContext);\n const selection = this.getSelection();\n let didChangeSelection = false;\n const focus = this.getFocus();\n let didChangeFocus = false;\n const visit = (node) => {\n const compressedNode = node.element;\n if (compressedNode) {\n for (let i = 0; i < compressedNode.elements.length; i++) {\n const id = getId(compressedNode.elements[i].element);\n const element = compressedNode.elements[compressedNode.elements.length - 1].element;\n // github.com/microsoft/vscode/issues/85938\n if (oldSelection.has(id) && selection.indexOf(element) === -1) {\n selection.push(element);\n didChangeSelection = true;\n }\n if (oldFocus.has(id) && focus.indexOf(element) === -1) {\n focus.push(element);\n didChangeFocus = true;\n }\n }\n }\n node.children.forEach(visit);\n };\n visit(this.tree.getCompressedTreeNode(node === this.root ? null : node));\n if (didChangeSelection) {\n this.setSelection(selection);\n }\n if (didChangeFocus) {\n this.setFocus(focus);\n }\n }\n // For compressed async data trees, `TreeVisibility.Recurse` doesn't currently work\n // and we have to filter everything beforehand\n // Related to #85193 and #85835\n processChildren(children) {\n if (this.filter) {\n children = Iterable.filter(children, e => {\n const result = this.filter.filter(e, 1 /* TreeVisibility.Visible */);\n const visibility = getVisibility(result);\n if (visibility === 2 /* TreeVisibility.Recurse */) {\n throw new Error('Recursive tree visibility not supported in async data compressed trees');\n }\n return visibility === 1 /* TreeVisibility.Visible */;\n });\n }\n return super.processChildren(children);\n }\n}\nfunction getVisibility(filterResult) {\n if (typeof filterResult === 'boolean') {\n return filterResult ? 1 /* TreeVisibility.Visible */ : 0 /* TreeVisibility.Hidden */;\n }\n else if (isFilterResult(filterResult)) {\n return getVisibleState(filterResult.visibility);\n }\n else {\n return getVisibleState(filterResult);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { AbstractTree } from './abstractTree.js';\nimport { ObjectTreeModel } from './objectTreeModel.js';\nexport class DataTree extends AbstractTree {\n constructor(user, container, delegate, renderers, dataSource, options = {}) {\n super(user, container, delegate, renderers, options);\n this.user = user;\n this.dataSource = dataSource;\n this.identityProvider = options.identityProvider;\n }\n createModel(user, view, options) {\n return new ObjectTreeModel(user, view, options);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { createStyleSheet } from '../../../base/browser/dom.js';\nimport { PagedList } from '../../../base/browser/ui/list/listPaging.js';\nimport { DefaultStyleController, isSelectionRangeChangeEvent, isSelectionSingleChangeEvent, List, TypeNavigationMode } from '../../../base/browser/ui/list/listWidget.js';\nimport { Table } from '../../../base/browser/ui/table/tableWidget.js';\nimport { TreeFindMode } from '../../../base/browser/ui/tree/abstractTree.js';\nimport { AsyncDataTree, CompressibleAsyncDataTree } from '../../../base/browser/ui/tree/asyncDataTree.js';\nimport { DataTree } from '../../../base/browser/ui/tree/dataTree.js';\nimport { CompressibleObjectTree, ObjectTree } from '../../../base/browser/ui/tree/objectTree.js';\nimport { Emitter, Event } from '../../../base/common/event.js';\nimport { combinedDisposable, Disposable, DisposableStore, dispose, toDisposable } from '../../../base/common/lifecycle.js';\nimport { localize } from '../../../nls.js';\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\nimport { Extensions as ConfigurationExtensions } from '../../configuration/common/configurationRegistry.js';\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\nimport { InputFocusedContextKey } from '../../contextkey/common/contextkeys.js';\nimport { IContextViewService } from '../../contextview/browser/contextView.js';\nimport { createDecorator, IInstantiationService } from '../../instantiation/common/instantiation.js';\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { attachListStyler, computeStyles, defaultListStyles } from '../../theme/common/styler.js';\nimport { IThemeService } from '../../theme/common/themeService.js';\nexport const IListService = createDecorator('listService');\nlet ListService = class ListService {\n constructor(_themeService) {\n this._themeService = _themeService;\n this.disposables = new DisposableStore();\n this.lists = [];\n this._lastFocusedWidget = undefined;\n this._hasCreatedStyleController = false;\n }\n get lastFocusedList() {\n return this._lastFocusedWidget;\n }\n setLastFocusedList(widget) {\n var _a, _b;\n if (widget === this._lastFocusedWidget) {\n return;\n }\n (_a = this._lastFocusedWidget) === null || _a === void 0 ? void 0 : _a.getHTMLElement().classList.remove('last-focused');\n this._lastFocusedWidget = widget;\n (_b = this._lastFocusedWidget) === null || _b === void 0 ? void 0 : _b.getHTMLElement().classList.add('last-focused');\n }\n register(widget, extraContextKeys) {\n if (!this._hasCreatedStyleController) {\n this._hasCreatedStyleController = true;\n // create a shared default tree style sheet for performance reasons\n const styleController = new DefaultStyleController(createStyleSheet(), '');\n this.disposables.add(attachListStyler(styleController, this._themeService));\n }\n if (this.lists.some(l => l.widget === widget)) {\n throw new Error('Cannot register the same widget multiple times');\n }\n // Keep in our lists list\n const registeredList = { widget, extraContextKeys };\n this.lists.push(registeredList);\n // Check for currently being focused\n if (widget.getHTMLElement() === document.activeElement) {\n this.setLastFocusedList(widget);\n }\n return combinedDisposable(widget.onDidFocus(() => this.setLastFocusedList(widget)), toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)), widget.onDidDispose(() => {\n this.lists = this.lists.filter(l => l !== registeredList);\n if (this._lastFocusedWidget === widget) {\n this.setLastFocusedList(undefined);\n }\n }));\n }\n dispose() {\n this.disposables.dispose();\n }\n};\nListService = __decorate([\n __param(0, IThemeService)\n], ListService);\nexport { ListService };\nexport const RawWorkbenchListFocusContextKey = new RawContextKey('listFocus', true);\nexport const WorkbenchListSupportsMultiSelectContextKey = new RawContextKey('listSupportsMultiselect', true);\nexport const WorkbenchListFocusContextKey = ContextKeyExpr.and(RawWorkbenchListFocusContextKey, ContextKeyExpr.not(InputFocusedContextKey));\nexport const WorkbenchListHasSelectionOrFocus = new RawContextKey('listHasSelectionOrFocus', false);\nexport const WorkbenchListDoubleSelection = new RawContextKey('listDoubleSelection', false);\nexport const WorkbenchListMultiSelection = new RawContextKey('listMultiSelection', false);\nexport const WorkbenchListSelectionNavigation = new RawContextKey('listSelectionNavigation', false);\nexport const WorkbenchListSupportsFind = new RawContextKey('listSupportsFind', true);\nexport const WorkbenchTreeElementCanCollapse = new RawContextKey('treeElementCanCollapse', false);\nexport const WorkbenchTreeElementHasParent = new RawContextKey('treeElementHasParent', false);\nexport const WorkbenchTreeElementCanExpand = new RawContextKey('treeElementCanExpand', false);\nexport const WorkbenchTreeElementHasChild = new RawContextKey('treeElementHasChild', false);\nexport const WorkbenchTreeFindOpen = new RawContextKey('treeFindOpen', false);\nconst WorkbenchListTypeNavigationModeKey = 'listTypeNavigationMode';\n/**\n * @deprecated in favor of WorkbenchListTypeNavigationModeKey\n */\nconst WorkbenchListAutomaticKeyboardNavigationLegacyKey = 'listAutomaticKeyboardNavigation';\nfunction createScopedContextKeyService(contextKeyService, widget) {\n const result = contextKeyService.createScoped(widget.getHTMLElement());\n RawWorkbenchListFocusContextKey.bindTo(result);\n return result;\n}\nconst multiSelectModifierSettingKey = 'workbench.list.multiSelectModifier';\nconst openModeSettingKey = 'workbench.list.openMode';\nconst horizontalScrollingKey = 'workbench.list.horizontalScrolling';\nconst defaultFindModeSettingKey = 'workbench.list.defaultFindMode';\n/** @deprecated in favor of workbench.list.defaultFindMode */\nconst keyboardNavigationSettingKey = 'workbench.list.keyboardNavigation';\nconst treeIndentKey = 'workbench.tree.indent';\nconst treeRenderIndentGuidesKey = 'workbench.tree.renderIndentGuides';\nconst listSmoothScrolling = 'workbench.list.smoothScrolling';\nconst mouseWheelScrollSensitivityKey = 'workbench.list.mouseWheelScrollSensitivity';\nconst fastScrollSensitivityKey = 'workbench.list.fastScrollSensitivity';\nconst treeExpandMode = 'workbench.tree.expandMode';\nfunction useAltAsMultipleSelectionModifier(configurationService) {\n return configurationService.getValue(multiSelectModifierSettingKey) === 'alt';\n}\nclass MultipleSelectionController extends Disposable {\n constructor(configurationService) {\n super();\n this.configurationService = configurationService;\n this.useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n this.registerListeners();\n }\n registerListeners() {\n this._register(this.configurationService.onDidChangeConfiguration(e => {\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\n this.useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService);\n }\n }));\n }\n isSelectionSingleChangeEvent(event) {\n if (this.useAltAsMultipleSelectionModifier) {\n return event.browserEvent.altKey;\n }\n return isSelectionSingleChangeEvent(event);\n }\n isSelectionRangeChangeEvent(event) {\n return isSelectionRangeChangeEvent(event);\n }\n}\nfunction toWorkbenchListOptions(accessor, options) {\n var _a;\n const configurationService = accessor.get(IConfigurationService);\n const keybindingService = accessor.get(IKeybindingService);\n const disposables = new DisposableStore();\n const result = Object.assign(Object.assign({}, options), { keyboardNavigationDelegate: { mightProducePrintableCharacter(e) { return keybindingService.mightProducePrintableCharacter(e); } }, smoothScrolling: Boolean(configurationService.getValue(listSmoothScrolling)), mouseWheelScrollSensitivity: configurationService.getValue(mouseWheelScrollSensitivityKey), fastScrollSensitivity: configurationService.getValue(fastScrollSensitivityKey), multipleSelectionController: (_a = options.multipleSelectionController) !== null && _a !== void 0 ? _a : disposables.add(new MultipleSelectionController(configurationService)), keyboardNavigationEventFilter: createKeyboardNavigationEventFilter(keybindingService) });\n return [result, disposables];\n}\nlet WorkbenchList = class WorkbenchList extends List {\n constructor(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, instantiationService) {\n const horizontalScrolling = typeof options.horizontalScrolling !== 'undefined' ? options.horizontalScrolling : Boolean(configurationService.getValue(horizontalScrollingKey));\n const [workbenchListOptions, workbenchListOptionsDisposable] = instantiationService.invokeFunction(toWorkbenchListOptions, options);\n super(user, container, delegate, renderers, Object.assign(Object.assign(Object.assign({ keyboardSupport: false }, computeStyles(themeService.getColorTheme(), defaultListStyles)), workbenchListOptions), { horizontalScrolling }));\n this.disposables.add(workbenchListOptionsDisposable);\n this.contextKeyService = createScopedContextKeyService(contextKeyService, this);\n this.themeService = themeService;\n this.listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);\n this.listSupportsMultiSelect.set(options.multipleSelectionSupport !== false);\n const listSelectionNavigation = WorkbenchListSelectionNavigation.bindTo(this.contextKeyService);\n listSelectionNavigation.set(Boolean(options.selectionNavigation));\n this.listHasSelectionOrFocus = WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService);\n this.listDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService);\n this.listMultiSelection = WorkbenchListMultiSelection.bindTo(this.contextKeyService);\n this.horizontalScrolling = options.horizontalScrolling;\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n this.disposables.add(this.contextKeyService);\n this.disposables.add(listService.register(this));\n if (options.overrideStyles) {\n this.updateStyles(options.overrideStyles);\n }\n this.disposables.add(this.onDidChangeSelection(() => {\n const selection = this.getSelection();\n const focus = this.getFocus();\n this.contextKeyService.bufferChangeEvents(() => {\n this.listHasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\n this.listMultiSelection.set(selection.length > 1);\n this.listDoubleSelection.set(selection.length === 2);\n });\n }));\n this.disposables.add(this.onDidChangeFocus(() => {\n const selection = this.getSelection();\n const focus = this.getFocus();\n this.listHasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\n }));\n this.disposables.add(configurationService.onDidChangeConfiguration(e => {\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n }\n let options = {};\n if (e.affectsConfiguration(horizontalScrollingKey) && this.horizontalScrolling === undefined) {\n const horizontalScrolling = Boolean(configurationService.getValue(horizontalScrollingKey));\n options = Object.assign(Object.assign({}, options), { horizontalScrolling });\n }\n if (e.affectsConfiguration(listSmoothScrolling)) {\n const smoothScrolling = Boolean(configurationService.getValue(listSmoothScrolling));\n options = Object.assign(Object.assign({}, options), { smoothScrolling });\n }\n if (e.affectsConfiguration(mouseWheelScrollSensitivityKey)) {\n const mouseWheelScrollSensitivity = configurationService.getValue(mouseWheelScrollSensitivityKey);\n options = Object.assign(Object.assign({}, options), { mouseWheelScrollSensitivity });\n }\n if (e.affectsConfiguration(fastScrollSensitivityKey)) {\n const fastScrollSensitivity = configurationService.getValue(fastScrollSensitivityKey);\n options = Object.assign(Object.assign({}, options), { fastScrollSensitivity });\n }\n if (Object.keys(options).length > 0) {\n this.updateOptions(options);\n }\n }));\n this.navigator = new ListResourceNavigator(this, Object.assign({ configurationService }, options));\n this.disposables.add(this.navigator);\n }\n updateOptions(options) {\n super.updateOptions(options);\n if (options.overrideStyles) {\n this.updateStyles(options.overrideStyles);\n }\n if (options.multipleSelectionSupport !== undefined) {\n this.listSupportsMultiSelect.set(!!options.multipleSelectionSupport);\n }\n }\n updateStyles(styles) {\n var _a;\n (_a = this._styler) === null || _a === void 0 ? void 0 : _a.dispose();\n this._styler = attachListStyler(this, this.themeService, styles);\n }\n dispose() {\n var _a;\n (_a = this._styler) === null || _a === void 0 ? void 0 : _a.dispose();\n super.dispose();\n }\n};\nWorkbenchList = __decorate([\n __param(5, IContextKeyService),\n __param(6, IListService),\n __param(7, IThemeService),\n __param(8, IConfigurationService),\n __param(9, IInstantiationService)\n], WorkbenchList);\nexport { WorkbenchList };\nlet WorkbenchPagedList = class WorkbenchPagedList extends PagedList {\n constructor(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, instantiationService) {\n const horizontalScrolling = typeof options.horizontalScrolling !== 'undefined' ? options.horizontalScrolling : Boolean(configurationService.getValue(horizontalScrollingKey));\n const [workbenchListOptions, workbenchListOptionsDisposable] = instantiationService.invokeFunction(toWorkbenchListOptions, options);\n super(user, container, delegate, renderers, Object.assign(Object.assign(Object.assign({ keyboardSupport: false }, computeStyles(themeService.getColorTheme(), defaultListStyles)), workbenchListOptions), { horizontalScrolling }));\n this.disposables = new DisposableStore();\n this.disposables.add(workbenchListOptionsDisposable);\n this.contextKeyService = createScopedContextKeyService(contextKeyService, this);\n this.themeService = themeService;\n this.horizontalScrolling = options.horizontalScrolling;\n this.listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);\n this.listSupportsMultiSelect.set(options.multipleSelectionSupport !== false);\n const listSelectionNavigation = WorkbenchListSelectionNavigation.bindTo(this.contextKeyService);\n listSelectionNavigation.set(Boolean(options.selectionNavigation));\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n this.disposables.add(this.contextKeyService);\n this.disposables.add(listService.register(this));\n if (options.overrideStyles) {\n this.updateStyles(options.overrideStyles);\n }\n if (options.overrideStyles) {\n this.disposables.add(attachListStyler(this, themeService, options.overrideStyles));\n }\n this.disposables.add(configurationService.onDidChangeConfiguration(e => {\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n }\n let options = {};\n if (e.affectsConfiguration(horizontalScrollingKey) && this.horizontalScrolling === undefined) {\n const horizontalScrolling = Boolean(configurationService.getValue(horizontalScrollingKey));\n options = Object.assign(Object.assign({}, options), { horizontalScrolling });\n }\n if (e.affectsConfiguration(listSmoothScrolling)) {\n const smoothScrolling = Boolean(configurationService.getValue(listSmoothScrolling));\n options = Object.assign(Object.assign({}, options), { smoothScrolling });\n }\n if (e.affectsConfiguration(mouseWheelScrollSensitivityKey)) {\n const mouseWheelScrollSensitivity = configurationService.getValue(mouseWheelScrollSensitivityKey);\n options = Object.assign(Object.assign({}, options), { mouseWheelScrollSensitivity });\n }\n if (e.affectsConfiguration(fastScrollSensitivityKey)) {\n const fastScrollSensitivity = configurationService.getValue(fastScrollSensitivityKey);\n options = Object.assign(Object.assign({}, options), { fastScrollSensitivity });\n }\n if (Object.keys(options).length > 0) {\n this.updateOptions(options);\n }\n }));\n this.navigator = new ListResourceNavigator(this, Object.assign({ configurationService }, options));\n this.disposables.add(this.navigator);\n }\n updateOptions(options) {\n super.updateOptions(options);\n if (options.overrideStyles) {\n this.updateStyles(options.overrideStyles);\n }\n if (options.multipleSelectionSupport !== undefined) {\n this.listSupportsMultiSelect.set(!!options.multipleSelectionSupport);\n }\n }\n updateStyles(styles) {\n var _a;\n (_a = this._styler) === null || _a === void 0 ? void 0 : _a.dispose();\n this._styler = attachListStyler(this, this.themeService, styles);\n }\n dispose() {\n var _a;\n (_a = this._styler) === null || _a === void 0 ? void 0 : _a.dispose();\n this.disposables.dispose();\n super.dispose();\n }\n};\nWorkbenchPagedList = __decorate([\n __param(5, IContextKeyService),\n __param(6, IListService),\n __param(7, IThemeService),\n __param(8, IConfigurationService),\n __param(9, IInstantiationService)\n], WorkbenchPagedList);\nexport { WorkbenchPagedList };\nlet WorkbenchTable = class WorkbenchTable extends Table {\n constructor(user, container, delegate, columns, renderers, options, contextKeyService, listService, themeService, configurationService, instantiationService) {\n const horizontalScrolling = typeof options.horizontalScrolling !== 'undefined' ? options.horizontalScrolling : Boolean(configurationService.getValue(horizontalScrollingKey));\n const [workbenchListOptions, workbenchListOptionsDisposable] = instantiationService.invokeFunction(toWorkbenchListOptions, options);\n super(user, container, delegate, columns, renderers, Object.assign(Object.assign(Object.assign({ keyboardSupport: false }, computeStyles(themeService.getColorTheme(), defaultListStyles)), workbenchListOptions), { horizontalScrolling }));\n this.disposables.add(workbenchListOptionsDisposable);\n this.contextKeyService = createScopedContextKeyService(contextKeyService, this);\n this.themeService = themeService;\n this.listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);\n this.listSupportsMultiSelect.set(options.multipleSelectionSupport !== false);\n const listSelectionNavigation = WorkbenchListSelectionNavigation.bindTo(this.contextKeyService);\n listSelectionNavigation.set(Boolean(options.selectionNavigation));\n this.listHasSelectionOrFocus = WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService);\n this.listDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService);\n this.listMultiSelection = WorkbenchListMultiSelection.bindTo(this.contextKeyService);\n this.horizontalScrolling = options.horizontalScrolling;\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n this.disposables.add(this.contextKeyService);\n this.disposables.add(listService.register(this));\n if (options.overrideStyles) {\n this.updateStyles(options.overrideStyles);\n }\n this.disposables.add(this.onDidChangeSelection(() => {\n const selection = this.getSelection();\n const focus = this.getFocus();\n this.contextKeyService.bufferChangeEvents(() => {\n this.listHasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\n this.listMultiSelection.set(selection.length > 1);\n this.listDoubleSelection.set(selection.length === 2);\n });\n }));\n this.disposables.add(this.onDidChangeFocus(() => {\n const selection = this.getSelection();\n const focus = this.getFocus();\n this.listHasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\n }));\n this.disposables.add(configurationService.onDidChangeConfiguration(e => {\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n }\n let options = {};\n if (e.affectsConfiguration(horizontalScrollingKey) && this.horizontalScrolling === undefined) {\n const horizontalScrolling = Boolean(configurationService.getValue(horizontalScrollingKey));\n options = Object.assign(Object.assign({}, options), { horizontalScrolling });\n }\n if (e.affectsConfiguration(listSmoothScrolling)) {\n const smoothScrolling = Boolean(configurationService.getValue(listSmoothScrolling));\n options = Object.assign(Object.assign({}, options), { smoothScrolling });\n }\n if (e.affectsConfiguration(mouseWheelScrollSensitivityKey)) {\n const mouseWheelScrollSensitivity = configurationService.getValue(mouseWheelScrollSensitivityKey);\n options = Object.assign(Object.assign({}, options), { mouseWheelScrollSensitivity });\n }\n if (e.affectsConfiguration(fastScrollSensitivityKey)) {\n const fastScrollSensitivity = configurationService.getValue(fastScrollSensitivityKey);\n options = Object.assign(Object.assign({}, options), { fastScrollSensitivity });\n }\n if (Object.keys(options).length > 0) {\n this.updateOptions(options);\n }\n }));\n this.navigator = new TableResourceNavigator(this, Object.assign({ configurationService }, options));\n this.disposables.add(this.navigator);\n }\n updateOptions(options) {\n super.updateOptions(options);\n if (options.overrideStyles) {\n this.updateStyles(options.overrideStyles);\n }\n if (options.multipleSelectionSupport !== undefined) {\n this.listSupportsMultiSelect.set(!!options.multipleSelectionSupport);\n }\n }\n updateStyles(styles) {\n var _a;\n (_a = this._styler) === null || _a === void 0 ? void 0 : _a.dispose();\n this._styler = attachListStyler(this, this.themeService, styles);\n }\n dispose() {\n var _a;\n (_a = this._styler) === null || _a === void 0 ? void 0 : _a.dispose();\n this.disposables.dispose();\n super.dispose();\n }\n};\nWorkbenchTable = __decorate([\n __param(6, IContextKeyService),\n __param(7, IListService),\n __param(8, IThemeService),\n __param(9, IConfigurationService),\n __param(10, IInstantiationService)\n], WorkbenchTable);\nexport { WorkbenchTable };\nclass ResourceNavigator extends Disposable {\n constructor(widget, options) {\n var _a;\n super();\n this.widget = widget;\n this._onDidOpen = this._register(new Emitter());\n this.onDidOpen = this._onDidOpen.event;\n this._register(Event.filter(this.widget.onDidChangeSelection, e => e.browserEvent instanceof KeyboardEvent)(e => this.onSelectionFromKeyboard(e)));\n this._register(this.widget.onPointer((e) => this.onPointer(e.element, e.browserEvent)));\n this._register(this.widget.onMouseDblClick((e) => this.onMouseDblClick(e.element, e.browserEvent)));\n if (typeof (options === null || options === void 0 ? void 0 : options.openOnSingleClick) !== 'boolean' && (options === null || options === void 0 ? void 0 : options.configurationService)) {\n this.openOnSingleClick = (options === null || options === void 0 ? void 0 : options.configurationService.getValue(openModeSettingKey)) !== 'doubleClick';\n this._register(options === null || options === void 0 ? void 0 : options.configurationService.onDidChangeConfiguration(() => {\n this.openOnSingleClick = (options === null || options === void 0 ? void 0 : options.configurationService.getValue(openModeSettingKey)) !== 'doubleClick';\n }));\n }\n else {\n this.openOnSingleClick = (_a = options === null || options === void 0 ? void 0 : options.openOnSingleClick) !== null && _a !== void 0 ? _a : true;\n }\n }\n onSelectionFromKeyboard(event) {\n if (event.elements.length !== 1) {\n return;\n }\n const selectionKeyboardEvent = event.browserEvent;\n const preserveFocus = typeof selectionKeyboardEvent.preserveFocus === 'boolean' ? selectionKeyboardEvent.preserveFocus : true;\n const pinned = typeof selectionKeyboardEvent.pinned === 'boolean' ? selectionKeyboardEvent.pinned : !preserveFocus;\n const sideBySide = false;\n this._open(this.getSelectedElement(), preserveFocus, pinned, sideBySide, event.browserEvent);\n }\n onPointer(element, browserEvent) {\n if (!this.openOnSingleClick) {\n return;\n }\n const isDoubleClick = browserEvent.detail === 2;\n if (isDoubleClick) {\n return;\n }\n const isMiddleClick = browserEvent.button === 1;\n const preserveFocus = true;\n const pinned = isMiddleClick;\n const sideBySide = browserEvent.ctrlKey || browserEvent.metaKey || browserEvent.altKey;\n this._open(element, preserveFocus, pinned, sideBySide, browserEvent);\n }\n onMouseDblClick(element, browserEvent) {\n if (!browserEvent) {\n return;\n }\n // copied from AbstractTree\n const target = browserEvent.target;\n const onTwistie = target.classList.contains('monaco-tl-twistie')\n || (target.classList.contains('monaco-icon-label') && target.classList.contains('folder-icon') && browserEvent.offsetX < 16);\n if (onTwistie) {\n return;\n }\n const preserveFocus = false;\n const pinned = true;\n const sideBySide = (browserEvent.ctrlKey || browserEvent.metaKey || browserEvent.altKey);\n this._open(element, preserveFocus, pinned, sideBySide, browserEvent);\n }\n _open(element, preserveFocus, pinned, sideBySide, browserEvent) {\n if (!element) {\n return;\n }\n this._onDidOpen.fire({\n editorOptions: {\n preserveFocus,\n pinned,\n revealIfVisible: true\n },\n sideBySide,\n element,\n browserEvent\n });\n }\n}\nclass ListResourceNavigator extends ResourceNavigator {\n constructor(widget, options) {\n super(widget, options);\n this.widget = widget;\n }\n getSelectedElement() {\n return this.widget.getSelectedElements()[0];\n }\n}\nclass TableResourceNavigator extends ResourceNavigator {\n constructor(widget, options) {\n super(widget, options);\n }\n getSelectedElement() {\n return this.widget.getSelectedElements()[0];\n }\n}\nclass TreeResourceNavigator extends ResourceNavigator {\n constructor(widget, options) {\n super(widget, options);\n }\n getSelectedElement() {\n var _a;\n return (_a = this.widget.getSelection()[0]) !== null && _a !== void 0 ? _a : undefined;\n }\n}\nfunction createKeyboardNavigationEventFilter(keybindingService) {\n let inChord = false;\n return event => {\n if (event.toKeybinding().isModifierKey()) {\n return false;\n }\n if (inChord) {\n inChord = false;\n return false;\n }\n const result = keybindingService.softDispatch(event, event.target);\n if (result === null || result === void 0 ? void 0 : result.enterChord) {\n inChord = true;\n return false;\n }\n inChord = false;\n return !result;\n };\n}\nlet WorkbenchObjectTree = class WorkbenchObjectTree extends ObjectTree {\n constructor(user, container, delegate, renderers, options, instantiationService, contextKeyService, listService, themeService, configurationService) {\n const { options: treeOptions, getTypeNavigationMode, disposable } = instantiationService.invokeFunction(workbenchTreeDataPreamble, options);\n super(user, container, delegate, renderers, treeOptions);\n this.disposables.add(disposable);\n this.internals = new WorkbenchTreeInternals(this, options, getTypeNavigationMode, options.overrideStyles, contextKeyService, listService, themeService, configurationService);\n this.disposables.add(this.internals);\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.internals.updateOptions(options);\n }\n};\nWorkbenchObjectTree = __decorate([\n __param(5, IInstantiationService),\n __param(6, IContextKeyService),\n __param(7, IListService),\n __param(8, IThemeService),\n __param(9, IConfigurationService)\n], WorkbenchObjectTree);\nexport { WorkbenchObjectTree };\nlet WorkbenchCompressibleObjectTree = class WorkbenchCompressibleObjectTree extends CompressibleObjectTree {\n constructor(user, container, delegate, renderers, options, instantiationService, contextKeyService, listService, themeService, configurationService) {\n const { options: treeOptions, getTypeNavigationMode, disposable } = instantiationService.invokeFunction(workbenchTreeDataPreamble, options);\n super(user, container, delegate, renderers, treeOptions);\n this.disposables.add(disposable);\n this.internals = new WorkbenchTreeInternals(this, options, getTypeNavigationMode, options.overrideStyles, contextKeyService, listService, themeService, configurationService);\n this.disposables.add(this.internals);\n }\n updateOptions(options = {}) {\n super.updateOptions(options);\n if (options.overrideStyles) {\n this.internals.updateStyleOverrides(options.overrideStyles);\n }\n this.internals.updateOptions(options);\n }\n};\nWorkbenchCompressibleObjectTree = __decorate([\n __param(5, IInstantiationService),\n __param(6, IContextKeyService),\n __param(7, IListService),\n __param(8, IThemeService),\n __param(9, IConfigurationService)\n], WorkbenchCompressibleObjectTree);\nexport { WorkbenchCompressibleObjectTree };\nlet WorkbenchDataTree = class WorkbenchDataTree extends DataTree {\n constructor(user, container, delegate, renderers, dataSource, options, instantiationService, contextKeyService, listService, themeService, configurationService) {\n const { options: treeOptions, getTypeNavigationMode, disposable } = instantiationService.invokeFunction(workbenchTreeDataPreamble, options);\n super(user, container, delegate, renderers, dataSource, treeOptions);\n this.disposables.add(disposable);\n this.internals = new WorkbenchTreeInternals(this, options, getTypeNavigationMode, options.overrideStyles, contextKeyService, listService, themeService, configurationService);\n this.disposables.add(this.internals);\n }\n updateOptions(options = {}) {\n super.updateOptions(options);\n if (options.overrideStyles) {\n this.internals.updateStyleOverrides(options.overrideStyles);\n }\n this.internals.updateOptions(options);\n }\n};\nWorkbenchDataTree = __decorate([\n __param(6, IInstantiationService),\n __param(7, IContextKeyService),\n __param(8, IListService),\n __param(9, IThemeService),\n __param(10, IConfigurationService)\n], WorkbenchDataTree);\nexport { WorkbenchDataTree };\nlet WorkbenchAsyncDataTree = class WorkbenchAsyncDataTree extends AsyncDataTree {\n constructor(user, container, delegate, renderers, dataSource, options, instantiationService, contextKeyService, listService, themeService, configurationService) {\n const { options: treeOptions, getTypeNavigationMode, disposable } = instantiationService.invokeFunction(workbenchTreeDataPreamble, options);\n super(user, container, delegate, renderers, dataSource, treeOptions);\n this.disposables.add(disposable);\n this.internals = new WorkbenchTreeInternals(this, options, getTypeNavigationMode, options.overrideStyles, contextKeyService, listService, themeService, configurationService);\n this.disposables.add(this.internals);\n }\n get onDidOpen() { return this.internals.onDidOpen; }\n updateOptions(options = {}) {\n super.updateOptions(options);\n if (options.overrideStyles) {\n this.internals.updateStyleOverrides(options.overrideStyles);\n }\n this.internals.updateOptions(options);\n }\n};\nWorkbenchAsyncDataTree = __decorate([\n __param(6, IInstantiationService),\n __param(7, IContextKeyService),\n __param(8, IListService),\n __param(9, IThemeService),\n __param(10, IConfigurationService)\n], WorkbenchAsyncDataTree);\nexport { WorkbenchAsyncDataTree };\nlet WorkbenchCompressibleAsyncDataTree = class WorkbenchCompressibleAsyncDataTree extends CompressibleAsyncDataTree {\n constructor(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, options, instantiationService, contextKeyService, listService, themeService, configurationService) {\n const { options: treeOptions, getTypeNavigationMode, disposable } = instantiationService.invokeFunction(workbenchTreeDataPreamble, options);\n super(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, treeOptions);\n this.disposables.add(disposable);\n this.internals = new WorkbenchTreeInternals(this, options, getTypeNavigationMode, options.overrideStyles, contextKeyService, listService, themeService, configurationService);\n this.disposables.add(this.internals);\n }\n updateOptions(options) {\n super.updateOptions(options);\n this.internals.updateOptions(options);\n }\n};\nWorkbenchCompressibleAsyncDataTree = __decorate([\n __param(7, IInstantiationService),\n __param(8, IContextKeyService),\n __param(9, IListService),\n __param(10, IThemeService),\n __param(11, IConfigurationService)\n], WorkbenchCompressibleAsyncDataTree);\nexport { WorkbenchCompressibleAsyncDataTree };\nfunction getDefaultTreeFindMode(configurationService) {\n const value = configurationService.getValue(defaultFindModeSettingKey);\n if (value === 'highlight') {\n return TreeFindMode.Highlight;\n }\n else if (value === 'filter') {\n return TreeFindMode.Filter;\n }\n const deprecatedValue = configurationService.getValue(keyboardNavigationSettingKey);\n if (deprecatedValue === 'simple' || deprecatedValue === 'highlight') {\n return TreeFindMode.Highlight;\n }\n else if (deprecatedValue === 'filter') {\n return TreeFindMode.Filter;\n }\n return undefined;\n}\nfunction workbenchTreeDataPreamble(accessor, options) {\n var _a;\n const configurationService = accessor.get(IConfigurationService);\n const contextViewService = accessor.get(IContextViewService);\n const contextKeyService = accessor.get(IContextKeyService);\n const instantiationService = accessor.get(IInstantiationService);\n const getTypeNavigationMode = () => {\n // give priority to the context key value to specify a value\n const modeString = contextKeyService.getContextKeyValue(WorkbenchListTypeNavigationModeKey);\n if (modeString === 'automatic') {\n return TypeNavigationMode.Automatic;\n }\n else if (modeString === 'trigger') {\n return TypeNavigationMode.Trigger;\n }\n // also check the deprecated context key to set the mode to 'trigger'\n const modeBoolean = contextKeyService.getContextKeyValue(WorkbenchListAutomaticKeyboardNavigationLegacyKey);\n if (modeBoolean === false) {\n return TypeNavigationMode.Trigger;\n }\n return undefined;\n };\n const horizontalScrolling = options.horizontalScrolling !== undefined ? options.horizontalScrolling : Boolean(configurationService.getValue(horizontalScrollingKey));\n const [workbenchListOptions, disposable] = instantiationService.invokeFunction(toWorkbenchListOptions, options);\n const additionalScrollHeight = options.additionalScrollHeight;\n return {\n getTypeNavigationMode,\n disposable,\n options: Object.assign(Object.assign({ \n // ...options, // TODO@Joao why is this not splatted here?\n keyboardSupport: false }, workbenchListOptions), { indent: typeof configurationService.getValue(treeIndentKey) === 'number' ? configurationService.getValue(treeIndentKey) : undefined, renderIndentGuides: configurationService.getValue(treeRenderIndentGuidesKey), smoothScrolling: Boolean(configurationService.getValue(listSmoothScrolling)), defaultFindMode: getDefaultTreeFindMode(configurationService), horizontalScrolling,\n additionalScrollHeight, hideTwistiesOfChildlessElements: options.hideTwistiesOfChildlessElements, expandOnlyOnTwistieClick: (_a = options.expandOnlyOnTwistieClick) !== null && _a !== void 0 ? _a : (configurationService.getValue(treeExpandMode) === 'doubleClick'), contextViewProvider: contextViewService })\n };\n}\nlet WorkbenchTreeInternals = class WorkbenchTreeInternals {\n constructor(tree, options, getTypeNavigationMode, overrideStyles, contextKeyService, listService, themeService, configurationService) {\n var _a;\n this.tree = tree;\n this.themeService = themeService;\n this.disposables = [];\n this.contextKeyService = createScopedContextKeyService(contextKeyService, tree);\n this.listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);\n this.listSupportsMultiSelect.set(options.multipleSelectionSupport !== false);\n const listSelectionNavigation = WorkbenchListSelectionNavigation.bindTo(this.contextKeyService);\n listSelectionNavigation.set(Boolean(options.selectionNavigation));\n this.listSupportFindWidget = WorkbenchListSupportsFind.bindTo(this.contextKeyService);\n this.listSupportFindWidget.set((_a = options.findWidgetEnabled) !== null && _a !== void 0 ? _a : true);\n this.hasSelectionOrFocus = WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService);\n this.hasDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService);\n this.hasMultiSelection = WorkbenchListMultiSelection.bindTo(this.contextKeyService);\n this.treeElementCanCollapse = WorkbenchTreeElementCanCollapse.bindTo(this.contextKeyService);\n this.treeElementHasParent = WorkbenchTreeElementHasParent.bindTo(this.contextKeyService);\n this.treeElementCanExpand = WorkbenchTreeElementCanExpand.bindTo(this.contextKeyService);\n this.treeElementHasChild = WorkbenchTreeElementHasChild.bindTo(this.contextKeyService);\n this.treeFindOpen = WorkbenchTreeFindOpen.bindTo(this.contextKeyService);\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n this.updateStyleOverrides(overrideStyles);\n const updateCollapseContextKeys = () => {\n const focus = tree.getFocus()[0];\n if (!focus) {\n return;\n }\n const node = tree.getNode(focus);\n this.treeElementCanCollapse.set(node.collapsible && !node.collapsed);\n this.treeElementHasParent.set(!!tree.getParentElement(focus));\n this.treeElementCanExpand.set(node.collapsible && node.collapsed);\n this.treeElementHasChild.set(!!tree.getFirstElementChild(focus));\n };\n const interestingContextKeys = new Set();\n interestingContextKeys.add(WorkbenchListTypeNavigationModeKey);\n interestingContextKeys.add(WorkbenchListAutomaticKeyboardNavigationLegacyKey);\n this.disposables.push(this.contextKeyService, listService.register(tree), tree.onDidChangeSelection(() => {\n const selection = tree.getSelection();\n const focus = tree.getFocus();\n this.contextKeyService.bufferChangeEvents(() => {\n this.hasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\n this.hasMultiSelection.set(selection.length > 1);\n this.hasDoubleSelection.set(selection.length === 2);\n });\n }), tree.onDidChangeFocus(() => {\n const selection = tree.getSelection();\n const focus = tree.getFocus();\n this.hasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\n updateCollapseContextKeys();\n }), tree.onDidChangeCollapseState(updateCollapseContextKeys), tree.onDidChangeModel(updateCollapseContextKeys), tree.onDidChangeFindOpenState(enabled => this.treeFindOpen.set(enabled)), configurationService.onDidChangeConfiguration(e => {\n let newOptions = {};\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\n }\n if (e.affectsConfiguration(treeIndentKey)) {\n const indent = configurationService.getValue(treeIndentKey);\n newOptions = Object.assign(Object.assign({}, newOptions), { indent });\n }\n if (e.affectsConfiguration(treeRenderIndentGuidesKey)) {\n const renderIndentGuides = configurationService.getValue(treeRenderIndentGuidesKey);\n newOptions = Object.assign(Object.assign({}, newOptions), { renderIndentGuides });\n }\n if (e.affectsConfiguration(listSmoothScrolling)) {\n const smoothScrolling = Boolean(configurationService.getValue(listSmoothScrolling));\n newOptions = Object.assign(Object.assign({}, newOptions), { smoothScrolling });\n }\n if (e.affectsConfiguration(defaultFindModeSettingKey) || e.affectsConfiguration(keyboardNavigationSettingKey)) {\n tree.updateOptions({ defaultFindMode: getDefaultTreeFindMode(configurationService) });\n }\n if (e.affectsConfiguration(horizontalScrollingKey) && options.horizontalScrolling === undefined) {\n const horizontalScrolling = Boolean(configurationService.getValue(horizontalScrollingKey));\n newOptions = Object.assign(Object.assign({}, newOptions), { horizontalScrolling });\n }\n if (e.affectsConfiguration(treeExpandMode) && options.expandOnlyOnTwistieClick === undefined) {\n newOptions = Object.assign(Object.assign({}, newOptions), { expandOnlyOnTwistieClick: configurationService.getValue(treeExpandMode) === 'doubleClick' });\n }\n if (e.affectsConfiguration(mouseWheelScrollSensitivityKey)) {\n const mouseWheelScrollSensitivity = configurationService.getValue(mouseWheelScrollSensitivityKey);\n newOptions = Object.assign(Object.assign({}, newOptions), { mouseWheelScrollSensitivity });\n }\n if (e.affectsConfiguration(fastScrollSensitivityKey)) {\n const fastScrollSensitivity = configurationService.getValue(fastScrollSensitivityKey);\n newOptions = Object.assign(Object.assign({}, newOptions), { fastScrollSensitivity });\n }\n if (Object.keys(newOptions).length > 0) {\n tree.updateOptions(newOptions);\n }\n }), this.contextKeyService.onDidChangeContext(e => {\n if (e.affectsSome(interestingContextKeys)) {\n tree.updateOptions({ typeNavigationMode: getTypeNavigationMode() });\n }\n }));\n this.navigator = new TreeResourceNavigator(tree, Object.assign({ configurationService }, options));\n this.disposables.push(this.navigator);\n }\n get onDidOpen() { return this.navigator.onDidOpen; }\n updateOptions(options) {\n if (options.multipleSelectionSupport !== undefined) {\n this.listSupportsMultiSelect.set(!!options.multipleSelectionSupport);\n }\n }\n updateStyleOverrides(overrideStyles) {\n dispose(this.styler);\n this.styler = overrideStyles ? attachListStyler(this.tree, this.themeService, overrideStyles) : Disposable.None;\n }\n dispose() {\n this.disposables = dispose(this.disposables);\n dispose(this.styler);\n this.styler = undefined;\n }\n};\nWorkbenchTreeInternals = __decorate([\n __param(4, IContextKeyService),\n __param(5, IListService),\n __param(6, IThemeService),\n __param(7, IConfigurationService)\n], WorkbenchTreeInternals);\nconst configurationRegistry = Registry.as(ConfigurationExtensions.Configuration);\nconfigurationRegistry.registerConfiguration({\n id: 'workbench',\n order: 7,\n title: localize('workbenchConfigurationTitle', \"Workbench\"),\n type: 'object',\n properties: {\n [multiSelectModifierSettingKey]: {\n type: 'string',\n enum: ['ctrlCmd', 'alt'],\n markdownEnumDescriptions: [\n localize('multiSelectModifier.ctrlCmd', \"Maps to `Control` on Windows and Linux and to `Command` on macOS.\"),\n localize('multiSelectModifier.alt', \"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\")\n ],\n default: 'ctrlCmd',\n description: localize({\n key: 'multiSelectModifier',\n comment: [\n '- `ctrlCmd` refers to a value the setting can take and should not be localized.',\n '- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized.'\n ]\n }, \"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.\")\n },\n [openModeSettingKey]: {\n type: 'string',\n enum: ['singleClick', 'doubleClick'],\n default: 'singleClick',\n description: localize({\n key: 'openModeModifier',\n comment: ['`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized.']\n }, \"Controls how to open items in trees and lists using the mouse (if supported). Note that some trees and lists might choose to ignore this setting if it is not applicable.\")\n },\n [horizontalScrollingKey]: {\n type: 'boolean',\n default: false,\n description: localize('horizontalScrolling setting', \"Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.\")\n },\n [treeIndentKey]: {\n type: 'number',\n default: 8,\n minimum: 4,\n maximum: 40,\n description: localize('tree indent setting', \"Controls tree indentation in pixels.\")\n },\n [treeRenderIndentGuidesKey]: {\n type: 'string',\n enum: ['none', 'onHover', 'always'],\n default: 'onHover',\n description: localize('render tree indent guides', \"Controls whether the tree should render indent guides.\")\n },\n [listSmoothScrolling]: {\n type: 'boolean',\n default: false,\n description: localize('list smoothScrolling setting', \"Controls whether lists and trees have smooth scrolling.\"),\n },\n [mouseWheelScrollSensitivityKey]: {\n type: 'number',\n default: 1,\n markdownDescription: localize('Mouse Wheel Scroll Sensitivity', \"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\")\n },\n [fastScrollSensitivityKey]: {\n type: 'number',\n default: 5,\n description: localize('Fast Scroll Sensitivity', \"Scrolling speed multiplier when pressing `Alt`.\")\n },\n [defaultFindModeSettingKey]: {\n type: 'string',\n enum: ['highlight', 'filter'],\n enumDescriptions: [\n localize('defaultFindModeSettingKey.highlight', \"Highlight elements when searching. Further up and down navigation will traverse only the highlighted elements.\"),\n localize('defaultFindModeSettingKey.filter', \"Filter elements when searching.\")\n ],\n default: 'highlight',\n description: localize('defaultFindModeSettingKey', \"Controls the default find mode for lists and trees in the workbench.\")\n },\n [keyboardNavigationSettingKey]: {\n type: 'string',\n enum: ['simple', 'highlight', 'filter'],\n enumDescriptions: [\n localize('keyboardNavigationSettingKey.simple', \"Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes.\"),\n localize('keyboardNavigationSettingKey.highlight', \"Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements.\"),\n localize('keyboardNavigationSettingKey.filter', \"Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.\")\n ],\n default: 'highlight',\n description: localize('keyboardNavigationSettingKey', \"Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.\"),\n deprecated: true,\n deprecationMessage: localize('keyboardNavigationSettingKeyDeprecated', \"Please use 'workbench.list.defaultFindMode' instead.\")\n },\n [treeExpandMode]: {\n type: 'string',\n enum: ['singleClick', 'doubleClick'],\n default: 'singleClick',\n description: localize('expand mode', \"Controls how tree folders are expanded when clicking the folder names. Note that some trees and lists might choose to ignore this setting if it is not applicable.\"),\n }\n }\n});\n","import { Emitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const ILogService = createDecorator('logService');\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\n LogLevel[LogLevel[\"Off\"] = 6] = \"Off\";\n})(LogLevel || (LogLevel = {}));\nexport const DEFAULT_LOG_LEVEL = LogLevel.Info;\nexport class AbstractLogger extends Disposable {\n constructor() {\n super(...arguments);\n this.level = DEFAULT_LOG_LEVEL;\n this._onDidChangeLogLevel = this._register(new Emitter());\n }\n setLevel(level) {\n if (this.level !== level) {\n this.level = level;\n this._onDidChangeLogLevel.fire(this.level);\n }\n }\n getLevel() {\n return this.level;\n }\n}\nexport class ConsoleLogger extends AbstractLogger {\n constructor(logLevel = DEFAULT_LOG_LEVEL) {\n super();\n this.setLevel(logLevel);\n }\n trace(message, ...args) {\n if (this.getLevel() <= LogLevel.Trace) {\n console.log('%cTRACE', 'color: #888', message, ...args);\n }\n }\n debug(message, ...args) {\n if (this.getLevel() <= LogLevel.Debug) {\n console.log('%cDEBUG', 'background: #eee; color: #888', message, ...args);\n }\n }\n info(message, ...args) {\n if (this.getLevel() <= LogLevel.Info) {\n console.log('%c INFO', 'color: #33f', message, ...args);\n }\n }\n error(message, ...args) {\n if (this.getLevel() <= LogLevel.Error) {\n console.log('%c ERR', 'color: #f33', message, ...args);\n }\n }\n dispose() {\n // noop\n }\n}\nexport class LogService extends Disposable {\n constructor(logger) {\n super();\n this.logger = logger;\n this._register(logger);\n }\n getLevel() {\n return this.logger.getLevel();\n }\n trace(message, ...args) {\n this.logger.trace(message, ...args);\n }\n debug(message, ...args) {\n this.logger.debug(message, ...args);\n }\n info(message, ...args) {\n this.logger.info(message, ...args);\n }\n error(message, ...args) {\n this.logger.error(message, ...args);\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport Severity from '../../../base/common/severity.js';\nimport { localize } from '../../../nls.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport var MarkerSeverity;\n(function (MarkerSeverity) {\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\n})(MarkerSeverity || (MarkerSeverity = {}));\n(function (MarkerSeverity) {\n function compare(a, b) {\n return b - a;\n }\n MarkerSeverity.compare = compare;\n const _displayStrings = Object.create(null);\n _displayStrings[MarkerSeverity.Error] = localize('sev.error', \"Error\");\n _displayStrings[MarkerSeverity.Warning] = localize('sev.warning', \"Warning\");\n _displayStrings[MarkerSeverity.Info] = localize('sev.info', \"Info\");\n function toString(a) {\n return _displayStrings[a] || '';\n }\n MarkerSeverity.toString = toString;\n function fromSeverity(severity) {\n switch (severity) {\n case Severity.Error: return MarkerSeverity.Error;\n case Severity.Warning: return MarkerSeverity.Warning;\n case Severity.Info: return MarkerSeverity.Info;\n case Severity.Ignore: return MarkerSeverity.Hint;\n }\n }\n MarkerSeverity.fromSeverity = fromSeverity;\n function toSeverity(severity) {\n switch (severity) {\n case MarkerSeverity.Error: return Severity.Error;\n case MarkerSeverity.Warning: return Severity.Warning;\n case MarkerSeverity.Info: return Severity.Info;\n case MarkerSeverity.Hint: return Severity.Ignore;\n }\n }\n MarkerSeverity.toSeverity = toSeverity;\n})(MarkerSeverity || (MarkerSeverity = {}));\nexport var IMarkerData;\n(function (IMarkerData) {\n const emptyString = '';\n function makeKey(markerData) {\n return makeKeyOptionalMessage(markerData, true);\n }\n IMarkerData.makeKey = makeKey;\n function makeKeyOptionalMessage(markerData, useMessage) {\n const result = [emptyString];\n if (markerData.source) {\n result.push(markerData.source.replace('¦', '\\\\¦'));\n }\n else {\n result.push(emptyString);\n }\n if (markerData.code) {\n if (typeof markerData.code === 'string') {\n result.push(markerData.code.replace('¦', '\\\\¦'));\n }\n else {\n result.push(markerData.code.value.replace('¦', '\\\\¦'));\n }\n }\n else {\n result.push(emptyString);\n }\n if (markerData.severity !== undefined && markerData.severity !== null) {\n result.push(MarkerSeverity.toString(markerData.severity));\n }\n else {\n result.push(emptyString);\n }\n // Modifed to not include the message as part of the marker key to work around\n // https://github.com/microsoft/vscode/issues/77475\n if (markerData.message && useMessage) {\n result.push(markerData.message.replace('¦', '\\\\¦'));\n }\n else {\n result.push(emptyString);\n }\n if (markerData.startLineNumber !== undefined && markerData.startLineNumber !== null) {\n result.push(markerData.startLineNumber.toString());\n }\n else {\n result.push(emptyString);\n }\n if (markerData.startColumn !== undefined && markerData.startColumn !== null) {\n result.push(markerData.startColumn.toString());\n }\n else {\n result.push(emptyString);\n }\n if (markerData.endLineNumber !== undefined && markerData.endLineNumber !== null) {\n result.push(markerData.endLineNumber.toString());\n }\n else {\n result.push(emptyString);\n }\n if (markerData.endColumn !== undefined && markerData.endColumn !== null) {\n result.push(markerData.endColumn.toString());\n }\n else {\n result.push(emptyString);\n }\n result.push(emptyString);\n return result.join('¦');\n }\n IMarkerData.makeKeyOptionalMessage = makeKeyOptionalMessage;\n})(IMarkerData || (IMarkerData = {}));\nexport const IMarkerService = createDecorator('markerService');\n","import BaseSeverity from '../../../base/common/severity.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport var Severity = BaseSeverity;\nexport const INotificationService = createDecorator('notificationService');\nexport class NoOpNotification {\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { equalsIgnoreCase, startsWithIgnoreCase } from '../../../base/common/strings.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IOpenerService = createDecorator('openerService');\nexport const NullOpenerService = Object.freeze({\n _serviceBrand: undefined,\n registerOpener() { return Disposable.None; },\n registerValidator() { return Disposable.None; },\n registerExternalUriResolver() { return Disposable.None; },\n setDefaultExternalOpener() { },\n registerExternalOpener() { return Disposable.None; },\n open() {\n return __awaiter(this, void 0, void 0, function* () { return false; });\n },\n resolveExternalUri(uri) {\n return __awaiter(this, void 0, void 0, function* () { return { resolved: uri, dispose() { } }; });\n },\n});\nexport function matchesScheme(target, scheme) {\n if (URI.isUri(target)) {\n return equalsIgnoreCase(target.scheme, scheme);\n }\n else {\n return startsWithIgnoreCase(target, scheme + ':');\n }\n}\nexport function matchesSomeScheme(target, ...schemes) {\n return schemes.some(scheme => matchesScheme(target, scheme));\n}\n/**\n * file:///some/file.js#73\n * file:///some/file.js#L73\n * file:///some/file.js#73,84\n * file:///some/file.js#L73,84\n * file:///some/file.js#73-83\n * file:///some/file.js#L73-L83\n * file:///some/file.js#73,84-83,52\n * file:///some/file.js#L73,84-L83,52\n */\nexport function extractSelection(uri) {\n let selection = undefined;\n const match = /^L?(\\d+)(?:,(\\d+))?(-L?(\\d+)(?:,(\\d+))?)?/.exec(uri.fragment);\n if (match) {\n selection = {\n startLineNumber: parseInt(match[1]),\n startColumn: match[2] ? parseInt(match[2]) : 1,\n endLineNumber: match[4] ? parseInt(match[4]) : undefined,\n endColumn: match[4] ? (match[5] ? parseInt(match[5]) : 1) : undefined\n };\n uri = uri.with({ fragment: '' });\n }\n return { selection, uri };\n}\n","import { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IProgressService = createDecorator('progressService');\nexport const emptyProgressRunner = Object.freeze({\n total() { },\n worked() { },\n done() { }\n});\nexport class Progress {\n constructor(callback) {\n this.callback = callback;\n }\n report(item) {\n this._value = item;\n this.callback(this._value);\n }\n}\nProgress.None = Object.freeze({ report() { } });\nexport const IEditorProgressService = createDecorator('editorProgressService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { coalesce } from '../../../base/common/arrays.js';\nimport { toDisposable } from '../../../base/common/lifecycle.js';\nimport { Registry } from '../../registry/common/platform.js';\nexport var DefaultQuickAccessFilterValue;\n(function (DefaultQuickAccessFilterValue) {\n /**\n * Keep the value as it is given to quick access.\n */\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"PRESERVE\"] = 0] = \"PRESERVE\";\n /**\n * Use the value that was used last time something was accepted from the picker.\n */\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"LAST\"] = 1] = \"LAST\";\n})(DefaultQuickAccessFilterValue || (DefaultQuickAccessFilterValue = {}));\nexport const Extensions = {\n Quickaccess: 'workbench.contributions.quickaccess'\n};\nexport class QuickAccessRegistry {\n constructor() {\n this.providers = [];\n this.defaultProvider = undefined;\n }\n registerQuickAccessProvider(provider) {\n // Extract the default provider when no prefix is present\n if (provider.prefix.length === 0) {\n this.defaultProvider = provider;\n }\n else {\n this.providers.push(provider);\n }\n // sort the providers by decreasing prefix length, such that longer\n // prefixes take priority: 'ext' vs 'ext install' - the latter should win\n this.providers.sort((providerA, providerB) => providerB.prefix.length - providerA.prefix.length);\n return toDisposable(() => {\n this.providers.splice(this.providers.indexOf(provider), 1);\n if (this.defaultProvider === provider) {\n this.defaultProvider = undefined;\n }\n });\n }\n getQuickAccessProviders() {\n return coalesce([this.defaultProvider, ...this.providers]);\n }\n getQuickAccessProvider(prefix) {\n const result = prefix ? (this.providers.find(provider => prefix.startsWith(provider.prefix)) || undefined) : undefined;\n return result || this.defaultProvider;\n }\n}\nRegistry.add(Extensions.Quickaccess, new QuickAccessRegistry());\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport * from '../../../base/parts/quickinput/common/quickInput.js';\nexport const IQuickInputService = createDecorator('quickInputService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Assert from '../../../base/common/assert.js';\nimport * as Types from '../../../base/common/types.js';\nclass RegistryImpl {\n constructor() {\n this.data = new Map();\n }\n add(id, data) {\n Assert.ok(Types.isString(id));\n Assert.ok(Types.isObject(data));\n Assert.ok(!this.data.has(id), 'There is already an extension with this id');\n this.data.set(id, data);\n }\n as(id) {\n return this.data.get(id) || null;\n }\n}\nexport const Registry = new RegistryImpl();\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { ThrottledDelayer } from '../../../common/async.js';\nimport { Emitter, Event } from '../../../common/event.js';\nimport { Disposable } from '../../../common/lifecycle.js';\nimport { isUndefinedOrNull } from '../../../common/types.js';\nexport var StorageState;\n(function (StorageState) {\n StorageState[StorageState[\"None\"] = 0] = \"None\";\n StorageState[StorageState[\"Initialized\"] = 1] = \"Initialized\";\n StorageState[StorageState[\"Closed\"] = 2] = \"Closed\";\n})(StorageState || (StorageState = {}));\nexport class Storage extends Disposable {\n constructor(database, options = Object.create(null)) {\n super();\n this.database = database;\n this.options = options;\n this._onDidChangeStorage = this._register(new Emitter());\n this.onDidChangeStorage = this._onDidChangeStorage.event;\n this.state = StorageState.None;\n this.cache = new Map();\n this.flushDelayer = new ThrottledDelayer(Storage.DEFAULT_FLUSH_DELAY);\n this.pendingDeletes = new Set();\n this.pendingInserts = new Map();\n this.whenFlushedCallbacks = [];\n this.registerListeners();\n }\n registerListeners() {\n this._register(this.database.onDidChangeItemsExternal(e => this.onDidChangeItemsExternal(e)));\n }\n onDidChangeItemsExternal(e) {\n var _a, _b;\n // items that change external require us to update our\n // caches with the values. we just accept the value and\n // emit an event if there is a change.\n (_a = e.changed) === null || _a === void 0 ? void 0 : _a.forEach((value, key) => this.accept(key, value));\n (_b = e.deleted) === null || _b === void 0 ? void 0 : _b.forEach(key => this.accept(key, undefined));\n }\n accept(key, value) {\n if (this.state === StorageState.Closed) {\n return; // Return early if we are already closed\n }\n let changed = false;\n // Item got removed, check for deletion\n if (isUndefinedOrNull(value)) {\n changed = this.cache.delete(key);\n }\n // Item got updated, check for change\n else {\n const currentValue = this.cache.get(key);\n if (currentValue !== value) {\n this.cache.set(key, value);\n changed = true;\n }\n }\n // Signal to outside listeners\n if (changed) {\n this._onDidChangeStorage.fire(key);\n }\n }\n get(key, fallbackValue) {\n const value = this.cache.get(key);\n if (isUndefinedOrNull(value)) {\n return fallbackValue;\n }\n return value;\n }\n getBoolean(key, fallbackValue) {\n const value = this.get(key);\n if (isUndefinedOrNull(value)) {\n return fallbackValue;\n }\n return value === 'true';\n }\n getNumber(key, fallbackValue) {\n const value = this.get(key);\n if (isUndefinedOrNull(value)) {\n return fallbackValue;\n }\n return parseInt(value, 10);\n }\n set(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.state === StorageState.Closed) {\n return; // Return early if we are already closed\n }\n // We remove the key for undefined/null values\n if (isUndefinedOrNull(value)) {\n return this.delete(key);\n }\n // Otherwise, convert to String and store\n const valueStr = String(value);\n // Return early if value already set\n const currentValue = this.cache.get(key);\n if (currentValue === valueStr) {\n return;\n }\n // Update in cache and pending\n this.cache.set(key, valueStr);\n this.pendingInserts.set(key, valueStr);\n this.pendingDeletes.delete(key);\n // Event\n this._onDidChangeStorage.fire(key);\n // Accumulate work by scheduling after timeout\n return this.doFlush();\n });\n }\n delete(key) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.state === StorageState.Closed) {\n return; // Return early if we are already closed\n }\n // Remove from cache and add to pending\n const wasDeleted = this.cache.delete(key);\n if (!wasDeleted) {\n return; // Return early if value already deleted\n }\n if (!this.pendingDeletes.has(key)) {\n this.pendingDeletes.add(key);\n }\n this.pendingInserts.delete(key);\n // Event\n this._onDidChangeStorage.fire(key);\n // Accumulate work by scheduling after timeout\n return this.doFlush();\n });\n }\n get hasPending() {\n return this.pendingInserts.size > 0 || this.pendingDeletes.size > 0;\n }\n flushPending() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.hasPending) {\n return; // return early if nothing to do\n }\n // Get pending data\n const updateRequest = { insert: this.pendingInserts, delete: this.pendingDeletes };\n // Reset pending data for next run\n this.pendingDeletes = new Set();\n this.pendingInserts = new Map();\n // Update in storage and release any\n // waiters we have once done\n return this.database.updateItems(updateRequest).finally(() => {\n var _a;\n if (!this.hasPending) {\n while (this.whenFlushedCallbacks.length) {\n (_a = this.whenFlushedCallbacks.pop()) === null || _a === void 0 ? void 0 : _a();\n }\n }\n });\n });\n }\n doFlush(delay) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.flushDelayer.trigger(() => this.flushPending(), delay);\n });\n }\n dispose() {\n this.flushDelayer.dispose();\n super.dispose();\n }\n}\nStorage.DEFAULT_FLUSH_DELAY = 100;\nexport class InMemoryStorageDatabase {\n constructor() {\n this.onDidChangeItemsExternal = Event.None;\n this.items = new Map();\n }\n updateItems(request) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n (_a = request.insert) === null || _a === void 0 ? void 0 : _a.forEach((value, key) => this.items.set(key, value));\n (_b = request.delete) === null || _b === void 0 ? void 0 : _b.forEach(key => this.items.delete(key));\n });\n }\n}\n","import { Emitter, PauseableEmitter } from '../../../base/common/event.js';\nimport { Disposable } from '../../../base/common/lifecycle.js';\nimport { isUndefinedOrNull } from '../../../base/common/types.js';\nimport { InMemoryStorageDatabase, Storage } from '../../../base/parts/storage/common/storage.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nconst TARGET_KEY = '__$__targetStorageMarker';\nexport const IStorageService = createDecorator('storageService');\nexport var WillSaveStateReason;\n(function (WillSaveStateReason) {\n /**\n * No specific reason to save state.\n */\n WillSaveStateReason[WillSaveStateReason[\"NONE\"] = 0] = \"NONE\";\n /**\n * A hint that the workbench is about to shutdown.\n */\n WillSaveStateReason[WillSaveStateReason[\"SHUTDOWN\"] = 1] = \"SHUTDOWN\";\n})(WillSaveStateReason || (WillSaveStateReason = {}));\nexport class AbstractStorageService extends Disposable {\n constructor(options = { flushInterval: AbstractStorageService.DEFAULT_FLUSH_INTERVAL }) {\n super();\n this.options = options;\n this._onDidChangeValue = this._register(new PauseableEmitter());\n this.onDidChangeValue = this._onDidChangeValue.event;\n this._onDidChangeTarget = this._register(new PauseableEmitter());\n this._onWillSaveState = this._register(new Emitter());\n this.onWillSaveState = this._onWillSaveState.event;\n this._workspaceKeyTargets = undefined;\n this._profileKeyTargets = undefined;\n this._applicationKeyTargets = undefined;\n }\n emitDidChangeValue(scope, key) {\n // Specially handle `TARGET_KEY`\n if (key === TARGET_KEY) {\n // Clear our cached version which is now out of date\n switch (scope) {\n case -1 /* StorageScope.APPLICATION */:\n this._applicationKeyTargets = undefined;\n break;\n case 0 /* StorageScope.PROFILE */:\n this._profileKeyTargets = undefined;\n break;\n case 1 /* StorageScope.WORKSPACE */:\n this._workspaceKeyTargets = undefined;\n break;\n }\n // Emit as `didChangeTarget` event\n this._onDidChangeTarget.fire({ scope });\n }\n // Emit any other key to outside\n else {\n this._onDidChangeValue.fire({ scope, key, target: this.getKeyTargets(scope)[key] });\n }\n }\n get(key, scope, fallbackValue) {\n var _a;\n return (_a = this.getStorage(scope)) === null || _a === void 0 ? void 0 : _a.get(key, fallbackValue);\n }\n getBoolean(key, scope, fallbackValue) {\n var _a;\n return (_a = this.getStorage(scope)) === null || _a === void 0 ? void 0 : _a.getBoolean(key, fallbackValue);\n }\n getNumber(key, scope, fallbackValue) {\n var _a;\n return (_a = this.getStorage(scope)) === null || _a === void 0 ? void 0 : _a.getNumber(key, fallbackValue);\n }\n store(key, value, scope, target) {\n // We remove the key for undefined/null values\n if (isUndefinedOrNull(value)) {\n this.remove(key, scope);\n return;\n }\n // Update our datastructures but send events only after\n this.withPausedEmitters(() => {\n var _a;\n // Update key-target map\n this.updateKeyTarget(key, scope, target);\n // Store actual value\n (_a = this.getStorage(scope)) === null || _a === void 0 ? void 0 : _a.set(key, value);\n });\n }\n remove(key, scope) {\n // Update our datastructures but send events only after\n this.withPausedEmitters(() => {\n var _a;\n // Update key-target map\n this.updateKeyTarget(key, scope, undefined);\n // Remove actual key\n (_a = this.getStorage(scope)) === null || _a === void 0 ? void 0 : _a.delete(key);\n });\n }\n withPausedEmitters(fn) {\n // Pause emitters\n this._onDidChangeValue.pause();\n this._onDidChangeTarget.pause();\n try {\n fn();\n }\n finally {\n // Resume emitters\n this._onDidChangeValue.resume();\n this._onDidChangeTarget.resume();\n }\n }\n updateKeyTarget(key, scope, target) {\n var _a, _b;\n // Add\n const keyTargets = this.getKeyTargets(scope);\n if (typeof target === 'number') {\n if (keyTargets[key] !== target) {\n keyTargets[key] = target;\n (_a = this.getStorage(scope)) === null || _a === void 0 ? void 0 : _a.set(TARGET_KEY, JSON.stringify(keyTargets));\n }\n }\n // Remove\n else {\n if (typeof keyTargets[key] === 'number') {\n delete keyTargets[key];\n (_b = this.getStorage(scope)) === null || _b === void 0 ? void 0 : _b.set(TARGET_KEY, JSON.stringify(keyTargets));\n }\n }\n }\n get workspaceKeyTargets() {\n if (!this._workspaceKeyTargets) {\n this._workspaceKeyTargets = this.loadKeyTargets(1 /* StorageScope.WORKSPACE */);\n }\n return this._workspaceKeyTargets;\n }\n get profileKeyTargets() {\n if (!this._profileKeyTargets) {\n this._profileKeyTargets = this.loadKeyTargets(0 /* StorageScope.PROFILE */);\n }\n return this._profileKeyTargets;\n }\n get applicationKeyTargets() {\n if (!this._applicationKeyTargets) {\n this._applicationKeyTargets = this.loadKeyTargets(-1 /* StorageScope.APPLICATION */);\n }\n return this._applicationKeyTargets;\n }\n getKeyTargets(scope) {\n switch (scope) {\n case -1 /* StorageScope.APPLICATION */:\n return this.applicationKeyTargets;\n case 0 /* StorageScope.PROFILE */:\n return this.profileKeyTargets;\n default:\n return this.workspaceKeyTargets;\n }\n }\n loadKeyTargets(scope) {\n const keysRaw = this.get(TARGET_KEY, scope);\n if (keysRaw) {\n try {\n return JSON.parse(keysRaw);\n }\n catch (error) {\n // Fail gracefully\n }\n }\n return Object.create(null);\n }\n}\nAbstractStorageService.DEFAULT_FLUSH_INTERVAL = 60 * 1000; // every minute\nexport class InMemoryStorageService extends AbstractStorageService {\n constructor() {\n super();\n this.applicationStorage = this._register(new Storage(new InMemoryStorageDatabase()));\n this.profileStorage = this._register(new Storage(new InMemoryStorageDatabase()));\n this.workspaceStorage = this._register(new Storage(new InMemoryStorageDatabase()));\n this._register(this.workspaceStorage.onDidChangeStorage(key => this.emitDidChangeValue(1 /* StorageScope.WORKSPACE */, key)));\n this._register(this.profileStorage.onDidChangeStorage(key => this.emitDidChangeValue(0 /* StorageScope.PROFILE */, key)));\n this._register(this.applicationStorage.onDidChangeStorage(key => this.emitDidChangeValue(-1 /* StorageScope.APPLICATION */, key)));\n }\n getStorage(scope) {\n switch (scope) {\n case -1 /* StorageScope.APPLICATION */:\n return this.applicationStorage;\n case 0 /* StorageScope.PROFILE */:\n return this.profileStorage;\n default:\n return this.workspaceStorage;\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const ITelemetryService = createDecorator('telemetryService');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { RunOnceScheduler } from '../../../base/common/async.js';\nimport { Color, RGBA } from '../../../base/common/color.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { assertNever } from '../../../base/common/types.js';\nimport * as nls from '../../../nls.js';\nimport { Extensions as JSONExtensions } from '../../jsonschemas/common/jsonContributionRegistry.js';\nimport * as platform from '../../registry/common/platform.js';\n/**\n * Returns the css variable name for the given color identifier. Dots (`.`) are replaced with hyphens (`-`) and\n * everything is prefixed with `--vscode-`.\n *\n * @sample `editorSuggestWidget.background` is `--vscode-editorSuggestWidget-background`.\n */\nexport function asCssVariableName(colorIdent) {\n return `--vscode-${colorIdent.replace(/\\./g, '-')}`;\n}\n// color registry\nexport const Extensions = {\n ColorContribution: 'base.contributions.colors'\n};\nclass ColorRegistry {\n constructor() {\n this._onDidChangeSchema = new Emitter();\n this.onDidChangeSchema = this._onDidChangeSchema.event;\n this.colorSchema = { type: 'object', properties: {} };\n this.colorReferenceSchema = { type: 'string', enum: [], enumDescriptions: [] };\n this.colorsById = {};\n }\n registerColor(id, defaults, description, needsTransparency = false, deprecationMessage) {\n const colorContribution = { id, description, defaults, needsTransparency, deprecationMessage };\n this.colorsById[id] = colorContribution;\n const propertySchema = { type: 'string', description, format: 'color-hex', defaultSnippets: [{ body: '${1:#ff0000}' }] };\n if (deprecationMessage) {\n propertySchema.deprecationMessage = deprecationMessage;\n }\n this.colorSchema.properties[id] = propertySchema;\n this.colorReferenceSchema.enum.push(id);\n this.colorReferenceSchema.enumDescriptions.push(description);\n this._onDidChangeSchema.fire();\n return id;\n }\n getColors() {\n return Object.keys(this.colorsById).map(id => this.colorsById[id]);\n }\n resolveDefaultColor(id, theme) {\n const colorDesc = this.colorsById[id];\n if (colorDesc && colorDesc.defaults) {\n const colorValue = colorDesc.defaults[theme.type];\n return resolveColorValue(colorValue, theme);\n }\n return undefined;\n }\n getColorSchema() {\n return this.colorSchema;\n }\n toString() {\n const sorter = (a, b) => {\n const cat1 = a.indexOf('.') === -1 ? 0 : 1;\n const cat2 = b.indexOf('.') === -1 ? 0 : 1;\n if (cat1 !== cat2) {\n return cat1 - cat2;\n }\n return a.localeCompare(b);\n };\n return Object.keys(this.colorsById).sort(sorter).map(k => `- \\`${k}\\`: ${this.colorsById[k].description}`).join('\\n');\n }\n}\nconst colorRegistry = new ColorRegistry();\nplatform.Registry.add(Extensions.ColorContribution, colorRegistry);\nfunction migrateColorDefaults(o) {\n if (o === null) {\n return o;\n }\n if (typeof o.hcLight === 'undefined') {\n if (o.hcDark === null || typeof o.hcDark === 'string') {\n o.hcLight = o.hcDark;\n }\n else {\n o.hcLight = o.light;\n }\n }\n return o;\n}\nexport function registerColor(id, defaults, description, needsTransparency, deprecationMessage) {\n return colorRegistry.registerColor(id, migrateColorDefaults(defaults), description, needsTransparency, deprecationMessage);\n}\n// ----- base colors\nexport const foreground = registerColor('foreground', { dark: '#CCCCCC', light: '#616161', hcDark: '#FFFFFF', hcLight: '#292929' }, nls.localize('foreground', \"Overall foreground color. This color is only used if not overridden by a component.\"));\nexport const disabledForeground = registerColor('disabledForeground', { dark: '#CCCCCC80', light: '#61616180', hcDark: '#A5A5A5', hcLight: '#7F7F7F' }, nls.localize('disabledForeground', \"Overall foreground for disabled elements. This color is only used if not overridden by a component.\"));\nexport const errorForeground = registerColor('errorForeground', { dark: '#F48771', light: '#A1260D', hcDark: '#F48771', hcLight: '#B5200D' }, nls.localize('errorForeground', \"Overall foreground color for error messages. This color is only used if not overridden by a component.\"));\nexport const descriptionForeground = registerColor('descriptionForeground', { light: '#717171', dark: transparent(foreground, 0.7), hcDark: transparent(foreground, 0.7), hcLight: transparent(foreground, 0.7) }, nls.localize('descriptionForeground', \"Foreground color for description text providing additional information, for example for a label.\"));\nexport const iconForeground = registerColor('icon.foreground', { dark: '#C5C5C5', light: '#424242', hcDark: '#FFFFFF', hcLight: '#292929' }, nls.localize('iconForeground', \"The default color for icons in the workbench.\"));\nexport const focusBorder = registerColor('focusBorder', { dark: '#007FD4', light: '#0090F1', hcDark: '#F38518', hcLight: '#0F4A85' }, nls.localize('focusBorder', \"Overall border color for focused elements. This color is only used if not overridden by a component.\"));\nexport const contrastBorder = registerColor('contrastBorder', { light: null, dark: null, hcDark: '#6FC3DF', hcLight: '#0F4A85' }, nls.localize('contrastBorder', \"An extra border around elements to separate them from others for greater contrast.\"));\nexport const activeContrastBorder = registerColor('contrastActiveBorder', { light: null, dark: null, hcDark: focusBorder, hcLight: focusBorder }, nls.localize('activeContrastBorder', \"An extra border around active elements to separate them from others for greater contrast.\"));\nexport const selectionBackground = registerColor('selection.background', { light: null, dark: null, hcDark: null, hcLight: null }, nls.localize('selectionBackground', \"The background color of text selections in the workbench (e.g. for input fields or text areas). Note that this does not apply to selections within the editor.\"));\n// ------ text colors\nexport const textSeparatorForeground = registerColor('textSeparator.foreground', { light: '#0000002e', dark: '#ffffff2e', hcDark: Color.black, hcLight: '#292929' }, nls.localize('textSeparatorForeground', \"Color for text separators.\"));\nexport const textLinkForeground = registerColor('textLink.foreground', { light: '#006AB1', dark: '#3794FF', hcDark: '#3794FF', hcLight: '#0F4A85' }, nls.localize('textLinkForeground', \"Foreground color for links in text.\"));\nexport const textLinkActiveForeground = registerColor('textLink.activeForeground', { light: '#006AB1', dark: '#3794FF', hcDark: '#3794FF', hcLight: '#0F4A85' }, nls.localize('textLinkActiveForeground', \"Foreground color for links in text when clicked on and on mouse hover.\"));\nexport const textPreformatForeground = registerColor('textPreformat.foreground', { light: '#A31515', dark: '#D7BA7D', hcDark: '#D7BA7D', hcLight: '#292929' }, nls.localize('textPreformatForeground', \"Foreground color for preformatted text segments.\"));\nexport const textBlockQuoteBackground = registerColor('textBlockQuote.background', { light: '#7f7f7f1a', dark: '#7f7f7f1a', hcDark: null, hcLight: '#F2F2F2' }, nls.localize('textBlockQuoteBackground', \"Background color for block quotes in text.\"));\nexport const textBlockQuoteBorder = registerColor('textBlockQuote.border', { light: '#007acc80', dark: '#007acc80', hcDark: Color.white, hcLight: '#292929' }, nls.localize('textBlockQuoteBorder', \"Border color for block quotes in text.\"));\nexport const textCodeBlockBackground = registerColor('textCodeBlock.background', { light: '#dcdcdc66', dark: '#0a0a0a66', hcDark: Color.black, hcLight: '#F2F2F2' }, nls.localize('textCodeBlockBackground', \"Background color for code blocks in text.\"));\n// ----- widgets\nexport const widgetShadow = registerColor('widget.shadow', { dark: transparent(Color.black, .36), light: transparent(Color.black, .16), hcDark: null, hcLight: null }, nls.localize('widgetShadow', 'Shadow color of widgets such as find/replace inside the editor.'));\nexport const inputBackground = registerColor('input.background', { dark: '#3C3C3C', light: Color.white, hcDark: Color.black, hcLight: Color.white }, nls.localize('inputBoxBackground', \"Input box background.\"));\nexport const inputForeground = registerColor('input.foreground', { dark: foreground, light: foreground, hcDark: foreground, hcLight: foreground }, nls.localize('inputBoxForeground', \"Input box foreground.\"));\nexport const inputBorder = registerColor('input.border', { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('inputBoxBorder', \"Input box border.\"));\nexport const inputActiveOptionBorder = registerColor('inputOption.activeBorder', { dark: '#007ACC00', light: '#007ACC00', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('inputBoxActiveOptionBorder', \"Border color of activated options in input fields.\"));\nexport const inputActiveOptionHoverBackground = registerColor('inputOption.hoverBackground', { dark: '#5a5d5e80', light: '#b8b8b850', hcDark: null, hcLight: null }, nls.localize('inputOption.hoverBackground', \"Background color of activated options in input fields.\"));\nexport const inputActiveOptionBackground = registerColor('inputOption.activeBackground', { dark: transparent(focusBorder, 0.4), light: transparent(focusBorder, 0.2), hcDark: Color.transparent, hcLight: Color.transparent }, nls.localize('inputOption.activeBackground', \"Background hover color of options in input fields.\"));\nexport const inputActiveOptionForeground = registerColor('inputOption.activeForeground', { dark: Color.white, light: Color.black, hcDark: null, hcLight: foreground }, nls.localize('inputOption.activeForeground', \"Foreground color of activated options in input fields.\"));\nexport const inputPlaceholderForeground = registerColor('input.placeholderForeground', { light: transparent(foreground, 0.5), dark: transparent(foreground, 0.5), hcDark: transparent(foreground, 0.7), hcLight: transparent(foreground, 0.7) }, nls.localize('inputPlaceholderForeground', \"Input box foreground color for placeholder text.\"));\nexport const inputValidationInfoBackground = registerColor('inputValidation.infoBackground', { dark: '#063B49', light: '#D6ECF2', hcDark: Color.black, hcLight: Color.white }, nls.localize('inputValidationInfoBackground', \"Input validation background color for information severity.\"));\nexport const inputValidationInfoForeground = registerColor('inputValidation.infoForeground', { dark: null, light: null, hcDark: null, hcLight: foreground }, nls.localize('inputValidationInfoForeground', \"Input validation foreground color for information severity.\"));\nexport const inputValidationInfoBorder = registerColor('inputValidation.infoBorder', { dark: '#007acc', light: '#007acc', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('inputValidationInfoBorder', \"Input validation border color for information severity.\"));\nexport const inputValidationWarningBackground = registerColor('inputValidation.warningBackground', { dark: '#352A05', light: '#F6F5D2', hcDark: Color.black, hcLight: Color.white }, nls.localize('inputValidationWarningBackground', \"Input validation background color for warning severity.\"));\nexport const inputValidationWarningForeground = registerColor('inputValidation.warningForeground', { dark: null, light: null, hcDark: null, hcLight: foreground }, nls.localize('inputValidationWarningForeground', \"Input validation foreground color for warning severity.\"));\nexport const inputValidationWarningBorder = registerColor('inputValidation.warningBorder', { dark: '#B89500', light: '#B89500', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('inputValidationWarningBorder', \"Input validation border color for warning severity.\"));\nexport const inputValidationErrorBackground = registerColor('inputValidation.errorBackground', { dark: '#5A1D1D', light: '#F2DEDE', hcDark: Color.black, hcLight: Color.white }, nls.localize('inputValidationErrorBackground', \"Input validation background color for error severity.\"));\nexport const inputValidationErrorForeground = registerColor('inputValidation.errorForeground', { dark: null, light: null, hcDark: null, hcLight: foreground }, nls.localize('inputValidationErrorForeground', \"Input validation foreground color for error severity.\"));\nexport const inputValidationErrorBorder = registerColor('inputValidation.errorBorder', { dark: '#BE1100', light: '#BE1100', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('inputValidationErrorBorder', \"Input validation border color for error severity.\"));\nexport const selectBackground = registerColor('dropdown.background', { dark: '#3C3C3C', light: Color.white, hcDark: Color.black, hcLight: Color.white }, nls.localize('dropdownBackground', \"Dropdown background.\"));\nexport const selectListBackground = registerColor('dropdown.listBackground', { dark: null, light: null, hcDark: Color.black, hcLight: Color.white }, nls.localize('dropdownListBackground', \"Dropdown list background.\"));\nexport const selectForeground = registerColor('dropdown.foreground', { dark: '#F0F0F0', light: null, hcDark: Color.white, hcLight: foreground }, nls.localize('dropdownForeground', \"Dropdown foreground.\"));\nexport const selectBorder = registerColor('dropdown.border', { dark: selectBackground, light: '#CECECE', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('dropdownBorder', \"Dropdown border.\"));\nexport const checkboxBackground = registerColor('checkbox.background', { dark: selectBackground, light: selectBackground, hcDark: selectBackground, hcLight: selectBackground }, nls.localize('checkbox.background', \"Background color of checkbox widget.\"));\nexport const checkboxForeground = registerColor('checkbox.foreground', { dark: selectForeground, light: selectForeground, hcDark: selectForeground, hcLight: selectForeground }, nls.localize('checkbox.foreground', \"Foreground color of checkbox widget.\"));\nexport const checkboxBorder = registerColor('checkbox.border', { dark: selectBorder, light: selectBorder, hcDark: selectBorder, hcLight: selectBorder }, nls.localize('checkbox.border', \"Border color of checkbox widget.\"));\nexport const buttonForeground = registerColor('button.foreground', { dark: Color.white, light: Color.white, hcDark: Color.white, hcLight: Color.white }, nls.localize('buttonForeground', \"Button foreground color.\"));\nexport const buttonSeparator = registerColor('button.separator', { dark: transparent(buttonForeground, .4), light: transparent(buttonForeground, .4), hcDark: transparent(buttonForeground, .4), hcLight: transparent(buttonForeground, .4) }, nls.localize('buttonSeparator', \"Button separator color.\"));\nexport const buttonBackground = registerColor('button.background', { dark: '#0E639C', light: '#007ACC', hcDark: null, hcLight: '#0F4A85' }, nls.localize('buttonBackground', \"Button background color.\"));\nexport const buttonHoverBackground = registerColor('button.hoverBackground', { dark: lighten(buttonBackground, 0.2), light: darken(buttonBackground, 0.2), hcDark: null, hcLight: null }, nls.localize('buttonHoverBackground', \"Button background color when hovering.\"));\nexport const buttonBorder = registerColor('button.border', { dark: contrastBorder, light: contrastBorder, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('buttonBorder', \"Button border color.\"));\nexport const buttonSecondaryForeground = registerColor('button.secondaryForeground', { dark: Color.white, light: Color.white, hcDark: Color.white, hcLight: foreground }, nls.localize('buttonSecondaryForeground', \"Secondary button foreground color.\"));\nexport const buttonSecondaryBackground = registerColor('button.secondaryBackground', { dark: '#3A3D41', light: '#5F6A79', hcDark: null, hcLight: Color.white }, nls.localize('buttonSecondaryBackground', \"Secondary button background color.\"));\nexport const buttonSecondaryHoverBackground = registerColor('button.secondaryHoverBackground', { dark: lighten(buttonSecondaryBackground, 0.2), light: darken(buttonSecondaryBackground, 0.2), hcDark: null, hcLight: null }, nls.localize('buttonSecondaryHoverBackground', \"Secondary button background color when hovering.\"));\nexport const badgeBackground = registerColor('badge.background', { dark: '#4D4D4D', light: '#C4C4C4', hcDark: Color.black, hcLight: '#0F4A85' }, nls.localize('badgeBackground', \"Badge background color. Badges are small information labels, e.g. for search results count.\"));\nexport const badgeForeground = registerColor('badge.foreground', { dark: Color.white, light: '#333', hcDark: Color.white, hcLight: Color.white }, nls.localize('badgeForeground', \"Badge foreground color. Badges are small information labels, e.g. for search results count.\"));\nexport const scrollbarShadow = registerColor('scrollbar.shadow', { dark: '#000000', light: '#DDDDDD', hcDark: null, hcLight: null }, nls.localize('scrollbarShadow', \"Scrollbar shadow to indicate that the view is scrolled.\"));\nexport const scrollbarSliderBackground = registerColor('scrollbarSlider.background', { dark: Color.fromHex('#797979').transparent(0.4), light: Color.fromHex('#646464').transparent(0.4), hcDark: transparent(contrastBorder, 0.6), hcLight: transparent(contrastBorder, 0.4) }, nls.localize('scrollbarSliderBackground', \"Scrollbar slider background color.\"));\nexport const scrollbarSliderHoverBackground = registerColor('scrollbarSlider.hoverBackground', { dark: Color.fromHex('#646464').transparent(0.7), light: Color.fromHex('#646464').transparent(0.7), hcDark: transparent(contrastBorder, 0.8), hcLight: transparent(contrastBorder, 0.8) }, nls.localize('scrollbarSliderHoverBackground', \"Scrollbar slider background color when hovering.\"));\nexport const scrollbarSliderActiveBackground = registerColor('scrollbarSlider.activeBackground', { dark: Color.fromHex('#BFBFBF').transparent(0.4), light: Color.fromHex('#000000').transparent(0.6), hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('scrollbarSliderActiveBackground', \"Scrollbar slider background color when clicked on.\"));\nexport const progressBarBackground = registerColor('progressBar.background', { dark: Color.fromHex('#0E70C0'), light: Color.fromHex('#0E70C0'), hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('progressBarBackground', \"Background color of the progress bar that can show for long running operations.\"));\nexport const editorErrorBackground = registerColor('editorError.background', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('editorError.background', 'Background color of error text in the editor. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const editorErrorForeground = registerColor('editorError.foreground', { dark: '#F14C4C', light: '#E51400', hcDark: '#F48771', hcLight: '#B5200D' }, nls.localize('editorError.foreground', 'Foreground color of error squigglies in the editor.'));\nexport const editorErrorBorder = registerColor('editorError.border', { dark: null, light: null, hcDark: Color.fromHex('#E47777').transparent(0.8), hcLight: '#B5200D' }, nls.localize('errorBorder', 'Border color of error boxes in the editor.'));\nexport const editorWarningBackground = registerColor('editorWarning.background', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('editorWarning.background', 'Background color of warning text in the editor. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const editorWarningForeground = registerColor('editorWarning.foreground', { dark: '#CCA700', light: '#BF8803', hcDark: '#FFD37', hcLight: '#895503' }, nls.localize('editorWarning.foreground', 'Foreground color of warning squigglies in the editor.'));\nexport const editorWarningBorder = registerColor('editorWarning.border', { dark: null, light: null, hcDark: Color.fromHex('#FFCC00').transparent(0.8), hcLight: '#' }, nls.localize('warningBorder', 'Border color of warning boxes in the editor.'));\nexport const editorInfoBackground = registerColor('editorInfo.background', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('editorInfo.background', 'Background color of info text in the editor. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const editorInfoForeground = registerColor('editorInfo.foreground', { dark: '#3794FF', light: '#1a85ff', hcDark: '#3794FF', hcLight: '#1a85ff' }, nls.localize('editorInfo.foreground', 'Foreground color of info squigglies in the editor.'));\nexport const editorInfoBorder = registerColor('editorInfo.border', { dark: null, light: null, hcDark: Color.fromHex('#3794FF').transparent(0.8), hcLight: '#292929' }, nls.localize('infoBorder', 'Border color of info boxes in the editor.'));\nexport const editorHintForeground = registerColor('editorHint.foreground', { dark: Color.fromHex('#eeeeee').transparent(0.7), light: '#6c6c6c', hcDark: null, hcLight: null }, nls.localize('editorHint.foreground', 'Foreground color of hint squigglies in the editor.'));\nexport const editorHintBorder = registerColor('editorHint.border', { dark: null, light: null, hcDark: Color.fromHex('#eeeeee').transparent(0.8), hcLight: '#292929' }, nls.localize('hintBorder', 'Border color of hint boxes in the editor.'));\nexport const sashHoverBorder = registerColor('sash.hoverBorder', { dark: focusBorder, light: focusBorder, hcDark: focusBorder, hcLight: focusBorder }, nls.localize('sashActiveBorder', \"Border color of active sashes.\"));\n/**\n * Editor background color.\n */\nexport const editorBackground = registerColor('editor.background', { light: '#ffffff', dark: '#1E1E1E', hcDark: Color.black, hcLight: Color.white }, nls.localize('editorBackground', \"Editor background color.\"));\n/**\n * Editor foreground color.\n */\nexport const editorForeground = registerColor('editor.foreground', { light: '#333333', dark: '#BBBBBB', hcDark: Color.white, hcLight: foreground }, nls.localize('editorForeground', \"Editor default foreground color.\"));\n/**\n * Sticky scroll\n */\nexport const editorStickyScrollBackground = registerColor('editorStickyScroll.background', { light: editorBackground, dark: editorBackground, hcDark: editorBackground, hcLight: editorBackground }, nls.localize('editorStickyScrollBackground', \"Sticky scroll background color for the editor\"));\nexport const editorStickyScrollHoverBackground = registerColor('editorStickyScrollHover.background', { dark: '#2A2D2E', light: '#F0F0F0', hcDark: null, hcLight: Color.fromHex('#0F4A85').transparent(0.1) }, nls.localize('editorStickyScrollHoverBackground', \"Sticky scroll on hover background color for the editor\"));\n/**\n * Editor widgets\n */\nexport const editorWidgetBackground = registerColor('editorWidget.background', { dark: '#252526', light: '#F3F3F3', hcDark: '#0C141F', hcLight: Color.white }, nls.localize('editorWidgetBackground', 'Background color of editor widgets, such as find/replace.'));\nexport const editorWidgetForeground = registerColor('editorWidget.foreground', { dark: foreground, light: foreground, hcDark: foreground, hcLight: foreground }, nls.localize('editorWidgetForeground', 'Foreground color of editor widgets, such as find/replace.'));\nexport const editorWidgetBorder = registerColor('editorWidget.border', { dark: '#454545', light: '#C8C8C8', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('editorWidgetBorder', 'Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.'));\nexport const editorWidgetResizeBorder = registerColor('editorWidget.resizeBorder', { light: null, dark: null, hcDark: null, hcLight: null }, nls.localize('editorWidgetResizeBorder', \"Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.\"));\n/**\n * Quick pick widget\n */\nexport const quickInputBackground = registerColor('quickInput.background', { dark: editorWidgetBackground, light: editorWidgetBackground, hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, nls.localize('pickerBackground', \"Quick picker background color. The quick picker widget is the container for pickers like the command palette.\"));\nexport const quickInputForeground = registerColor('quickInput.foreground', { dark: editorWidgetForeground, light: editorWidgetForeground, hcDark: editorWidgetForeground, hcLight: editorWidgetForeground }, nls.localize('pickerForeground', \"Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.\"));\nexport const quickInputTitleBackground = registerColor('quickInputTitle.background', { dark: new Color(new RGBA(255, 255, 255, 0.105)), light: new Color(new RGBA(0, 0, 0, 0.06)), hcDark: '#000000', hcLight: Color.white }, nls.localize('pickerTitleBackground', \"Quick picker title background color. The quick picker widget is the container for pickers like the command palette.\"));\nexport const pickerGroupForeground = registerColor('pickerGroup.foreground', { dark: '#3794FF', light: '#0066BF', hcDark: Color.white, hcLight: '#0F4A85' }, nls.localize('pickerGroupForeground', \"Quick picker color for grouping labels.\"));\nexport const pickerGroupBorder = registerColor('pickerGroup.border', { dark: '#3F3F46', light: '#CCCEDB', hcDark: Color.white, hcLight: '#0F4A85' }, nls.localize('pickerGroupBorder', \"Quick picker color for grouping borders.\"));\n/**\n * Keybinding label\n */\nexport const keybindingLabelBackground = registerColor('keybindingLabel.background', { dark: new Color(new RGBA(128, 128, 128, 0.17)), light: new Color(new RGBA(221, 221, 221, 0.4)), hcDark: Color.transparent, hcLight: Color.transparent }, nls.localize('keybindingLabelBackground', \"Keybinding label background color. The keybinding label is used to represent a keyboard shortcut.\"));\nexport const keybindingLabelForeground = registerColor('keybindingLabel.foreground', { dark: Color.fromHex('#CCCCCC'), light: Color.fromHex('#555555'), hcDark: Color.white, hcLight: foreground }, nls.localize('keybindingLabelForeground', \"Keybinding label foreground color. The keybinding label is used to represent a keyboard shortcut.\"));\nexport const keybindingLabelBorder = registerColor('keybindingLabel.border', { dark: new Color(new RGBA(51, 51, 51, 0.6)), light: new Color(new RGBA(204, 204, 204, 0.4)), hcDark: new Color(new RGBA(111, 195, 223)), hcLight: contrastBorder }, nls.localize('keybindingLabelBorder', \"Keybinding label border color. The keybinding label is used to represent a keyboard shortcut.\"));\nexport const keybindingLabelBottomBorder = registerColor('keybindingLabel.bottomBorder', { dark: new Color(new RGBA(68, 68, 68, 0.6)), light: new Color(new RGBA(187, 187, 187, 0.4)), hcDark: new Color(new RGBA(111, 195, 223)), hcLight: foreground }, nls.localize('keybindingLabelBottomBorder', \"Keybinding label border bottom color. The keybinding label is used to represent a keyboard shortcut.\"));\n/**\n * Editor selection colors.\n */\nexport const editorSelectionBackground = registerColor('editor.selectionBackground', { light: '#ADD6FF', dark: '#264F78', hcDark: '#f3f518', hcLight: '#0F4A85' }, nls.localize('editorSelectionBackground', \"Color of the editor selection.\"));\nexport const editorSelectionForeground = registerColor('editor.selectionForeground', { light: null, dark: null, hcDark: '#000000', hcLight: Color.white }, nls.localize('editorSelectionForeground', \"Color of the selected text for high contrast.\"));\nexport const editorInactiveSelection = registerColor('editor.inactiveSelectionBackground', { light: transparent(editorSelectionBackground, 0.5), dark: transparent(editorSelectionBackground, 0.5), hcDark: transparent(editorSelectionBackground, 0.7), hcLight: transparent(editorSelectionBackground, 0.5) }, nls.localize('editorInactiveSelection', \"Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations.\"), true);\nexport const editorSelectionHighlight = registerColor('editor.selectionHighlightBackground', { light: lessProminent(editorSelectionBackground, editorBackground, 0.3, 0.6), dark: lessProminent(editorSelectionBackground, editorBackground, 0.3, 0.6), hcDark: null, hcLight: null }, nls.localize('editorSelectionHighlight', 'Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const editorSelectionHighlightBorder = registerColor('editor.selectionHighlightBorder', { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('editorSelectionHighlightBorder', \"Border color for regions with the same content as the selection.\"));\n/**\n * Editor find match colors.\n */\nexport const editorFindMatch = registerColor('editor.findMatchBackground', { light: '#A8AC94', dark: '#515C6A', hcDark: null, hcLight: null }, nls.localize('editorFindMatch', \"Color of the current search match.\"));\nexport const editorFindMatchHighlight = registerColor('editor.findMatchHighlightBackground', { light: '#EA5C0055', dark: '#EA5C0055', hcDark: null, hcLight: null }, nls.localize('findMatchHighlight', \"Color of the other search matches. The color must not be opaque so as not to hide underlying decorations.\"), true);\nexport const editorFindRangeHighlight = registerColor('editor.findRangeHighlightBackground', { dark: '#3a3d4166', light: '#b4b4b44d', hcDark: null, hcLight: null }, nls.localize('findRangeHighlight', \"Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.\"), true);\nexport const editorFindMatchBorder = registerColor('editor.findMatchBorder', { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('editorFindMatchBorder', \"Border color of the current search match.\"));\nexport const editorFindMatchHighlightBorder = registerColor('editor.findMatchHighlightBorder', { light: null, dark: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('findMatchHighlightBorder', \"Border color of the other search matches.\"));\nexport const editorFindRangeHighlightBorder = registerColor('editor.findRangeHighlightBorder', { dark: null, light: null, hcDark: transparent(activeContrastBorder, 0.4), hcLight: transparent(activeContrastBorder, 0.4) }, nls.localize('findRangeHighlightBorder', \"Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.\"), true);\n/**\n * Search Editor query match colors.\n *\n * Distinct from normal editor find match to allow for better differentiation\n */\nexport const searchEditorFindMatch = registerColor('searchEditor.findMatchBackground', { light: transparent(editorFindMatchHighlight, 0.66), dark: transparent(editorFindMatchHighlight, 0.66), hcDark: editorFindMatchHighlight, hcLight: editorFindMatchHighlight }, nls.localize('searchEditor.queryMatch', \"Color of the Search Editor query matches.\"));\nexport const searchEditorFindMatchBorder = registerColor('searchEditor.findMatchBorder', { light: transparent(editorFindMatchHighlightBorder, 0.66), dark: transparent(editorFindMatchHighlightBorder, 0.66), hcDark: editorFindMatchHighlightBorder, hcLight: editorFindMatchHighlightBorder }, nls.localize('searchEditor.editorFindMatchBorder', \"Border color of the Search Editor query matches.\"));\n/**\n * Editor hover\n */\nexport const editorHoverHighlight = registerColor('editor.hoverHighlightBackground', { light: '#ADD6FF26', dark: '#264f7840', hcDark: '#ADD6FF26', hcLight: null }, nls.localize('hoverHighlight', 'Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const editorHoverBackground = registerColor('editorHoverWidget.background', { light: editorWidgetBackground, dark: editorWidgetBackground, hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, nls.localize('hoverBackground', 'Background color of the editor hover.'));\nexport const editorHoverForeground = registerColor('editorHoverWidget.foreground', { light: editorWidgetForeground, dark: editorWidgetForeground, hcDark: editorWidgetForeground, hcLight: editorWidgetForeground }, nls.localize('hoverForeground', 'Foreground color of the editor hover.'));\nexport const editorHoverBorder = registerColor('editorHoverWidget.border', { light: editorWidgetBorder, dark: editorWidgetBorder, hcDark: editorWidgetBorder, hcLight: editorWidgetBorder }, nls.localize('hoverBorder', 'Border color of the editor hover.'));\nexport const editorHoverStatusBarBackground = registerColor('editorHoverWidget.statusBarBackground', { dark: lighten(editorHoverBackground, 0.2), light: darken(editorHoverBackground, 0.05), hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, nls.localize('statusBarBackground', \"Background color of the editor hover status bar.\"));\n/**\n * Editor link colors\n */\nexport const editorActiveLinkForeground = registerColor('editorLink.activeForeground', { dark: '#4E94CE', light: Color.blue, hcDark: Color.cyan, hcLight: '#292929' }, nls.localize('activeLinkForeground', 'Color of active links.'));\n/**\n * Inline hints\n */\nexport const editorInlayHintForeground = registerColor('editorInlayHint.foreground', { dark: transparent(badgeForeground, .8), light: transparent(badgeForeground, .8), hcDark: badgeForeground, hcLight: badgeForeground }, nls.localize('editorInlayHintForeground', 'Foreground color of inline hints'));\nexport const editorInlayHintBackground = registerColor('editorInlayHint.background', { dark: transparent(badgeBackground, .6), light: transparent(badgeBackground, .3), hcDark: badgeBackground, hcLight: badgeBackground }, nls.localize('editorInlayHintBackground', 'Background color of inline hints'));\nexport const editorInlayHintTypeForeground = registerColor('editorInlayHint.typeForeground', { dark: editorInlayHintForeground, light: editorInlayHintForeground, hcDark: editorInlayHintForeground, hcLight: editorInlayHintForeground }, nls.localize('editorInlayHintForegroundTypes', 'Foreground color of inline hints for types'));\nexport const editorInlayHintTypeBackground = registerColor('editorInlayHint.typeBackground', { dark: editorInlayHintBackground, light: editorInlayHintBackground, hcDark: editorInlayHintBackground, hcLight: editorInlayHintBackground }, nls.localize('editorInlayHintBackgroundTypes', 'Background color of inline hints for types'));\nexport const editorInlayHintParameterForeground = registerColor('editorInlayHint.parameterForeground', { dark: editorInlayHintForeground, light: editorInlayHintForeground, hcDark: editorInlayHintForeground, hcLight: editorInlayHintForeground }, nls.localize('editorInlayHintForegroundParameter', 'Foreground color of inline hints for parameters'));\nexport const editorInlayHintParameterBackground = registerColor('editorInlayHint.parameterBackground', { dark: editorInlayHintBackground, light: editorInlayHintBackground, hcDark: editorInlayHintBackground, hcLight: editorInlayHintBackground }, nls.localize('editorInlayHintBackgroundParameter', 'Background color of inline hints for parameters'));\n/**\n * Editor lighbulb icon colors\n */\nexport const editorLightBulbForeground = registerColor('editorLightBulb.foreground', { dark: '#FFCC00', light: '#DDB100', hcDark: '#FFCC00', hcLight: '#007ACC' }, nls.localize('editorLightBulbForeground', \"The color used for the lightbulb actions icon.\"));\nexport const editorLightBulbAutoFixForeground = registerColor('editorLightBulbAutoFix.foreground', { dark: '#75BEFF', light: '#007ACC', hcDark: '#75BEFF', hcLight: '#007ACC' }, nls.localize('editorLightBulbAutoFixForeground', \"The color used for the lightbulb auto fix actions icon.\"));\n/**\n * Diff Editor Colors\n */\nexport const defaultInsertColor = new Color(new RGBA(155, 185, 85, .2));\nexport const defaultRemoveColor = new Color(new RGBA(255, 0, 0, .2));\nexport const diffInserted = registerColor('diffEditor.insertedTextBackground', { dark: '#9ccc2c33', light: '#9ccc2c66', hcDark: null, hcLight: null }, nls.localize('diffEditorInserted', 'Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const diffRemoved = registerColor('diffEditor.removedTextBackground', { dark: '#ff000066', light: '#ff00004d', hcDark: null, hcLight: null }, nls.localize('diffEditorRemoved', 'Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const diffInsertedLine = registerColor('diffEditor.insertedLineBackground', { dark: defaultInsertColor, light: defaultInsertColor, hcDark: null, hcLight: null }, nls.localize('diffEditorInsertedLines', 'Background color for lines that got inserted. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const diffRemovedLine = registerColor('diffEditor.removedLineBackground', { dark: defaultRemoveColor, light: defaultRemoveColor, hcDark: null, hcLight: null }, nls.localize('diffEditorRemovedLines', 'Background color for lines that got removed. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const diffInsertedLineGutter = registerColor('diffEditorGutter.insertedLineBackground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('diffEditorInsertedLineGutter', 'Background color for the margin where lines got inserted.'));\nexport const diffRemovedLineGutter = registerColor('diffEditorGutter.removedLineBackground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('diffEditorRemovedLineGutter', 'Background color for the margin where lines got removed.'));\nexport const diffOverviewRulerInserted = registerColor('diffEditorOverview.insertedForeground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('diffEditorOverviewInserted', 'Diff overview ruler foreground for inserted content.'));\nexport const diffOverviewRulerRemoved = registerColor('diffEditorOverview.removedForeground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('diffEditorOverviewRemoved', 'Diff overview ruler foreground for removed content.'));\nexport const diffInsertedOutline = registerColor('diffEditor.insertedTextBorder', { dark: null, light: null, hcDark: '#33ff2eff', hcLight: '#374E06' }, nls.localize('diffEditorInsertedOutline', 'Outline color for the text that got inserted.'));\nexport const diffRemovedOutline = registerColor('diffEditor.removedTextBorder', { dark: null, light: null, hcDark: '#FF008F', hcLight: '#AD0707' }, nls.localize('diffEditorRemovedOutline', 'Outline color for text that got removed.'));\nexport const diffBorder = registerColor('diffEditor.border', { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('diffEditorBorder', 'Border color between the two text editors.'));\nexport const diffDiagonalFill = registerColor('diffEditor.diagonalFill', { dark: '#cccccc33', light: '#22222233', hcDark: null, hcLight: null }, nls.localize('diffDiagonalFill', \"Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.\"));\n/**\n * List and tree colors\n */\nexport const listFocusBackground = registerColor('list.focusBackground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listFocusBackground', \"List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listFocusForeground = registerColor('list.focusForeground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listFocusForeground', \"List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listFocusOutline = registerColor('list.focusOutline', { dark: focusBorder, light: focusBorder, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('listFocusOutline', \"List/Tree outline color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listFocusAndSelectionOutline = registerColor('list.focusAndSelectionOutline', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listFocusAndSelectionOutline', \"List/Tree outline color for the focused item when the list/tree is active and selected. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listActiveSelectionBackground = registerColor('list.activeSelectionBackground', { dark: '#04395E', light: '#0060C0', hcDark: null, hcLight: Color.fromHex('#0F4A85').transparent(0.1) }, nls.localize('listActiveSelectionBackground', \"List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listActiveSelectionForeground = registerColor('list.activeSelectionForeground', { dark: Color.white, light: Color.white, hcDark: null, hcLight: null }, nls.localize('listActiveSelectionForeground', \"List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listActiveSelectionIconForeground = registerColor('list.activeSelectionIconForeground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listActiveSelectionIconForeground', \"List/Tree icon foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listInactiveSelectionBackground = registerColor('list.inactiveSelectionBackground', { dark: '#37373D', light: '#E4E6F1', hcDark: null, hcLight: Color.fromHex('#0F4A85').transparent(0.1) }, nls.localize('listInactiveSelectionBackground', \"List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listInactiveSelectionForeground = registerColor('list.inactiveSelectionForeground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listInactiveSelectionForeground', \"List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listInactiveSelectionIconForeground = registerColor('list.inactiveSelectionIconForeground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listInactiveSelectionIconForeground', \"List/Tree icon foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listInactiveFocusBackground = registerColor('list.inactiveFocusBackground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listInactiveFocusBackground', \"List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listInactiveFocusOutline = registerColor('list.inactiveFocusOutline', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listInactiveFocusOutline', \"List/Tree outline color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\nexport const listHoverBackground = registerColor('list.hoverBackground', { dark: '#2A2D2E', light: '#F0F0F0', hcDark: null, hcLight: Color.fromHex('#0F4A85').transparent(0.1) }, nls.localize('listHoverBackground', \"List/Tree background when hovering over items using the mouse.\"));\nexport const listHoverForeground = registerColor('list.hoverForeground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('listHoverForeground', \"List/Tree foreground when hovering over items using the mouse.\"));\nexport const listDropBackground = registerColor('list.dropBackground', { dark: '#062F4A', light: '#D6EBFF', hcDark: null, hcLight: null }, nls.localize('listDropBackground', \"List/Tree drag and drop background when moving items around using the mouse.\"));\nexport const listHighlightForeground = registerColor('list.highlightForeground', { dark: '#2AAAFF', light: '#0066BF', hcDark: focusBorder, hcLight: focusBorder }, nls.localize('highlight', 'List/Tree foreground color of the match highlights when searching inside the list/tree.'));\nexport const listFocusHighlightForeground = registerColor('list.focusHighlightForeground', { dark: listHighlightForeground, light: ifDefinedThenElse(listActiveSelectionBackground, listHighlightForeground, '#BBE7FF'), hcDark: listHighlightForeground, hcLight: listHighlightForeground }, nls.localize('listFocusHighlightForeground', 'List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree.'));\nexport const listInvalidItemForeground = registerColor('list.invalidItemForeground', { dark: '#B89500', light: '#B89500', hcDark: '#B89500', hcLight: '#B5200D' }, nls.localize('invalidItemForeground', 'List/Tree foreground color for invalid items, for example an unresolved root in explorer.'));\nexport const listErrorForeground = registerColor('list.errorForeground', { dark: '#F88070', light: '#B01011', hcDark: null, hcLight: null }, nls.localize('listErrorForeground', 'Foreground color of list items containing errors.'));\nexport const listWarningForeground = registerColor('list.warningForeground', { dark: '#CCA700', light: '#855F00', hcDark: null, hcLight: null }, nls.localize('listWarningForeground', 'Foreground color of list items containing warnings.'));\nexport const listFilterWidgetBackground = registerColor('listFilterWidget.background', { light: darken(editorWidgetBackground, 0), dark: lighten(editorWidgetBackground, 0), hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, nls.localize('listFilterWidgetBackground', 'Background color of the type filter widget in lists and trees.'));\nexport const listFilterWidgetOutline = registerColor('listFilterWidget.outline', { dark: Color.transparent, light: Color.transparent, hcDark: '#f38518', hcLight: '#007ACC' }, nls.localize('listFilterWidgetOutline', 'Outline color of the type filter widget in lists and trees.'));\nexport const listFilterWidgetNoMatchesOutline = registerColor('listFilterWidget.noMatchesOutline', { dark: '#BE1100', light: '#BE1100', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('listFilterWidgetNoMatchesOutline', 'Outline color of the type filter widget in lists and trees, when there are no matches.'));\nexport const listFilterWidgetShadow = registerColor('listFilterWidget.shadow', { dark: widgetShadow, light: widgetShadow, hcDark: widgetShadow, hcLight: widgetShadow }, nls.localize('listFilterWidgetShadow', 'Shadown color of the type filter widget in lists and trees.'));\nexport const listFilterMatchHighlight = registerColor('list.filterMatchBackground', { dark: editorFindMatchHighlight, light: editorFindMatchHighlight, hcDark: null, hcLight: null }, nls.localize('listFilterMatchHighlight', 'Background color of the filtered match.'));\nexport const listFilterMatchHighlightBorder = registerColor('list.filterMatchBorder', { dark: editorFindMatchHighlightBorder, light: editorFindMatchHighlightBorder, hcDark: contrastBorder, hcLight: activeContrastBorder }, nls.localize('listFilterMatchHighlightBorder', 'Border color of the filtered match.'));\nexport const treeIndentGuidesStroke = registerColor('tree.indentGuidesStroke', { dark: '#585858', light: '#a9a9a9', hcDark: '#a9a9a9', hcLight: '#a5a5a5' }, nls.localize('treeIndentGuidesStroke', \"Tree stroke color for the indentation guides.\"));\nexport const tableColumnsBorder = registerColor('tree.tableColumnsBorder', { dark: '#CCCCCC20', light: '#61616120', hcDark: null, hcLight: null }, nls.localize('tableColumnsBorder', \"Table border color between columns.\"));\nexport const tableOddRowsBackgroundColor = registerColor('tree.tableOddRowsBackground', { dark: transparent(foreground, 0.04), light: transparent(foreground, 0.04), hcDark: null, hcLight: null }, nls.localize('tableOddRowsBackgroundColor', \"Background color for odd table rows.\"));\nexport const listDeemphasizedForeground = registerColor('list.deemphasizedForeground', { dark: '#8C8C8C', light: '#8E8E90', hcDark: '#A7A8A9', hcLight: '#666666' }, nls.localize('listDeemphasizedForeground', \"List/Tree foreground color for items that are deemphasized. \"));\n/**\n * Quick pick widget (dependent on List and tree colors)\n */\nexport const _deprecatedQuickInputListFocusBackground = registerColor('quickInput.list.focusBackground', { dark: null, light: null, hcDark: null, hcLight: null }, '', undefined, nls.localize('quickInput.list.focusBackground deprecation', \"Please use quickInputList.focusBackground instead\"));\nexport const quickInputListFocusForeground = registerColor('quickInputList.focusForeground', { dark: listActiveSelectionForeground, light: listActiveSelectionForeground, hcDark: listActiveSelectionForeground, hcLight: listActiveSelectionForeground }, nls.localize('quickInput.listFocusForeground', \"Quick picker foreground color for the focused item.\"));\nexport const quickInputListFocusIconForeground = registerColor('quickInputList.focusIconForeground', { dark: listActiveSelectionIconForeground, light: listActiveSelectionIconForeground, hcDark: listActiveSelectionIconForeground, hcLight: listActiveSelectionIconForeground }, nls.localize('quickInput.listFocusIconForeground', \"Quick picker icon foreground color for the focused item.\"));\nexport const quickInputListFocusBackground = registerColor('quickInputList.focusBackground', { dark: oneOf(_deprecatedQuickInputListFocusBackground, listActiveSelectionBackground), light: oneOf(_deprecatedQuickInputListFocusBackground, listActiveSelectionBackground), hcDark: null, hcLight: null }, nls.localize('quickInput.listFocusBackground', \"Quick picker background color for the focused item.\"));\n/**\n * Menu colors\n */\nexport const menuBorder = registerColor('menu.border', { dark: null, light: null, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('menuBorder', \"Border color of menus.\"));\nexport const menuForeground = registerColor('menu.foreground', { dark: selectForeground, light: foreground, hcDark: selectForeground, hcLight: selectForeground }, nls.localize('menuForeground', \"Foreground color of menu items.\"));\nexport const menuBackground = registerColor('menu.background', { dark: selectBackground, light: selectBackground, hcDark: selectBackground, hcLight: selectBackground }, nls.localize('menuBackground', \"Background color of menu items.\"));\nexport const menuSelectionForeground = registerColor('menu.selectionForeground', { dark: listActiveSelectionForeground, light: listActiveSelectionForeground, hcDark: listActiveSelectionForeground, hcLight: listActiveSelectionForeground }, nls.localize('menuSelectionForeground', \"Foreground color of the selected menu item in menus.\"));\nexport const menuSelectionBackground = registerColor('menu.selectionBackground', { dark: listActiveSelectionBackground, light: listActiveSelectionBackground, hcDark: listActiveSelectionBackground, hcLight: listActiveSelectionBackground }, nls.localize('menuSelectionBackground', \"Background color of the selected menu item in menus.\"));\nexport const menuSelectionBorder = registerColor('menu.selectionBorder', { dark: null, light: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('menuSelectionBorder', \"Border color of the selected menu item in menus.\"));\nexport const menuSeparatorBackground = registerColor('menu.separatorBackground', { dark: '#606060', light: '#D4D4D4', hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize('menuSeparatorBackground', \"Color of a separator menu item in menus.\"));\n/**\n * Toolbar colors\n */\nexport const toolbarHoverBackground = registerColor('toolbar.hoverBackground', { dark: '#5a5d5e50', light: '#b8b8b850', hcDark: null, hcLight: null }, nls.localize('toolbarHoverBackground', \"Toolbar background when hovering over actions using the mouse\"));\nexport const toolbarHoverOutline = registerColor('toolbar.hoverOutline', { dark: null, light: null, hcDark: activeContrastBorder, hcLight: activeContrastBorder }, nls.localize('toolbarHoverOutline', \"Toolbar outline when hovering over actions using the mouse\"));\nexport const toolbarActiveBackground = registerColor('toolbar.activeBackground', { dark: lighten(toolbarHoverBackground, 0.1), light: darken(toolbarHoverBackground, 0.1), hcDark: null, hcLight: null }, nls.localize('toolbarActiveBackground', \"Toolbar background when holding the mouse over actions\"));\n/**\n * Snippet placeholder colors\n */\nexport const snippetTabstopHighlightBackground = registerColor('editor.snippetTabstopHighlightBackground', { dark: new Color(new RGBA(124, 124, 124, 0.3)), light: new Color(new RGBA(10, 50, 100, 0.2)), hcDark: new Color(new RGBA(124, 124, 124, 0.3)), hcLight: new Color(new RGBA(10, 50, 100, 0.2)) }, nls.localize('snippetTabstopHighlightBackground', \"Highlight background color of a snippet tabstop.\"));\nexport const snippetTabstopHighlightBorder = registerColor('editor.snippetTabstopHighlightBorder', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('snippetTabstopHighlightBorder', \"Highlight border color of a snippet tabstop.\"));\nexport const snippetFinalTabstopHighlightBackground = registerColor('editor.snippetFinalTabstopHighlightBackground', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('snippetFinalTabstopHighlightBackground', \"Highlight background color of the final tabstop of a snippet.\"));\nexport const snippetFinalTabstopHighlightBorder = registerColor('editor.snippetFinalTabstopHighlightBorder', { dark: '#525252', light: new Color(new RGBA(10, 50, 100, 0.5)), hcDark: '#525252', hcLight: '#292929' }, nls.localize('snippetFinalTabstopHighlightBorder', \"Highlight border color of the final tabstop of a snippet.\"));\n/**\n * Breadcrumb colors\n */\nexport const breadcrumbsForeground = registerColor('breadcrumb.foreground', { light: transparent(foreground, 0.8), dark: transparent(foreground, 0.8), hcDark: transparent(foreground, 0.8), hcLight: transparent(foreground, 0.8) }, nls.localize('breadcrumbsFocusForeground', \"Color of focused breadcrumb items.\"));\nexport const breadcrumbsBackground = registerColor('breadcrumb.background', { light: editorBackground, dark: editorBackground, hcDark: editorBackground, hcLight: editorBackground }, nls.localize('breadcrumbsBackground', \"Background color of breadcrumb items.\"));\nexport const breadcrumbsFocusForeground = registerColor('breadcrumb.focusForeground', { light: darken(foreground, 0.2), dark: lighten(foreground, 0.1), hcDark: lighten(foreground, 0.1), hcLight: lighten(foreground, 0.1) }, nls.localize('breadcrumbsFocusForeground', \"Color of focused breadcrumb items.\"));\nexport const breadcrumbsActiveSelectionForeground = registerColor('breadcrumb.activeSelectionForeground', { light: darken(foreground, 0.2), dark: lighten(foreground, 0.1), hcDark: lighten(foreground, 0.1), hcLight: lighten(foreground, 0.1) }, nls.localize('breadcrumbsSelectedForeground', \"Color of selected breadcrumb items.\"));\nexport const breadcrumbsPickerBackground = registerColor('breadcrumbPicker.background', { light: editorWidgetBackground, dark: editorWidgetBackground, hcDark: editorWidgetBackground, hcLight: editorWidgetBackground }, nls.localize('breadcrumbsSelectedBackground', \"Background color of breadcrumb item picker.\"));\n/**\n * Merge-conflict colors\n */\nconst headerTransparency = 0.5;\nconst currentBaseColor = Color.fromHex('#40C8AE').transparent(headerTransparency);\nconst incomingBaseColor = Color.fromHex('#40A6FF').transparent(headerTransparency);\nconst commonBaseColor = Color.fromHex('#606060').transparent(0.4);\nconst contentTransparency = 0.4;\nconst rulerTransparency = 1;\nexport const mergeCurrentHeaderBackground = registerColor('merge.currentHeaderBackground', { dark: currentBaseColor, light: currentBaseColor, hcDark: null, hcLight: null }, nls.localize('mergeCurrentHeaderBackground', 'Current header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const mergeCurrentContentBackground = registerColor('merge.currentContentBackground', { dark: transparent(mergeCurrentHeaderBackground, contentTransparency), light: transparent(mergeCurrentHeaderBackground, contentTransparency), hcDark: transparent(mergeCurrentHeaderBackground, contentTransparency), hcLight: transparent(mergeCurrentHeaderBackground, contentTransparency) }, nls.localize('mergeCurrentContentBackground', 'Current content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const mergeIncomingHeaderBackground = registerColor('merge.incomingHeaderBackground', { dark: incomingBaseColor, light: incomingBaseColor, hcDark: null, hcLight: null }, nls.localize('mergeIncomingHeaderBackground', 'Incoming header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const mergeIncomingContentBackground = registerColor('merge.incomingContentBackground', { dark: transparent(mergeIncomingHeaderBackground, contentTransparency), light: transparent(mergeIncomingHeaderBackground, contentTransparency), hcDark: transparent(mergeIncomingHeaderBackground, contentTransparency), hcLight: transparent(mergeIncomingHeaderBackground, contentTransparency) }, nls.localize('mergeIncomingContentBackground', 'Incoming content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const mergeCommonHeaderBackground = registerColor('merge.commonHeaderBackground', { dark: commonBaseColor, light: commonBaseColor, hcDark: null, hcLight: null }, nls.localize('mergeCommonHeaderBackground', 'Common ancestor header background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const mergeCommonContentBackground = registerColor('merge.commonContentBackground', { dark: transparent(mergeCommonHeaderBackground, contentTransparency), light: transparent(mergeCommonHeaderBackground, contentTransparency), hcDark: transparent(mergeCommonHeaderBackground, contentTransparency), hcLight: transparent(mergeCommonHeaderBackground, contentTransparency) }, nls.localize('mergeCommonContentBackground', 'Common ancestor content background in inline merge-conflicts. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const mergeBorder = registerColor('merge.border', { dark: null, light: null, hcDark: '#C3DF6F', hcLight: '#007ACC' }, nls.localize('mergeBorder', 'Border color on headers and the splitter in inline merge-conflicts.'));\nexport const overviewRulerCurrentContentForeground = registerColor('editorOverviewRuler.currentContentForeground', { dark: transparent(mergeCurrentHeaderBackground, rulerTransparency), light: transparent(mergeCurrentHeaderBackground, rulerTransparency), hcDark: mergeBorder, hcLight: mergeBorder }, nls.localize('overviewRulerCurrentContentForeground', 'Current overview ruler foreground for inline merge-conflicts.'));\nexport const overviewRulerIncomingContentForeground = registerColor('editorOverviewRuler.incomingContentForeground', { dark: transparent(mergeIncomingHeaderBackground, rulerTransparency), light: transparent(mergeIncomingHeaderBackground, rulerTransparency), hcDark: mergeBorder, hcLight: mergeBorder }, nls.localize('overviewRulerIncomingContentForeground', 'Incoming overview ruler foreground for inline merge-conflicts.'));\nexport const overviewRulerCommonContentForeground = registerColor('editorOverviewRuler.commonContentForeground', { dark: transparent(mergeCommonHeaderBackground, rulerTransparency), light: transparent(mergeCommonHeaderBackground, rulerTransparency), hcDark: mergeBorder, hcLight: mergeBorder }, nls.localize('overviewRulerCommonContentForeground', 'Common ancestor overview ruler foreground for inline merge-conflicts.'));\nexport const overviewRulerFindMatchForeground = registerColor('editorOverviewRuler.findMatchForeground', { dark: '#d186167e', light: '#d186167e', hcDark: '#AB5A00', hcLight: '' }, nls.localize('overviewRulerFindMatchForeground', 'Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const overviewRulerSelectionHighlightForeground = registerColor('editorOverviewRuler.selectionHighlightForeground', { dark: '#A0A0A0CC', light: '#A0A0A0CC', hcDark: '#A0A0A0CC', hcLight: '#A0A0A0CC' }, nls.localize('overviewRulerSelectionHighlightForeground', 'Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\nexport const minimapFindMatch = registerColor('minimap.findMatchHighlight', { light: '#d18616', dark: '#d18616', hcDark: '#AB5A00', hcLight: '#0F4A85' }, nls.localize('minimapFindMatchHighlight', 'Minimap marker color for find matches.'), true);\nexport const minimapSelectionOccurrenceHighlight = registerColor('minimap.selectionOccurrenceHighlight', { light: '#c9c9c9', dark: '#676767', hcDark: '#ffffff', hcLight: '#0F4A85' }, nls.localize('minimapSelectionOccurrenceHighlight', 'Minimap marker color for repeating editor selections.'), true);\nexport const minimapSelection = registerColor('minimap.selectionHighlight', { light: '#ADD6FF', dark: '#264F78', hcDark: '#ffffff', hcLight: '#0F4A85' }, nls.localize('minimapSelectionHighlight', 'Minimap marker color for the editor selection.'), true);\nexport const minimapError = registerColor('minimap.errorHighlight', { dark: new Color(new RGBA(255, 18, 18, 0.7)), light: new Color(new RGBA(255, 18, 18, 0.7)), hcDark: new Color(new RGBA(255, 50, 50, 1)), hcLight: '#B5200D' }, nls.localize('minimapError', 'Minimap marker color for errors.'));\nexport const minimapWarning = registerColor('minimap.warningHighlight', { dark: editorWarningForeground, light: editorWarningForeground, hcDark: editorWarningBorder, hcLight: editorWarningBorder }, nls.localize('overviewRuleWarning', 'Minimap marker color for warnings.'));\nexport const minimapBackground = registerColor('minimap.background', { dark: null, light: null, hcDark: null, hcLight: null }, nls.localize('minimapBackground', \"Minimap background color.\"));\nexport const minimapForegroundOpacity = registerColor('minimap.foregroundOpacity', { dark: Color.fromHex('#000f'), light: Color.fromHex('#000f'), hcDark: Color.fromHex('#000f'), hcLight: Color.fromHex('#000f') }, nls.localize('minimapForegroundOpacity', 'Opacity of foreground elements rendered in the minimap. For example, \"#000000c0\" will render the elements with 75% opacity.'));\nexport const minimapSliderBackground = registerColor('minimapSlider.background', { light: transparent(scrollbarSliderBackground, 0.5), dark: transparent(scrollbarSliderBackground, 0.5), hcDark: transparent(scrollbarSliderBackground, 0.5), hcLight: transparent(scrollbarSliderBackground, 0.5) }, nls.localize('minimapSliderBackground', \"Minimap slider background color.\"));\nexport const minimapSliderHoverBackground = registerColor('minimapSlider.hoverBackground', { light: transparent(scrollbarSliderHoverBackground, 0.5), dark: transparent(scrollbarSliderHoverBackground, 0.5), hcDark: transparent(scrollbarSliderHoverBackground, 0.5), hcLight: transparent(scrollbarSliderHoverBackground, 0.5) }, nls.localize('minimapSliderHoverBackground', \"Minimap slider background color when hovering.\"));\nexport const minimapSliderActiveBackground = registerColor('minimapSlider.activeBackground', { light: transparent(scrollbarSliderActiveBackground, 0.5), dark: transparent(scrollbarSliderActiveBackground, 0.5), hcDark: transparent(scrollbarSliderActiveBackground, 0.5), hcLight: transparent(scrollbarSliderActiveBackground, 0.5) }, nls.localize('minimapSliderActiveBackground', \"Minimap slider background color when clicked on.\"));\nexport const problemsErrorIconForeground = registerColor('problemsErrorIcon.foreground', { dark: editorErrorForeground, light: editorErrorForeground, hcDark: editorErrorForeground, hcLight: editorErrorForeground }, nls.localize('problemsErrorIconForeground', \"The color used for the problems error icon.\"));\nexport const problemsWarningIconForeground = registerColor('problemsWarningIcon.foreground', { dark: editorWarningForeground, light: editorWarningForeground, hcDark: editorWarningForeground, hcLight: editorWarningForeground }, nls.localize('problemsWarningIconForeground', \"The color used for the problems warning icon.\"));\nexport const problemsInfoIconForeground = registerColor('problemsInfoIcon.foreground', { dark: editorInfoForeground, light: editorInfoForeground, hcDark: editorInfoForeground, hcLight: editorInfoForeground }, nls.localize('problemsInfoIconForeground', \"The color used for the problems info icon.\"));\n/**\n * Chart colors\n */\nexport const chartsForeground = registerColor('charts.foreground', { dark: foreground, light: foreground, hcDark: foreground, hcLight: foreground }, nls.localize('chartsForeground', \"The foreground color used in charts.\"));\nexport const chartsLines = registerColor('charts.lines', { dark: transparent(foreground, .5), light: transparent(foreground, .5), hcDark: transparent(foreground, .5), hcLight: transparent(foreground, .5) }, nls.localize('chartsLines', \"The color used for horizontal lines in charts.\"));\nexport const chartsRed = registerColor('charts.red', { dark: editorErrorForeground, light: editorErrorForeground, hcDark: editorErrorForeground, hcLight: editorErrorForeground }, nls.localize('chartsRed', \"The red color used in chart visualizations.\"));\nexport const chartsBlue = registerColor('charts.blue', { dark: editorInfoForeground, light: editorInfoForeground, hcDark: editorInfoForeground, hcLight: editorInfoForeground }, nls.localize('chartsBlue', \"The blue color used in chart visualizations.\"));\nexport const chartsYellow = registerColor('charts.yellow', { dark: editorWarningForeground, light: editorWarningForeground, hcDark: editorWarningForeground, hcLight: editorWarningForeground }, nls.localize('chartsYellow', \"The yellow color used in chart visualizations.\"));\nexport const chartsOrange = registerColor('charts.orange', { dark: minimapFindMatch, light: minimapFindMatch, hcDark: minimapFindMatch, hcLight: minimapFindMatch }, nls.localize('chartsOrange', \"The orange color used in chart visualizations.\"));\nexport const chartsGreen = registerColor('charts.green', { dark: '#89D185', light: '#388A34', hcDark: '#89D185', hcLight: '#374e06' }, nls.localize('chartsGreen', \"The green color used in chart visualizations.\"));\nexport const chartsPurple = registerColor('charts.purple', { dark: '#B180D7', light: '#652D90', hcDark: '#B180D7', hcLight: '#652D90' }, nls.localize('chartsPurple', \"The purple color used in chart visualizations.\"));\n// ----- color functions\nexport function executeTransform(transform, theme) {\n var _a, _b, _c;\n switch (transform.op) {\n case 0 /* ColorTransformType.Darken */:\n return (_a = resolveColorValue(transform.value, theme)) === null || _a === void 0 ? void 0 : _a.darken(transform.factor);\n case 1 /* ColorTransformType.Lighten */:\n return (_b = resolveColorValue(transform.value, theme)) === null || _b === void 0 ? void 0 : _b.lighten(transform.factor);\n case 2 /* ColorTransformType.Transparent */:\n return (_c = resolveColorValue(transform.value, theme)) === null || _c === void 0 ? void 0 : _c.transparent(transform.factor);\n case 3 /* ColorTransformType.OneOf */:\n for (const candidate of transform.values) {\n const color = resolveColorValue(candidate, theme);\n if (color) {\n return color;\n }\n }\n return undefined;\n case 5 /* ColorTransformType.IfDefinedThenElse */:\n return resolveColorValue(theme.defines(transform.if) ? transform.then : transform.else, theme);\n case 4 /* ColorTransformType.LessProminent */: {\n const from = resolveColorValue(transform.value, theme);\n if (!from) {\n return undefined;\n }\n const backgroundColor = resolveColorValue(transform.background, theme);\n if (!backgroundColor) {\n return from.transparent(transform.factor * transform.transparency);\n }\n return from.isDarkerThan(backgroundColor)\n ? Color.getLighterColor(from, backgroundColor, transform.factor).transparent(transform.transparency)\n : Color.getDarkerColor(from, backgroundColor, transform.factor).transparent(transform.transparency);\n }\n default:\n throw assertNever(transform);\n }\n}\nexport function darken(colorValue, factor) {\n return { op: 0 /* ColorTransformType.Darken */, value: colorValue, factor };\n}\nexport function lighten(colorValue, factor) {\n return { op: 1 /* ColorTransformType.Lighten */, value: colorValue, factor };\n}\nexport function transparent(colorValue, factor) {\n return { op: 2 /* ColorTransformType.Transparent */, value: colorValue, factor };\n}\nexport function oneOf(...colorValues) {\n return { op: 3 /* ColorTransformType.OneOf */, values: colorValues };\n}\nexport function ifDefinedThenElse(ifArg, thenArg, elseArg) {\n return { op: 5 /* ColorTransformType.IfDefinedThenElse */, if: ifArg, then: thenArg, else: elseArg };\n}\nfunction lessProminent(colorValue, backgroundColorValue, factor, transparency) {\n return { op: 4 /* ColorTransformType.LessProminent */, value: colorValue, background: backgroundColorValue, factor, transparency };\n}\n// ----- implementation\n/**\n * @param colorValue Resolve a color value in the context of a theme\n */\nexport function resolveColorValue(colorValue, theme) {\n if (colorValue === null) {\n return undefined;\n }\n else if (typeof colorValue === 'string') {\n if (colorValue[0] === '#') {\n return Color.fromHex(colorValue);\n }\n return theme.getColor(colorValue);\n }\n else if (colorValue instanceof Color) {\n return colorValue;\n }\n else if (typeof colorValue === 'object') {\n return executeTransform(colorValue, theme);\n }\n return undefined;\n}\nexport const workbenchColorsSchemaId = 'vscode://schemas/workbench-colors';\nconst schemaRegistry = platform.Registry.as(JSONExtensions.JSONContribution);\nschemaRegistry.registerSchema(workbenchColorsSchemaId, colorRegistry.getColorSchema());\nconst delayer = new RunOnceScheduler(() => schemaRegistry.notifySchemaChanged(workbenchColorsSchemaId), 200);\ncolorRegistry.onDidChangeSchema(() => {\n if (!delayer.isScheduled()) {\n delayer.schedule();\n }\n});\n// setTimeout(_ => console.log(colorRegistry.toString()), 5000);\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { RunOnceScheduler } from '../../../base/common/async.js';\nimport { Codicon, CSSIcon } from '../../../base/common/codicons.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { isString } from '../../../base/common/types.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { localize } from '../../../nls.js';\nimport { Extensions as JSONExtensions } from '../../jsonschemas/common/jsonContributionRegistry.js';\nimport * as platform from '../../registry/common/platform.js';\nimport { ThemeIcon } from './themeService.js';\n// icon registry\nexport const Extensions = {\n IconContribution: 'base.contributions.icons'\n};\nexport var IconContribution;\n(function (IconContribution) {\n function getDefinition(contribution, registry) {\n let definition = contribution.defaults;\n while (ThemeIcon.isThemeIcon(definition)) {\n const c = iconRegistry.getIcon(definition.id);\n if (!c) {\n return undefined;\n }\n definition = c.defaults;\n }\n return definition;\n }\n IconContribution.getDefinition = getDefinition;\n})(IconContribution || (IconContribution = {}));\nexport var IconFontDefinition;\n(function (IconFontDefinition) {\n function toJSONObject(iconFont) {\n return {\n weight: iconFont.weight,\n style: iconFont.style,\n src: iconFont.src.map(s => ({ format: s.format, location: s.location.toString() }))\n };\n }\n IconFontDefinition.toJSONObject = toJSONObject;\n function fromJSONObject(json) {\n const stringOrUndef = (s) => isString(s) ? s : undefined;\n if (json && Array.isArray(json.src) && json.src.every((s) => isString(s.format) && isString(s.location))) {\n return {\n weight: stringOrUndef(json.weight),\n style: stringOrUndef(json.style),\n src: json.src.map((s) => ({ format: s.format, location: URI.parse(s.location) }))\n };\n }\n return undefined;\n }\n IconFontDefinition.fromJSONObject = fromJSONObject;\n})(IconFontDefinition || (IconFontDefinition = {}));\nclass IconRegistry {\n constructor() {\n this._onDidChange = new Emitter();\n this.onDidChange = this._onDidChange.event;\n this.iconSchema = {\n definitions: {\n icons: {\n type: 'object',\n properties: {\n fontId: { type: 'string', description: localize('iconDefinition.fontId', 'The id of the font to use. If not set, the font that is defined first is used.') },\n fontCharacter: { type: 'string', description: localize('iconDefinition.fontCharacter', 'The font character associated with the icon definition.') }\n },\n additionalProperties: false,\n defaultSnippets: [{ body: { fontCharacter: '\\\\\\\\e030' } }]\n }\n },\n type: 'object',\n properties: {}\n };\n this.iconReferenceSchema = { type: 'string', pattern: `^${CSSIcon.iconNameExpression}$`, enum: [], enumDescriptions: [] };\n this.iconsById = {};\n this.iconFontsById = {};\n }\n registerIcon(id, defaults, description, deprecationMessage) {\n const existing = this.iconsById[id];\n if (existing) {\n if (description && !existing.description) {\n existing.description = description;\n this.iconSchema.properties[id].markdownDescription = `${description} $(${id})`;\n const enumIndex = this.iconReferenceSchema.enum.indexOf(id);\n if (enumIndex !== -1) {\n this.iconReferenceSchema.enumDescriptions[enumIndex] = description;\n }\n this._onDidChange.fire();\n }\n return existing;\n }\n const iconContribution = { id, description, defaults, deprecationMessage };\n this.iconsById[id] = iconContribution;\n const propertySchema = { $ref: '#/definitions/icons' };\n if (deprecationMessage) {\n propertySchema.deprecationMessage = deprecationMessage;\n }\n if (description) {\n propertySchema.markdownDescription = `${description}: $(${id})`;\n }\n this.iconSchema.properties[id] = propertySchema;\n this.iconReferenceSchema.enum.push(id);\n this.iconReferenceSchema.enumDescriptions.push(description || '');\n this._onDidChange.fire();\n return { id };\n }\n getIcons() {\n return Object.keys(this.iconsById).map(id => this.iconsById[id]);\n }\n getIcon(id) {\n return this.iconsById[id];\n }\n getIconSchema() {\n return this.iconSchema;\n }\n toString() {\n const sorter = (i1, i2) => {\n return i1.id.localeCompare(i2.id);\n };\n const classNames = (i) => {\n while (ThemeIcon.isThemeIcon(i.defaults)) {\n i = this.iconsById[i.defaults.id];\n }\n return `codicon codicon-${i ? i.id : ''}`;\n };\n const reference = [];\n reference.push(`| preview | identifier | default codicon ID | description`);\n reference.push(`| ----------- | --------------------------------- | --------------------------------- | --------------------------------- |`);\n const contributions = Object.keys(this.iconsById).map(key => this.iconsById[key]);\n for (const i of contributions.filter(i => !!i.description).sort(sorter)) {\n reference.push(`||${i.id}|${ThemeIcon.isThemeIcon(i.defaults) ? i.defaults.id : i.id}|${i.description || ''}|`);\n }\n reference.push(`| preview | identifier `);\n reference.push(`| ----------- | --------------------------------- |`);\n for (const i of contributions.filter(i => !ThemeIcon.isThemeIcon(i.defaults)).sort(sorter)) {\n reference.push(`||${i.id}|`);\n }\n return reference.join('\\n');\n }\n}\nconst iconRegistry = new IconRegistry();\nplatform.Registry.add(Extensions.IconContribution, iconRegistry);\nexport function registerIcon(id, defaults, description, deprecationMessage) {\n return iconRegistry.registerIcon(id, defaults, description, deprecationMessage);\n}\nexport function getIconRegistry() {\n return iconRegistry;\n}\nfunction initialize() {\n for (const icon of Codicon.getAll()) {\n iconRegistry.registerIcon(icon.id, icon.definition, icon.description);\n }\n}\ninitialize();\nexport const iconsSchemaId = 'vscode://schemas/icons';\nconst schemaRegistry = platform.Registry.as(JSONExtensions.JSONContribution);\nschemaRegistry.registerSchema(iconsSchemaId, iconRegistry.getIconSchema());\nconst delayer = new RunOnceScheduler(() => schemaRegistry.notifySchemaChanged(iconsSchemaId), 200);\niconRegistry.onDidChange(() => {\n if (!delayer.isScheduled()) {\n delayer.schedule();\n }\n});\n//setTimeout(_ => console.log(iconRegistry.toString()), 5000);\n// common icons\nexport const widgetClose = registerIcon('widget-close', Codicon.close, localize('widgetClose', 'Icon for the close action in widgets.'));\nexport const gotoPreviousLocation = registerIcon('goto-previous-location', Codicon.arrowUp, localize('previousChangeIcon', 'Icon for goto previous editor location.'));\nexport const gotoNextLocation = registerIcon('goto-next-location', Codicon.arrowDown, localize('nextChangeIcon', 'Icon for goto next editor location.'));\nexport const syncing = ThemeIcon.modify(Codicon.sync, 'spin');\nexport const spinningLoading = ThemeIcon.modify(Codicon.loading, 'spin');\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { activeContrastBorder, badgeBackground, badgeForeground, contrastBorder, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, listActiveSelectionBackground, listActiveSelectionForeground, listActiveSelectionIconForeground, listDropBackground, listFilterWidgetBackground, listFilterWidgetNoMatchesOutline, listFilterWidgetOutline, listFocusBackground, listFocusForeground, listFocusOutline, listHoverBackground, listHoverForeground, listInactiveFocusBackground, listInactiveFocusOutline, listInactiveSelectionBackground, listInactiveSelectionForeground, listInactiveSelectionIconForeground, menuBackground, menuBorder, menuForeground, menuSelectionBackground, menuSelectionBorder, menuSelectionForeground, menuSeparatorBackground, resolveColorValue, scrollbarShadow, scrollbarSliderActiveBackground, scrollbarSliderBackground, scrollbarSliderHoverBackground, tableColumnsBorder, tableOddRowsBackgroundColor, treeIndentGuidesStroke, widgetShadow, listFocusAndSelectionOutline, listFilterWidgetShadow } from './colorRegistry.js';\nexport function computeStyles(theme, styleMap) {\n const styles = Object.create(null);\n for (const key in styleMap) {\n const value = styleMap[key];\n if (value) {\n styles[key] = resolveColorValue(value, theme);\n }\n }\n return styles;\n}\nexport function attachStyler(themeService, styleMap, widgetOrCallback) {\n function applyStyles() {\n const styles = computeStyles(themeService.getColorTheme(), styleMap);\n if (typeof widgetOrCallback === 'function') {\n widgetOrCallback(styles);\n }\n else {\n widgetOrCallback.style(styles);\n }\n }\n applyStyles();\n return themeService.onDidColorThemeChange(applyStyles);\n}\nexport function attachBadgeStyler(widget, themeService, style) {\n return attachStyler(themeService, {\n badgeBackground: (style === null || style === void 0 ? void 0 : style.badgeBackground) || badgeBackground,\n badgeForeground: (style === null || style === void 0 ? void 0 : style.badgeForeground) || badgeForeground,\n badgeBorder: contrastBorder\n }, widget);\n}\nexport function attachListStyler(widget, themeService, overrides) {\n return attachStyler(themeService, Object.assign(Object.assign({}, defaultListStyles), (overrides || {})), widget);\n}\nexport const defaultListStyles = {\n listFocusBackground,\n listFocusForeground,\n listFocusOutline,\n listActiveSelectionBackground,\n listActiveSelectionForeground,\n listActiveSelectionIconForeground,\n listFocusAndSelectionOutline,\n listFocusAndSelectionBackground: listActiveSelectionBackground,\n listFocusAndSelectionForeground: listActiveSelectionForeground,\n listInactiveSelectionBackground,\n listInactiveSelectionIconForeground,\n listInactiveSelectionForeground,\n listInactiveFocusBackground,\n listInactiveFocusOutline,\n listHoverBackground,\n listHoverForeground,\n listDropBackground,\n listSelectionOutline: activeContrastBorder,\n listHoverOutline: activeContrastBorder,\n listFilterWidgetBackground,\n listFilterWidgetOutline,\n listFilterWidgetNoMatchesOutline,\n listFilterWidgetShadow,\n treeIndentGuidesStroke,\n tableColumnsBorder,\n tableOddRowsBackgroundColor,\n inputActiveOptionBorder,\n inputActiveOptionForeground,\n inputActiveOptionBackground,\n inputBackground,\n inputForeground,\n inputBorder,\n inputValidationInfoBackground,\n inputValidationInfoForeground,\n inputValidationInfoBorder,\n inputValidationWarningBackground,\n inputValidationWarningForeground,\n inputValidationWarningBorder,\n inputValidationErrorBackground,\n inputValidationErrorForeground,\n inputValidationErrorBorder,\n};\nexport const defaultMenuStyles = {\n shadowColor: widgetShadow,\n borderColor: menuBorder,\n foregroundColor: menuForeground,\n backgroundColor: menuBackground,\n selectionForegroundColor: menuSelectionForeground,\n selectionBackgroundColor: menuSelectionBackground,\n selectionBorderColor: menuSelectionBorder,\n separatorColor: menuSeparatorBackground,\n scrollbarShadow: scrollbarShadow,\n scrollbarSliderBackground: scrollbarSliderBackground,\n scrollbarSliderHoverBackground: scrollbarSliderHoverBackground,\n scrollbarSliderActiveBackground: scrollbarSliderActiveBackground\n};\nexport function attachMenuStyler(widget, themeService, style) {\n return attachStyler(themeService, Object.assign(Object.assign({}, defaultMenuStyles), style), widget);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * Color scheme used by the OS and by color themes.\n */\nexport var ColorScheme;\n(function (ColorScheme) {\n ColorScheme[\"DARK\"] = \"dark\";\n ColorScheme[\"LIGHT\"] = \"light\";\n ColorScheme[\"HIGH_CONTRAST_DARK\"] = \"hcDark\";\n ColorScheme[\"HIGH_CONTRAST_LIGHT\"] = \"hcLight\";\n})(ColorScheme || (ColorScheme = {}));\nexport function isHighContrast(scheme) {\n return scheme === ColorScheme.HIGH_CONTRAST_DARK || scheme === ColorScheme.HIGH_CONTRAST_LIGHT;\n}\nexport function isDark(scheme) {\n return scheme === ColorScheme.DARK || scheme === ColorScheme.HIGH_CONTRAST_DARK;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { CSSIcon } from '../../../base/common/codicons.js';\nimport { Emitter } from '../../../base/common/event.js';\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nimport * as platform from '../../registry/common/platform.js';\nimport { ColorScheme } from './theme.js';\nexport const IThemeService = createDecorator('themeService');\nexport var ThemeColor;\n(function (ThemeColor) {\n function isThemeColor(obj) {\n return obj && typeof obj === 'object' && typeof obj.id === 'string';\n }\n ThemeColor.isThemeColor = isThemeColor;\n})(ThemeColor || (ThemeColor = {}));\nexport function themeColorFromId(id) {\n return { id };\n}\nexport var ThemeIcon;\n(function (ThemeIcon) {\n function isThemeIcon(obj) {\n return obj && typeof obj === 'object' && typeof obj.id === 'string' && (typeof obj.color === 'undefined' || ThemeColor.isThemeColor(obj.color));\n }\n ThemeIcon.isThemeIcon = isThemeIcon;\n const _regexFromString = new RegExp(`^\\\\$\\\\((${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?)\\\\)$`);\n function fromString(str) {\n const match = _regexFromString.exec(str);\n if (!match) {\n return undefined;\n }\n const [, name] = match;\n return { id: name };\n }\n ThemeIcon.fromString = fromString;\n function fromId(id) {\n return { id };\n }\n ThemeIcon.fromId = fromId;\n function modify(icon, modifier) {\n let id = icon.id;\n const tildeIndex = id.lastIndexOf('~');\n if (tildeIndex !== -1) {\n id = id.substring(0, tildeIndex);\n }\n if (modifier) {\n id = `${id}~${modifier}`;\n }\n return { id };\n }\n ThemeIcon.modify = modify;\n function getModifier(icon) {\n const tildeIndex = icon.id.lastIndexOf('~');\n if (tildeIndex !== -1) {\n return icon.id.substring(tildeIndex + 1);\n }\n return undefined;\n }\n ThemeIcon.getModifier = getModifier;\n function isEqual(ti1, ti2) {\n var _a, _b;\n return ti1.id === ti2.id && ((_a = ti1.color) === null || _a === void 0 ? void 0 : _a.id) === ((_b = ti2.color) === null || _b === void 0 ? void 0 : _b.id);\n }\n ThemeIcon.isEqual = isEqual;\n function asThemeIcon(codicon, color) {\n return { id: codicon.id, color: color ? themeColorFromId(color) : undefined };\n }\n ThemeIcon.asThemeIcon = asThemeIcon;\n ThemeIcon.asClassNameArray = CSSIcon.asClassNameArray;\n ThemeIcon.asClassName = CSSIcon.asClassName;\n ThemeIcon.asCSSSelector = CSSIcon.asCSSSelector;\n})(ThemeIcon || (ThemeIcon = {}));\nexport function getThemeTypeSelector(type) {\n switch (type) {\n case ColorScheme.DARK: return 'vs-dark';\n case ColorScheme.HIGH_CONTRAST_DARK: return 'hc-black';\n case ColorScheme.HIGH_CONTRAST_LIGHT: return 'hc-light';\n default: return 'vs';\n }\n}\n// static theming participant\nexport const Extensions = {\n ThemingContribution: 'base.contributions.theming'\n};\nclass ThemingRegistry {\n constructor() {\n this.themingParticipants = [];\n this.themingParticipants = [];\n this.onThemingParticipantAddedEmitter = new Emitter();\n }\n onColorThemeChange(participant) {\n this.themingParticipants.push(participant);\n this.onThemingParticipantAddedEmitter.fire(participant);\n return toDisposable(() => {\n const idx = this.themingParticipants.indexOf(participant);\n this.themingParticipants.splice(idx, 1);\n });\n }\n getThemingParticipants() {\n return this.themingParticipants;\n }\n}\nconst themingRegistry = new ThemingRegistry();\nplatform.Registry.add(Extensions.ThemingContribution, themingRegistry);\nexport function registerThemingParticipant(participant) {\n return themingRegistry.onColorThemeChange(participant);\n}\n/**\n * Utility base class for all themable components.\n */\nexport class Themable extends Disposable {\n constructor(themeService) {\n super();\n this.themeService = themeService;\n this.theme = themeService.getColorTheme();\n // Hook up to theme changes\n this._register(this.themeService.onDidColorThemeChange(theme => this.onThemeChange(theme)));\n }\n onThemeChange(theme) {\n this.theme = theme;\n this.updateStyles();\n }\n updateStyles() {\n // Subclasses to override\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IUndoRedoService = createDecorator('undoRedoService');\nexport class ResourceEditStackSnapshot {\n constructor(resource, elements) {\n this.resource = resource;\n this.elements = elements;\n }\n}\nexport class UndoRedoGroup {\n constructor() {\n this.id = UndoRedoGroup._ID++;\n this.order = 1;\n }\n nextOrder() {\n if (this.id === 0) {\n return 0;\n }\n return this.order++;\n }\n}\nUndoRedoGroup._ID = 0;\nUndoRedoGroup.None = new UndoRedoGroup();\nexport class UndoRedoSource {\n constructor() {\n this.id = UndoRedoSource._ID++;\n this.order = 1;\n }\n nextOrder() {\n if (this.id === 0) {\n return 0;\n }\n return this.order++;\n }\n}\nUndoRedoSource._ID = 0;\nUndoRedoSource.None = new UndoRedoSource();\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { localize } from '../../../nls.js';\nimport { TernarySearchTree } from '../../../base/common/map.js';\nimport { URI } from '../../../base/common/uri.js';\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IWorkspaceContextService = createDecorator('contextService');\nexport function isSingleFolderWorkspaceIdentifier(obj) {\n const singleFolderIdentifier = obj;\n return typeof (singleFolderIdentifier === null || singleFolderIdentifier === void 0 ? void 0 : singleFolderIdentifier.id) === 'string' && URI.isUri(singleFolderIdentifier.uri);\n}\nexport function toWorkspaceIdentifier(workspace) {\n // Multi root\n if (workspace.configuration) {\n return {\n id: workspace.id,\n configPath: workspace.configuration\n };\n }\n // Single folder\n if (workspace.folders.length === 1) {\n return {\n id: workspace.id,\n uri: workspace.folders[0].uri\n };\n }\n // Empty workspace\n return undefined;\n}\nexport class Workspace {\n constructor(_id, folders, _transient, _configuration, _ignorePathCasing) {\n this._id = _id;\n this._transient = _transient;\n this._configuration = _configuration;\n this._ignorePathCasing = _ignorePathCasing;\n this._foldersMap = TernarySearchTree.forUris(this._ignorePathCasing, () => true);\n this.folders = folders;\n }\n get folders() {\n return this._folders;\n }\n set folders(folders) {\n this._folders = folders;\n this.updateFoldersMap();\n }\n get id() {\n return this._id;\n }\n get transient() {\n return this._transient;\n }\n get configuration() {\n return this._configuration;\n }\n set configuration(configuration) {\n this._configuration = configuration;\n }\n getFolder(resource) {\n if (!resource) {\n return null;\n }\n return this._foldersMap.findSubstr(resource) || null;\n }\n updateFoldersMap() {\n this._foldersMap = TernarySearchTree.forUris(this._ignorePathCasing, () => true);\n for (const folder of this.folders) {\n this._foldersMap.set(folder.uri, folder);\n }\n }\n toJSON() {\n return { id: this.id, folders: this.folders, transient: this.transient, configuration: this.configuration };\n }\n}\nexport class WorkspaceFolder {\n constructor(data, \n /**\n * Provides access to the original metadata for this workspace\n * folder. This can be different from the metadata provided in\n * this class:\n * - raw paths can be relative\n * - raw paths are not normalized\n */\n raw) {\n this.raw = raw;\n this.uri = data.uri;\n this.index = data.index;\n this.name = data.name;\n }\n toJSON() {\n return { uri: this.uri, name: this.name, index: this.index };\n }\n}\nexport const WORKSPACE_EXTENSION = 'code-workspace';\nexport const WORKSPACE_FILTER = [{ name: localize('codeWorkspace', \"Code Workspace\"), extensions: [WORKSPACE_EXTENSION] }];\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\nexport const IWorkspaceTrustManagementService = createDecorator('workspaceTrustManagementService');\n"],"names":["paths","self","globalAPI","getWorkerUrl","moduleId","label","pathPrefix","result","replace","test","currentUrl","String","window","location","currentOrigin","substr","length","hash","search","pathname","substring","protocol","blob","Blob","type","URL","createObjectURL","module","exports","WindowManager","constructor","this","_zoomFactor","getZoomFactor","INSTANCE","DevicePixelRatioMonitor","super","_onDidChange","_register","onDidChange","event","_listener","_handleChange","_mediaQueryList","fireEvent","_a","removeEventListener","matchMedia","devicePixelRatio","addEventListener","fire","PixelRatioImpl","_value","_getPixelRatio","dprMonitor","value","ctx","document","createElement","getContext","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","addMatchMediaChangeListener","query","callback","PixelRatio","_pixelRatioMonitor","_getOrCreatePixelRatioMonitor","userAgent","navigator","isFirefox","indexOf","isWebKit","isChrome","isSafari","isWebkitWebView","isElectron","isAndroid","standalone","matches","isStandalone","BrowserFeatures","clipboard","writeText","queryCommandSupported","readText","keyboard","touch","maxTouchPoints","pointerEvents","PointerEvent","DataTransfers","RESOURCES","DOWNLOAD_URL","FILES","TEXT","text","StaticDND","CurrentDragAndDropData","undefined","clearNode","node","firstChild","remove","isInDOM","isConnected","DomListener","handler","options","_node","_type","_handler","_options","dispose","addDisposableListener","useCaptureOrOptions","_wrapAsStandardMouseEvent","e","addStandardDisposableListener","useCapture","wrapHandler","_wrapAsStandardKeyboardEvent","addStandardDisposableGenericMouseDownListener","EventType","POINTER_DOWN","MOUSE_DOWN","addDisposableGenericMouseDownListener","createEventEmitter","target","domListener","onFirstListenerAdd","onLastListenerRemove","runAtThisOrScheduleAtNextAnimationFrame","scheduleAtNextAnimationFrame","_animationFrame","AnimationFrameQueueItem","runner","priority","_runner","_canceled","execute","sort","a","b","getComputedStyle","el","defaultView","getClientArea","element","body","Dimension","clientWidth","clientHeight","visualViewport","width","height","innerWidth","innerHeight","documentElement","Error","NEXT_QUEUE","CURRENT_QUEUE","animFrameRequested","inAnimationFrameRunner","animationFrameRunner","shift","item","push","emulatedRequestAnimationFrame","setTimeout","Date","getTime","requestAnimationFrame","msRequestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","call","doRequestAnimationFrame","SizeUtils","convertToPixels","parseFloat","getDimension","cssPropertyName","jsPropertyName","computedStyle","getPropertyValue","getAttribute","getBorderLeftWidth","getBorderRightWidth","getBorderTopWidth","getBorderBottomWidth","getPaddingLeft","getPaddingRight","getPaddingTop","getPaddingBottom","getMarginLeft","getMarginTop","getMarginRight","getMarginBottom","is","obj","lift","equals","getTopLeftOffset","offsetParent","top","offsetTop","left","offsetLeft","parentNode","scrollTop","c","isShadowRoot","direction","scrollLeft","size","style","getDomNodePagePosition","domNode","bb","getBoundingClientRect","StandardWindow","scrollX","scrollY","getDomNodeZoomLevel","testElement","zoom","elementZoomLevel","parentElement","None","getTotalWidth","margin","offsetWidth","getContentWidth","border","padding","getContentHeight","offsetHeight","getTotalHeight","isAncestor","testChild","testAncestor","findParentWithClass","clazz","stopAtClazzOrNode","nodeType","ELEMENT_NODE","classList","contains","hasParentWithClass","host","mode","isInShadowDOM","getShadowRoot","getActiveElement","activeElement","shadowRoot","createStyleSheet","container","getElementsByTagName","media","appendChild","_sharedStyleSheet","getSharedStyleSheet","createCSSRule","selector","cssText","sheet","insertRule","removeCSSRulesContainingSelector","ruleName","rules","_b","cssRules","getDynamicStyleSheetRules","toDelete","i","selectorText","deleteRule","isHTMLElement","o","HTMLElement","nodeName","CLICK","AUXCLICK","DBLCLICK","MOUSE_UP","MOUSE_OVER","MOUSE_MOVE","MOUSE_OUT","MOUSE_ENTER","MOUSE_LEAVE","MOUSE_WHEEL","POINTER_UP","POINTER_MOVE","POINTER_LEAVE","CONTEXT_MENU","WHEEL","KEY_DOWN","KEY_PRESS","KEY_UP","LOAD","BEFORE_UNLOAD","UNLOAD","PAGE_SHOW","PAGE_HIDE","ABORT","ERROR","RESIZE","SCROLL","FULLSCREEN_CHANGE","WK_FULLSCREEN_CHANGE","SELECT","CHANGE","SUBMIT","RESET","FOCUS","FOCUS_IN","FOCUS_OUT","BLUR","INPUT","STORAGE","DRAG_START","DRAG","DRAG_ENTER","DRAG_LEAVE","DRAG_OVER","DROP","DRAG_END","ANIMATION_START","ANIMATION_END","ANIMATION_ITERATION","EventHelper","stop","cancelBubble","preventDefault","returnValue","stopPropagation","saveParentsScrollTop","r","restoreParentsScrollTop","state","FocusTracker","_onDidFocus","onDidFocus","_onDidBlur","onDidBlur","hasFocus","hasFocusWithin","loosingFocus","onFocus","onBlur","_refreshStateHandler","trackFocus","append","parent","children","prepend","child","insertBefore","reset","innerText","SELECTOR_REGEX","Namespace","_$","namespace","description","attrs","match","exec","Object","assign","tagName","HTML","createElementNS","id","className","trim","keys","forEach","name","setAttribute","$","show","elements","display","removeAttribute","hide","tag","Array","prototype","slice","computeScreenAwareSize","cssPx","screenPx","Math","max","floor","windowOpenNoOpener","url","open","animate","fn","step","stepDisposable","asCSSUrl","uri","asBrowserUri","toString","asCSSPropertyValue","hookDomPurifyHrefAndSrcSanitizer","allowedProtocols","allowDataImages","anchor","attr","hasAttribute","attrValue","startsWith","href","includes","SVG","setPreferredWebSchema","ModifierKeyEmitter","_subscriptions","_keyStatus","altKey","shiftKey","ctrlKey","metaKey","add","defaultPrevented","keyCode","repeat","lastKeyPressed","lastKeyReleased","buttons","resetKeyStatus","keyStatus","doResetKeyStatus","getInstance","instance","DragAndDropObserver","callbacks","counter","dragStartTime","registerListeners","timeStamp","onDragEnter","onDragOver","onDragLeave","onDragEnd","onDrop","H_REGEX","h","args","attributes","isArray","groups","root","key","entries","cssKey","cssValue","setProperty","camelCaseToHyphenCase","tabIndex","str","toLowerCase","hasOwnProperty","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","fun","thisValue","x","Func","Function","bind","concat","arr","arr2","from","_toConsumableArray","func","arrayForEach","unapply","arrayPop","pop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringIndexOf","stringTrim","regExpTest","RegExp","typeErrorCreate","TypeError","_len2","arguments","_key2","thisArg","_len","_key","addToSet","set","array","l","lcElement","clone","object","newObject","property","lookupGetter","prop","desc","get","console","warn","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","Symbol","iterator","_toConsumableArray$1","getGlobal","purify","createDOMPurify","DOMPurify","version","removed","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","Text","Comment","DOMParser","trustedTypes","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","content","ownerDocument","trustedTypesPolicy","createPolicy","suffix","ATTR_NAME","currentScript","policyName","createHTML","html$$1","_","_createTrustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","createDocumentFragment","importNode","documentMode","hooks","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","removeChild","outerHTML","_removeAttribute","attribute","getAttributeNode","_initDocument","dirty","doc","leadingWhitespace","dirtyPayload","parseFromString","createDocument","innerHTML","createTextNode","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isNode","_executeHook","entryPoint","currentNode","data","hook","_sanitizeElements","elm","textContent","namespaceURI","allowedTags","firstElementChild","parentTagName","Boolean","commonSvgAndHTMLElements","_checkValidNamespace","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","keepAttr","allowedAttributes","_attr","forceKeepAttr","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toStaticHTML","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","DomEmitter","emitter","stopEvent","FastDomNode","_maxWidth","_width","_height","_top","_left","_bottom","_right","_fontFamily","_fontWeight","_fontSize","_fontStyle","_fontFeatureSettings","_textDecoration","_lineHeight","_letterSpacing","_className","_display","_position","_visibility","_color","_backgroundColor","_layerHint","_contain","_boxShadow","setMaxWidth","maxWidth","numberAsPixels","setWidth","setHeight","setTop","setLeft","setBottom","bottom","setRight","right","setFontFamily","fontFamily","setFontWeight","fontWeight","setFontSize","fontSize","setFontStyle","fontStyle","setFontFeatureSettings","fontFeatureSettings","setTextDecoration","textDecoration","setLineHeight","lineHeight","setLetterSpacing","letterSpacing","setClassName","toggleClassName","shouldHaveIt","toggle","setDisplay","setPosition","position","setVisibility","visibility","setColor","color","setBackgroundColor","backgroundColor","setLayerHinting","layerHint","transform","setBoxShadow","boxShadow","setContain","contain","createFastDomNode","renderText","renderFormattedText","formattedText","_renderFormattedText","parseCodeSegments","actionViewItemIndex","current","stack","stream","StringStream","eos","next","isEscapedFormatType","formatTagType","peek","textCurrent","advance","newCurrent","index","parseFormattedText","renderCodeSegments","actionHandler","inline","source","treeNode","disposables","nodeChild","char","supportCodeSegments","GlobalPointerMoveMonitor","_hooks","_pointerMoveCallback","_onStopCallback","stopMonitoring","invokeStopCallback","browserEvent","isMonitoring","clear","onStopCallback","startMonitoring","initialElement","pointerId","initialButtons","pointerMoveCallback","eventSource","setPointerCapture","releasePointerCapture","err","ctrlKeyMod","metaKeyMod","StandardKeyboardEvent","_standardKeyboardEventBrand","charCode","fromCharCode","toUpperCase","fromString","extractKeyCode","code","_asKeybinding","_computeKeybinding","_asRuntimeKeybinding","_computeRuntimeKeybinding","toKeybinding","other","hasDifferentOriginAncestorFlag","sameOriginWindowChainCache","getParentWindowIfSameOrigin","w","parentLocation","origin","IframeUtils","getSameOriginWindowChain","iframeElement","frameElement","getPositionOfChildWindowRelativeToAncestorWindow","childWindow","ancestorWindow","windowChain","windowChainEl","boundingRect","StandardMouseEvent","timestamp","now","leftButton","button","middleButton","rightButton","detail","pageX","posx","posy","pageY","clientX","clientY","iframeOffsets","view","StandardWheelEvent","deltaX","deltaY","targetNode","srcElement","e1","e2","wheelDeltaY","VERTICAL_AXIS","axis","ev","deltaMode","DOM_DELTA_LINE","browser","platform","wheelDeltaX","HORIZONTAL_AXIS","wheelDelta","Tap","Change","Start","End","Contextmenu","Gesture","dispatched","activeTouches","handle","targets","ignoreTargets","_lastSetTapCountTime","onTouchStart","passive","onTouchEnd","onTouchMove","addTarget","isTouchDevice","filter","t","ignoreTarget","len","targetTouches","identifier","initialTarget","initialTimeStamp","initialPageX","initialPageY","rollingTimestamps","rollingPageX","rollingPageY","evt","newGestureEvent","dispatchEvent","activeTouchCount","changedTouches","holdTime","HOLD_DELAY","abs","finalX","finalY","deltaT","dispatchTo","inertia","createEvent","initEvent","tapCount","currentTime","setTapCount","CLEAR_TAP_COUNT_TIME","t1","vX","dirX","vY","dirY","y","delta_pos_x","delta_pos_y","stopped","SCROLL_FRICTION","translationX","translationY","d","decorators","decorate","defineProperty","__decorate","BaseActionViewItem","context","action","_context","_action","handleActionChangeEvent","enabled","updateEnabled","checked","updateChecked","class","updateClass","updateLabel","updateTooltip","tooltip","actionRunner","_actionRunner","getAction","isEnabled","setActionContext","newContext","render","enableDragging","draggable","dataTransfer","setData","onClick","isMenu","preserveFocus","useEventAsContext","run","focus","blur","setFocusable","focusable","trapsArrowNavigation","getTooltip","title","hoverDelegate","customHover","update","_store","ActionViewItem","icon","cssClass","ID","keybinding","comment","split","ActionBar","_c","_d","_e","_f","previousKeys","nextKeys","triggerKeyDown","_onDidCancel","cancelHasListener","onDidCancel","_onDidRun","onDidRun","_onBeforeRun","onBeforeRun","_orientation","orientation","_triggerKeys","keyDown","triggerKeys","_actionIds","viewItems","viewItemDisposables","Map","focusedItem","animated","eventHandled","focusPrevious","focusNext","focusFirst","focusLast","isTriggerKeyEvent","doTrigger","updateFocusedItem","focusTracker","previouslyFocusedItem","actionsList","ariaRole","ariaLabel","refreshRole","firstEnabled","find","vi","ret","elem","getContainer","arg","actions","actionViewItemElement","actionViewItemProvider","allowContextMenu","splice","selectFirst","findIndex","updateFocus","forceLoop","startIndex","preventLoopNavigation","focusOnlyEnabledItems","fromRight","preventScroll","forceFocus","actionViewItem","focusItem","_arguments","generator","P","Promise","resolve","reject","fulfilled","rejected","done","then","MAX_MESSAGE_LENGTH","ariaContainer","alertContainer","alertContainer2","statusContainer","statusContainer2","setARIAContainer","createAlertContainer","createStatusContainer","alert","msg","insertMessage","status","formatRule","def","definition","fontCharacter","defaultOpts","badgeBackground","fromHex","badgeForeground","CountBadge","count","badgeBorder","countFormat","titleFormat","setCount","setTitleFormat","applyStyles","styles","background","foreground","borderWidth","borderStyle","borderColor","NLS_DEFAULT_LABEL","FindInput","contextViewProvider","_showOptionButtons","fixFocusOnOptionClickEnabled","imeSessionInProgress","additionalToggles","_onDidOptionChange","onDidOptionChange","_onKeyDown","onKeyDown","_onMouseDown","onMouseDown","_onInput","_onKeyUp","_onCaseSensitiveKeyDown","onCaseSensitiveKeyDown","_onRegexKeyDown","onRegexKeyDown","_lastHighlightFindOptions","placeholder","validation","inputActiveOptionBorder","inputActiveOptionForeground","inputActiveOptionBackground","inputBackground","inputForeground","inputBorder","inputValidationInfoBorder","inputValidationInfoBackground","inputValidationInfoForeground","inputValidationWarningBorder","inputValidationWarningBackground","inputValidationWarningForeground","inputValidationErrorBorder","inputValidationErrorBackground","inputValidationErrorForeground","appendCaseSensitiveLabel","appendWholeWordsLabel","appendRegexLabel","history","flexibleHeight","flexibleWidth","flexibleMaxHeight","inputBox","validationOptions","showHistoryHint","regex","appendTitle","isChecked","onChange","viaKeyboard","validate","wholeWords","caseSensitive","indexes","onkeydown","newIndex","controls","paddingRight","reduce","inputElement","onkeyup","oninput","onmousedown","enable","disable","setFocusInputOnOptionClick","setEnabled","getValue","setValue","toggleStyles","inputBoxStyles","select","getCaseSensitive","setCaseSensitive","getWholeWords","setWholeWords","getRegex","setRegex","focusOnCaseSensitive","highlightFindOptions","showMessage","message","clearMessage","hideMessage","NLS_CASE_SENSITIVE_TOGGLE_LABEL","NLS_WHOLE_WORD_TOGGLE_LABEL","NLS_REGEX_TOGGLE_LABEL","CaseSensitiveToggle","opts","WholeWordsToggle","wholeWord","RegexToggle","HighlightedLabel","highlights","didEverRender","supportIcons","escapeNewLines","pos","highlight","end","start","extraClasses","total","extra","offset","FastLabelNode","_element","disposed","_textContent","empty","_empty","marginLeft","IconLabel","customHovers","labelContainer","nameContainer","descriptionContainer","supportHighlights","nameNode","LabelWithHighlights","Label","supportDescriptionHighlights","descriptionNodeFactory","setLabel","classes","italic","strikethrough","join","setupHover","descriptionTitle","descriptionNode","descriptionMatches","htmlElement","previousCustomHover","delete","hoverDisposable","disposable","values","singleLabel","domId","separator","labelEscapeNewLines","labels","labelStart","map","labelRange","intersect","range","isEmpty","splitMatches","m","__awaiter","setupNativeHover","markdownNotSupportedFallback","UpdatableHoverWidget","fadeInAnimation","_cancellationTokenSource","isDisposed","resolvedContent","markdown","_hoverWidget","token","isCancellationRequested","oldHoverWidget","hasContent","hoverOptions","showPointer","placement","hoverPosition","skipFadeInAnimation","showHover","setupCustomHover","hoverPreparation","hoverWidget","hideHover","disposeWidget","disposePreparation","onDidHideHover","triggerShowHover","delay","mouseOverDomEmitter","toDispose","fromElement","targetElements","onMouseMove","newContent","labelWithIconsRegex","iconNameExpression","iconModifierExpression","renderLabelWithIcons","textStart","textStop","escaped","codicon","renderIcon","asClassNameArray","ArrayNavigator","items","min","previous","first","last","HistoryNavigator","limit","_initialize","_limit","_onChange","getHistory","_elements","_history","_currentPosition","_navigator","has","_reduceToLimit","currentElement","Set","entry","dom","InputBox","maxHeight","Number","POSITIVE_INFINITY","_onDidHeightChange","onDidHeightChange","wrapper","input","onfocus","onblur","mirror","scrollableElement","vertical","whiteSpace","wordWrap","getDomNode","onScroll","onSelectionChange","onAnchoredSelectionChange","selection","getSelection","anchorNode","updateScrollDimensions","showPlaceholderOnFocus","setPlaceHolder","setTooltip","onValueChange","ignoreGesture","updateMirror","actionbar","_hideMessage","_showMessage","placeHolder","setAriaLabel","getAriaLabel","newValue","cachedHeight","setSelectionRange","scrollWidth","isSelectionAtEnd","selectionEnd","selectionStart","disabled","horizontalPadding","paddingLeft","cachedContentHeight","scrollHeight","setScrollDimensions","setScrollPosition","force","classForType","stylesForType","errorMsg","div","layout","alertText","showContextView","getAnchor","anchorAlignment","renderOptions","spanElement","formatContent","onHide","nls","aria","hideContextView","charCodeAt","previousHeight","insertAtCursor","HistoryInputBox","NLS_PLACEHOLDER_HISTORY_HINT","NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX","NLS_PLACEHOLDER_HISTORY_HINT_SUFFIX_IN_PARENS","addSuffix","endsWith","suffixedPlaceholder","observer","MutationObserver","mutationList","mutation","observe","attributeFilter","resetPlaceholder","historyHint","revertedPlaceholder","disconnect","addToHistory","getCurrentValue","showNextValue","getNextValue","showPreviousValue","getPreviousValue","currentValue","groupIntersect","intersection","much","RangeMap","_size","deleteCount","diff","before","after","g","middle","previousGroup","group","consolidate","indexAt","newSize","indexAfter","positionAt","groupCount","newCount","RowCache","renderers","cache","alloc","templateId","getTemplateCache","templateData","getRenderer","renderTemplate","release","row","releaseRow","removeFromParent","cachedRows","cachedRow","disposeTemplate","renderer","DefaultOptions","useShadows","verticalScrollMode","setRowLineHeight","setRowHeight","supportDynamicHeights","dnd","getDragElements","getDragURI","onDragStart","drop","horizontalScrolling","transformOptimization","alwaysConsumeMouseWheel","ElementsDragAndDropData","getData","ExternalElementsDragAndDropData","NativeDragAndDropData","types","files","file","ListViewAccessibilityProvider","accessibilityProvider","getSetSize","getPosInSet","getRole","ListView","virtualDelegate","_g","_h","_j","_k","InstanceCount","renderWidth","_scrollHeight","scrollableElementUpdateDisposable","scrollableElementWidthDelayer","splicing","dragOverAnimationStopDisposable","dragOverMouseY","canDrop","currentDragFeedbackDisposable","onDragLeaveTimeout","_onDidChangeContentHeight","_horizontalScrolling","itemId","rangeMap","lastRenderTop","lastRenderHeight","mouseSupport","additionalScrollHeight","rowsContainer","scrollable","forceIntegerValues","smoothScrollDuration","smoothScrolling","cb","horizontal","mouseWheelScrollSensitivity","fastScrollSensitivity","onTouchChange","toDragEvent","contentHeight","measureItemWidth","updateScrollWidth","cancel","updateOptions","setSmoothScrollDuration","_splice","previousRenderRange","getRenderRange","deleteRange","removeRange","rowsToDispose","dragStartDisposable","checkedDisposable","rows","disposeElement","previousRestRange","previousRenderedRestRange","previousUnrenderedRestRanges","relativeComplement","inserted","getTemplateId","getHeight","hasDynamicHeight","lastDynamicHeightWidth","dropTarget","deleted","delta","renderRange","renderedRestRange","updateRange","updateItemInDOM","removeRanges","removeItemFromDOM","unrenderedRestRanges","insertRanges","beforeElement","getNextToLastElement","insertItemInDOM","eventuallyUpdateScrollDimensions","_rerender","renderHeight","eventuallyUpdateScrollWidth","trigger","rerender","getScrollDimensions","domElement","elementHeight","elementTop","scrollDimensions","renderTop","renderLeft","updateItemsInDOM","rangesToInsert","rangesToRemove","rangesToUpdate","role","renderElement","getElementDomId","getScrollTop","getScrollPosition","setScrollTop","reuseAnimation","onMouseClick","toMouseEvent","onMouseDblClick","onMouseMiddleClick","onMouseOver","onContextMenu","any","toGestureEvent","toTouchEvent","onTap","getItemIndexFromEventTarget","inSmoothScrolling","error","effectAllowed","setDragImage","getDragLabel","dragImage","currentDragData","setupDragAndDropScrollTopAnimation","accept","currentDragFeedback","feedback","dropEffect","effect","f1","f2","clearDragOverFeedback","dragData","teardownDragAndDropScrollTopAnimation","dragOverAnimationDisposable","viewTop","animateDragAndDropScrollTop","upperLimit","rawIndex","isNaN","anchorElementIndex","anchorElementTopDelta","heightDiff","didChange","probeDynamicHeight","unrenderRanges","renderRanges","afterIndex","beforeRow","deltaScrollTop","getFutureScrollPosition","newScrollTop","getDynamicHeight","setDynamicHeight","ranges","lastRange","nextToLastItem","CombinedSpliceable","spliceables","s","ListError","user","TypeNavigationMode","TypeNavigationControllerState","TraitRenderer","trait","renderedElements","renderedElementIndex","rendered","unrender","renderIndex","insertCount","renderedElement","renderIndexes","Trait","_trait","sortedIndexes","hasTrait","_set","numericSort","sortedResult","toRender","disjunction","SelectionTrait","setAriaSelected","TraitSpliceable","identityProvider","pastElementsWithTrait","getId","elementsWithTrait","isInputElement","isMonacoEditor","isButton","KeyboardController","list","multipleSelectionDisposables","on","onEnter","onUpArrow","onDownArrow","onPageUpArrow","onPageDownArrow","onEscape","multipleSelectionSupport","onCtrlA","chain","optionsUpdate","setSelection","getFocus","setAnchor","reveal","focusPreviousPage","focusNextPage","DefaultKeyboardNavigationDelegate","mightProducePrintableCharacter","TypeNavigationController","keyboardNavigationLabelProvider","keyboardNavigationEventFilter","delegate","Idle","Automatic","triggered","previouslyFocused","enabledDisposables","typeNavigationEnabled","typeNavigationMode","typing","onChar","onClear","debounce","onInput","word","Typing","getKeyboardNavigationLabel","labelStr","setFocus","DOMFocusController","onTab","focusedDomElement","tabIndexElement","querySelector","isSelectionSingleChangeEvent","isSelectionRangeChangeEvent","DefaultMultipleSelectionController","MouseController","_onPointer","onPointer","multipleSelectionController","onDoubleClick","getHTMLElement","onViewPointer","isSelectionChangeEvent","domFocus","changeSelection","MouseEvent","currentFocus","rangeSelection","contiguousRange","reverse","getContiguousRangeContaining","newSelection","one","j","DefaultStyleController","styleElement","selectorSuffix","listBackground","isOpaque","listFocusBackground","listFocusForeground","listActiveSelectionBackground","listActiveSelectionForeground","listActiveSelectionIconForeground","listFocusAndSelectionOutline","listFocusAndSelectionBackground","listFocusAndSelectionForeground","listInactiveFocusForeground","listInactiveSelectionIconForeground","listInactiveFocusBackground","listInactiveSelectionBackground","listInactiveSelectionForeground","listHoverBackground","listHoverForeground","listSelectionOutline","listFocusOutline","listInactiveFocusOutline","listHoverOutline","listDropBackground","tableColumnsBorder","tableOddRowsBackgroundColor","defaultStyles","treeIndentGuidesStroke","transparent","keyboardSupport","PipelineRenderer","_templateId","AccessibiltyRenderer","ariaLevel","getAriaLevel","ListViewDragAndDrop","getSelectedElements","originalEvent","targetElement","targetIndex","List","eventBufferer","_ariaLabel","_onDidDispose","onDidDispose","getWidgetRole","baseRenderers","onDidChangeActiveDescendant","viewOptions","styleController","spliceable","keyboardController","keyboardNavigationDelegate","typeNavigationController","mouseController","createMouseController","onDidChangeFocus","_onFocusChange","onDidChangeSelection","_onSelectionChange","getWidgetAriaLabel","wrapEvent","toListEvent","didJustPressContextMenuKey","fromKeyDown","fromKeyUp","fromMouse","signal","bufferEvents","getAnchorElement","n","loop","findNextIndex","findPreviousIndex","lastPageIndex","currentlyFocusedElementIndex","lastGoodPageIndex","previousScrollTop","nextpageScrollTop","firstPageIndex","firstGoodPageIndex","focusNth","getFocusedElements","relativeTop","viewItemBottom","scrollBottom","getElementID","getActiveDescendantId","MOUSE_CURSOR_TEXT_CSS_CLASS_NAME","OrthogonalEdge","onDidChangeGlobalSize","onDidChangeHoverDelay","MouseEventFactory","onPointerMove","onPointerUp","GestureEventFactory","OrthogonalPointerEventFactory","factory","PointerEventsDisabledCssClass","Sash","layoutProvider","hoverDelay","hoverDelayer","_state","onDidEnablementChange","_onDidStart","_onDidReset","_onDidEnd","orthogonalStartSashDisposables","orthogonalStartDragHandleDisposables","orthogonalEndSashDisposables","orthogonalEndDragHandleDisposables","onDidStart","onDidReset","onDidEnd","linkedSash","orthogonalEdge","onPointerStart","onMouseDoubleClick","onPointerDoublePress","onMouseEnter","onMouseLeave","onDoubleTap","res","orthogonalStartSash","orthogonalEndSash","_orthogonalStartSash","_orthogonalEndSash","sash","_orthogonalStartDragHandle","_orthogonalEndDragHandle","pointerEventFactory","isMultisashResize","__orthogonalSashEvent","orthogonalSash","getOrthogonalSash","__linkedSashEvent","iframes","iframe","startX","startY","startEvent","currentX","currentY","updateStyle","cursor","fromLinkedSash","clearSashHoverState","verticalProvider","getVerticalSashLeft","getVerticalSashTop","getVerticalSashHeight","horizontalProvider","getHorizontalSashTop","getHorizontalSashLeft","getHorizontalSashWidth","ScrollbarArrow","_onActivate","onActivate","bgDomNode","bgWidth","bgHeight","classNamesArray","ARROW_IMG_SIZE","_pointerMoveMonitor","_arrowPointerDown","_pointerdownRepeatTimer","_pointerdownScheduleRepeatTimer","cancelAndSet","pointerMoveData","ScrollbarVisibilityController","visibleClassName","invisibleClassName","_visibleClassName","_invisibleClassName","_domNode","_isVisible","_isNeeded","_rawShouldBeVisible","_shouldBeVisible","_revealTimer","_updateShouldBeVisible","setShouldBeVisible","rawShouldBeVisible","_applyVisibilitySetting","shouldBeVisible","ensureVisibility","setIsNeeded","isNeeded","setDomNode","_reveal","_hide","setIfNotSet","withFadeAway","AbstractScrollbar","_lazyRender","lazyRender","_host","_scrollable","_scrollByPage","scrollByPage","_scrollbarState","scrollbarState","_visibilityController","extraScrollbarClassName","_shouldRender","_domNodePointerDown","_createArrow","arrow","_createSlider","slider","_sliderPointerDown","onclick","_onElementSize","visibleSize","setVisibleSize","_onElementScrollSize","elementScrollSize","setScrollSize","_onElementScrollPosition","elementScrollPosition","beginReveal","beginHide","_renderDomNode","getRectangleLargeSize","getRectangleSmallSize","_updateSlider","getSliderSize","getArrowSize","getSliderPosition","_onPointerDown","delegatePointerDown","domTop","getClientRects","sliderStart","sliderStop","pointerPos","_sliderPointerPosition","offsetX","offsetY","domNodePosition","_pointerDownRelativePosition","_setDesiredScrollPositionNow","getDesiredScrollPositionFromOffsetPaged","getDesiredScrollPositionFromOffset","initialPointerPosition","initialPointerOrthogonalPosition","_sliderOrthogonalPointerPosition","initialScrollbarState","pointerOrthogonalPosition","pointerOrthogonalDelta","pointerDelta","getDesiredScrollPositionFromDelta","_desiredScrollPosition","desiredScrollPosition","writeScrollPosition","setScrollPositionNow","updateScrollbarSize","scrollbarSize","_updateScrollbarSize","setScrollbarSize","ScrollbarState","arrowSize","oppositeScrollbarSize","scrollSize","scrollPosition","_scrollbarSize","round","_oppositeScrollbarSize","_arrowSize","_visibleSize","_scrollSize","_scrollPosition","_computedAvailableSize","_computedIsNeeded","_computedSliderSize","_computedSliderRatio","_computedSliderPosition","_refreshComputedValues","iVisibleSize","iScrollSize","iScrollPosition","setOppositeScrollbarSize","_computeValues","computedAvailableSize","computedRepresentableSize","computedIsNeeded","computedSliderSize","computedSliderRatio","computedSliderPosition","desiredSliderPosition","correctedOffset","HorizontalScrollbar","getCurrentScrollPosition","horizontalHasArrows","horizontalScrollbarSize","verticalScrollbarSize","arrowDelta","scrollbarDelta","scrollbarButtonLeft","onMouseWheel","scrollbarButtonRight","horizontalSliderSize","sliderSize","sliderPosition","largeSize","smallSize","onDidScroll","VerticalScrollbar","verticalHasArrows","scrollbarButtonUp","scrollbarButtonDown","verticalSliderSize","MouseWheelClassifierItem","score","MouseWheelClassifier","_capacity","_memory","_front","_rear","isPhysicalMouseWheel","remainingInfluence","iteration","influence","pow","_computeScore","_isAlmostInt","AbstractScrollableElement","_onScroll","_onWillScroll","overflow","handleMouseWheel","flipAxes","consumeMouseWheelIfScrollbarIsNeeded","scrollYToX","scrollPredominantAxis","mouseWheelSmoothScroll","listenOnDomNode","resolveOptions","_onDidScroll","scrollbarHost","mouseWheelEvent","_onMouseWheel","_onDragStart","_onDragEnd","_verticalScrollbar","_horizontalScrollbar","_leftShadowDomNode","_topShadowDomNode","_topLeftShadowDomNode","_listenOnDomNode","_mouseWheelToDispose","_setListeningToMouseWheel","onmouseover","_onMouseOver","onmouseleave","_onMouseLeave","_hideTimeout","_isDragging","_mouseIsOver","_revealOnScroll","getOverviewRulerLayoutInfo","delegateVerticalScrollbarPointerDown","dimensions","updateClassName","newClassName","newOptions","_render","shouldListen","classifier","osZoomFactor","didScroll","shiftConvert","futureScrollPosition","desiredScrollTop","ceil","deltaScrollLeft","desiredScrollLeft","validateScrollPosition","setScrollPositionSmooth","consumeMouseWheel","renderNow","scrollState","enableTop","enableLeft","leftClassName","topClassName","topLeftClassName","_scheduleHide","ScrollableElement","SmoothScrollableElement","DomScrollableElement","scrollTopChanged","scrollLeftChanged","scanDomNode","separatorBorder","ViewItem","_cachedVisibleSize","cachedVisibleSize","visible","setVisible","viewMinimumSize","viewMaximumSize","minimumSize","maximumSize","snap","layoutContext","layoutContainer","VerticalViewItem","HorizontalViewItem","State","Sizing","Distribute","Split","Invisible","SplitView","contentSize","proportions","sashItems","_onDidSashChange","_onDidSashReset","_startSnappingEnabled","_endSnappingEnabled","onDidSashChange","onDidSashReset","inverseAltBehavior","proportionalLayout","getSashOrthogonalSize","sashContainer","viewContainer","scrollbarVisibility","descriptor","views","viewDescriptor","sizing","doAddView","saveProportions","startSnappingEnabled","endSnappingEnabled","sashItem","updateSashEnablement","isTransparent","removeProperty","addView","skipLayout","previousSize","lowPriorityIndexes","highPriorityIndexes","resize","distributeEmptySpace","layoutViews","onSashStart","alt","resetSashDragState","sashDragState","sizes","snapBefore","snapAfter","minDelta","NEGATIVE_INFINITY","maxDelta","viewItem","upIndexes","downIndexes","minDeltaUp","maxDeltaUp","maxDeltaDown","minDeltaDown","snapBeforeIndex","findFirstSnapIndex","snapAfterIndex","halfSize","limitDelta","onSashChange","newDelta","isLastSash","newSizes","viewItemIndex","newMinDelta","newMaxDelta","resizeIndex","onSashEnd","onViewChange","relayout","resizeView","Busy","distributeViewSizes","flexibleViewItems","flexibleSize","getViewSize","onChangeDisposable","containerDisposable","viewSize","getSashPosition","sashEventMapper","onStartDisposable","onStart","onEnd","onEndDisposable","onDidResetDisposable","overloadMinDelta","overloadMaxDelta","upItems","upSizes","downItems","downSizes","snapped","snapView","deltaUp","deltaDown","lowPriorityIndex","emptyDelta","updateScrollableElement","collapsesDown","expandsDown","reverseViews","collapsesUp","expandsUp","snappedBefore","snappedAfter","Toggle","_opts","_checked","_icon","actionClassName","notFocusable","keyboardEvent","newIsChecked","Widget","listener","Action","actionCallback","_enabled","_id","_label","_cssClass","_actionCallback","_setLabel","_tooltip","_setTooltip","_setClass","_setEnabled","_setChecked","ActionRunner","runAction","Separator","SubmenuAction","_actions","EmptySubmenuAction","toAction","props","tail","tail2","itemEquals","removeFastWithoutKeepingOrder","binarySearch","comparator","compareToKey","low","high","mid","comp","binarySearch2","findFirstInSorted","p","quickSelect","nth","compare","pivotValue","random","lower","higher","pivots","val","groupBy","currentGroup","coalesce","isFalsyOrEmpty","isNonEmptyArray","distinct","keyFn","seen","findLast","predicate","idx","lastIndex","firstOrDefault","notFoundValue","to","arrayInsert","insertIndex","insertArr","pushToStart","unshift","pushToEnd","pushMany","asArray","newItems","getActualStartIndex","startIdx","originalLength","newItemsLength","insertInto","CompareResult","compareBy","isLessThan","isGreaterThan","isNeitherLessOrGreaterThan","greaterThan","lessThan","neitherLessOrGreaterThan","numberComparator","findMaxBy","findLastMaxBy","findMinBy","ArrayQueue","firstIdx","lastIdx","takeWhile","takeFromEndWhile","endIdx","dequeue","takeCount","ok","__asyncValues","asyncIterator","__values","verb","v","settle","isThenable","createCancelablePromise","thenable","promise","subscription","onCancellationRequested","onfinally","finally","raceCancellation","defaultValue","ref","Throttler","activePromise","queuedPromise","queuedPromiseFactory","queue","promiseFactory","onComplete","MicrotaskDelay","Delayer","defaultDelay","deferred","completionPromise","doResolve","doReject","task","cancelTimeout","scheduled","queueMicrotask","isTriggered","microtaskDeferred","timeout","clearTimeout","timeoutDeferred","ThrottledDelayer","delayer","throttler","millis","disposableTimeout","timer","promiseFactories","shouldStop","TimeoutTimer","_token","IntervalTimer","clearInterval","interval","setInterval","RunOnceScheduler","timeoutToken","timeoutHandler","onTimeout","isScheduled","schedule","doRun","runWhenIdle","requestIdleCallback","cancelIdleCallback","didTimeout","timeRemaining","IdleValue","executor","_didRun","_executor","_error","_handle","isInitialized","DeferredPromise","resolved","completeCallback","errorCallback","isRejected","isSettled","complete","Promises","settled","promises","firstError","all","withAsyncBody","bodyFn","AsyncIterableObject","_results","_onStateChanged","writer","emitOne","emitMany","fromArray","fromPromise","fromPromises","merge","iterables","iterable","iterable_1","iterable_1_1","e_1","e_1_1","return","toPromise","mapFn","e_2","iterable_2_1","iterable_2","e_2_1","filterFn","e_3","iterable_3_1","iterable_3","e_3_1","iterable_4","iterable_4_1","e_4","e_4_1","EMPTY","CancelableAsyncIterableObject","_source","createCancelableAsyncIterable","innerIterable","e_5","innerIterable_1_1","innerIterable_1","e_5_1","hasBuffer","Buffer","textDecoder","VSBuffer","buffer","byteLength","wrap","actual","isBuffer","byteOffset","TextDecoder","decode","readUInt16LE","writeUInt16LE","destination","readUInt32BE","writeUInt32BE","readUInt8","writeUInt8","LRUCachedFunction","lastCache","lastArgKey","JSON","stringify","CachedFunction","_map","cachedValues","shortcutEvent","CancellationToken","isCancellationToken","thing","Cancelled","MutableToken","_isCancelled","_emitter","CancellationTokenSource","_parentListener","getCodiconAriaLabel","_match","codiconName","Codicon","_allCodicons","classNames","cssSelector","getAll","CSSIcon","plus","gistNew","repoCreate","lightbulb","lightBulb","repo","repoDelete","gistFork","repoForked","gitPullRequest","gitPullRequestAbandoned","recordKeys","tagAdd","tagRemove","person","personFollow","personOutline","personFilled","gitBranch","gitBranchCreate","gitBranchDelete","sourceControl","mirrorPublic","star","starAdd","starDelete","starEmpty","commentAdd","warning","searchSave","logOut","signOut","logIn","signIn","eye","eyeUnwatch","eyeWatch","circleFilled","primitiveDot","closeDirty","debugBreakpoint","debugBreakpointDisabled","debugHint","primitiveSquare","edit","pencil","info","issueOpened","gistPrivate","gitForkPrivate","lock","mirrorPrivate","close","removeClose","repoSync","sync","desktopDownload","beaker","microscope","vm","deviceDesktop","fileText","more","ellipsis","kebabHorizontal","mailReply","reply","organization","organizationFilled","organizationOutline","newFile","fileAdd","newFolder","fileDirectoryCreate","trash","trashcan","clock","folder","fileDirectory","symbolFolder","logoGithub","markGithub","github","terminal","repl","zap","symbolEvent","variable","symbolVariable","symbolArray","symbolModule","symbolPackage","symbolNamespace","symbolObject","symbolMethod","symbolFunction","symbolConstructor","symbolBoolean","symbolNull","symbolNumeric","symbolNumber","symbolStructure","symbolStruct","symbolParameter","symbolTypeParameter","symbolKey","symbolText","symbolReference","goToFile","symbolEnum","symbolValue","symbolRuler","symbolUnit","activateBreakpoints","archive","arrowBoth","arrowDown","arrowLeft","arrowRight","arrowSmallDown","arrowSmallLeft","arrowSmallRight","arrowSmallUp","arrowUp","bell","bold","book","bookmark","debugBreakpointConditionalUnverified","debugBreakpointConditional","debugBreakpointConditionalDisabled","debugBreakpointDataUnverified","debugBreakpointData","debugBreakpointDataDisabled","debugBreakpointLogUnverified","debugBreakpointLog","debugBreakpointLogDisabled","briefcase","broadcast","bug","calendar","check","checklist","chevronDown","dropDownButton","chevronLeft","chevronRight","chevronUp","chromeClose","chromeMaximize","chromeMinimize","chromeRestore","circleOutline","debugBreakpointUnverified","circleSlash","circuitBoard","clearAll","clippy","closeAll","cloudDownload","cloudUpload","collapseAll","colorMode","commentDiscussion","compareChanges","creditCard","dash","dashboard","database","debugContinue","debugDisconnect","debugPause","debugRestart","debugStart","debugStepInto","debugStepOut","debugStepOver","debugStop","debug","deviceCameraVideo","deviceCamera","deviceMobile","diffAdded","diffIgnored","diffModified","diffRemoved","diffRenamed","discard","editorLayout","emptyWindow","exclude","extensions","eyeClosed","fileBinary","fileCode","fileMedia","filePdf","fileSubmodule","fileSymlinkDirectory","fileSymlinkFile","fileZip","flame","foldDown","foldUp","fold","folderActive","folderOpened","gear","gift","gistSecret","gist","gitCommit","gitCompare","gitMerge","githubAction","githubAlt","globe","grabber","graph","gripper","heart","home","horizontalRule","hubot","inbox","issueClosed","issueReopened","issues","jersey","json","kebabVertical","law","lightbulbAutofix","linkExternal","link","listOrdered","listUnordered","liveShare","loading","mailRead","mail","megaphone","mention","milestone","mortarBoard","move","multipleWindows","mute","noNewline","note","octoface","openPreview","package_","paintcan","pin","play","plug","preserveCase","preview","project","pulse","question","quote","radioTower","reactions","references","refresh","remoteExplorer","remote","replaceAll","repoClone","repoForcePush","repoPull","repoPush","report","requestChanges","rocket","rootFolderOpened","rootFolder","rss","ruby","saveAll","saveAs","save","screenFull","screenNormal","searchStop","server","settingsGear","settings","shield","smiley","sortPrecedence","splitHorizontal","splitVertical","squirrel","starFull","starHalf","symbolClass","symbolColor","symbolCustomColor","symbolConstant","symbolEnumMember","symbolField","symbolFile","symbolInterface","symbolKeyword","symbolMisc","symbolOperator","symbolProperty","wrench","wrenchSubaction","symbolSnippet","tasklist","telescope","textSize","threeBars","thumbsdown","thumbsup","tools","triangleDown","triangleLeft","triangleRight","triangleUp","twitter","unfold","unlock","unmute","unverified","verified","versions","vmActive","vmOutline","vmRunning","watch","whitespace","zoomIn","zoomOut","listFilter","listFlat","listSelection","listTree","debugBreakpointFunctionUnverified","debugBreakpointFunction","debugBreakpointFunctionDisabled","debugStackframeActive","circleSmallFilled","debugStackframeDot","debugStackframe","debugStackframeFocused","debugBreakpointUnsupported","symbolString","debugReverseContinue","debugStepBack","debugRestartFrame","callIncoming","callOutgoing","menu","expandAll","groupByRefType","ungroupByRefType","account","bellDot","debugConsole","library","output","runAll","syncIgnored","pinned","githubInverted","debugAlt","serverProcess","serverEnvironment","pass","stopCircle","playCircle","record","debugAltSmall","vmConnect","cloud","exportIcon","graphLeft","magnet","notebook","redo","checkAll","pinnedDirty","passFilled","circleLargeFilled","circleLargeOutline","combine","gather","variableGroup","typeHierarchy","typeHierarchySub","typeHierarchySuper","gitPullRequestCreate","runAbove","runBelow","notebookTemplate","debugRerun","workspaceTrusted","workspaceUntrusted","workspaceUnspecified","terminalCmd","terminalDebian","terminalLinux","terminalPowershell","terminalTmux","terminalUbuntu","terminalBash","arrowSwap","copy","personAdd","filterFilled","wand","debugLineByLine","inspect","layers","layersDot","layersActive","compass","compassDot","compassActive","azure","issueDraft","gitPullRequestClosed","gitPullRequestDraft","debugAll","debugCoverage","runErrors","folderLibrary","debugContinueSmall","beakerStop","graphLine","graphScatter","pieChart","bracket","bracketDot","bracketError","lockSmall","azureDevops","verifiedFilled","newLine","layoutActivitybarLeft","layoutActivitybarRight","layoutPanelLeft","layoutPanelCenter","layoutPanelJustify","layoutPanelRight","layoutPanel","layoutSidebarLeft","layoutSidebarRight","layoutStatusbar","layoutMenubar","layoutCentered","layoutSidebarRightOff","layoutPanelOff","layoutSidebarLeftOff","indent","recordSmall","errorSmall","arrowCircleDown","arrowCircleLeft","arrowCircleRight","arrowCircleUp","heartFilled","mapFilled","circleSmall","bellSlash","bellSlashDot","commentUnresolved","gitPullRequestGoToChanges","gitPullRequestNewChanges","dialogError","dialogWarning","dialogInfo","dialogClose","treeItemExpanded","treeFilterOnTypeOn","treeFilterOnTypeOff","treeFilterClear","treeItemLoading","menuSelection","menuSubmenu","menuBarMore","toolBarMore","quickInputBack","iconNameSegment","iconNameCharacter","cssIconIdRegex","modifier","asClassName","asCSSSelector","roundFloat","number","decimalPoints","decimal","RGBA","_rgbaBrand","HSLA","_hslaBrand","fromRGBA","rgba","chroma","_hue2rgb","q","toRGBA","hsla","HSVA","_hsvaBrand","cmax","hsva","Color","_hsla","_hsva","hex","Format","CSS","parseHex","red","getRelativeLuminance","_relativeLuminanceForComponent","isLighter","isLighterThan","another","isDarkerThan","lighten","factor","darken","opposite","_toString","format","getLighterColor","of","relative","lum1","lum2","getDarkerColor","white","black","blue","green","cyan","lightgrey","_toTwoDigitHex","_parseHexDigit","formatRGB","formatRGBA","toFixed","formatHSL","formatHSLA","formatHex","formatHexA","compact","createStringDataTransferItem","stringOrPromise","asString","asFile","createFileDataTransferItem","fileName","VSDataTransfer","_entries","mimeType","toKey","existing","mine","flat","f","mime","memoize","_target","fnKey","memoizeKey","configurable","enumerable","writable","DiffChange","originalStart","modifiedStart","modifiedLength","getOriginalEnd","getModifiedEnd","StringDiffSequence","getElements","characters","Int32Array","stringDiff","original","modified","pretty","LcsDiff","ComputeDiff","changes","Debug","Assert","condition","MyArray","Copy","sourceArray","sourceIndex","destinationArray","destinationIndex","Copy2","DiffChangeHelper","m_changes","m_originalStart","m_modifiedStart","m_originalCount","m_modifiedCount","MarkNextChange","AddOriginalElement","originalIndex","modifiedIndex","AddModifiedElement","getChanges","getReverseChanges","originalSequence","modifiedSequence","continueProcessingPredicate","ContinueProcessingPredicate","_originalSequence","_modifiedSequence","originalStringElements","originalElementsOrHash","originalHasStrings","_getElements","modifiedStringElements","modifiedElementsOrHash","modifiedHasStrings","_hasStrings","_originalStringElements","_originalElementsOrHash","_modifiedStringElements","_modifiedElementsOrHash","m_forwardHistory","m_reverseHistory","_isStringArray","sequence","hashes","ElementsAreEqual","ElementsAreStrictEqual","_getStrictElement","getStrictElement","OriginalElementsAreEqual","index1","index2","ModifiedElementsAreEqual","_ComputeDiff","originalEnd","modifiedEnd","quitEarlyArr","ComputeDiffRecursive","PrettifyChanges","quitEarly","midOriginalArr","midModifiedArr","ComputeRecursionPoint","midOriginal","midModified","leftChanges","rightChanges","ConcatenateChanges","WALKTRACE","diagonalForwardBase","diagonalForwardStart","diagonalForwardEnd","diagonalForwardOffset","diagonalReverseBase","diagonalReverseStart","diagonalReverseEnd","diagonalReverseOffset","forwardPoints","reversePoints","deltaIsEven","forwardChanges","reverseChanges","changeHelper","diagonalMin","diagonalMax","diagonalRelative","lastOriginalIndex","historyIndex","diagonal","originalStartPoint","modifiedStartPoint","lastForwardChange","maxDifferences","numDiagonals","numDifferences","furthestOriginalIndex","furthestModifiedIndex","ClipDiagonalBound","tempOriginalIndex","matchLengthOfLongest","temp","change","originalStop","modifiedStop","checkOriginal","checkModified","startStrictEqual","mergedChangeArr","ChangesOverlap","prevChange","bestDelta","bestScore","_boundaryScore","aChange","bChange","matchedLength","aOriginalStart","bOriginalEnd","abOriginalLength","aModifiedStart","bModifiedEnd","abModifiedLength","_findBetterContiguousSequence","originalMatchStart","modifiedMatchStart","desiredLength","originalMax","modifiedMax","bestOriginalStart","bestModifiedStart","_contiguousSequenceScore","_OriginalIsBoundary","_OriginalRegionIsBoundary","_ModifiedIsBoundary","_ModifiedRegionIsBoundary","diagonalBaseIndex","diffEven","errorHandler","listeners","unexpectedErrorHandler","ErrorNoTelemetry","isErrorNoTelemetry","emit","onUnexpectedError","onUnexpectedExternalError","isCancellationError","transformErrorForSerialization","$isError","stacktrace","noTelemetry","canceledName","CancellationError","canceled","illegalArgument","illegalState","NotSupportedError","fromError","BugIndicatingError","Event","once","thisArgs","didFire","snapshot","each","initial","Emitter","leading","leakWarningThreshold","numDebouncedCalls","cur","_output","latch","firstCall","shouldEmit","events","isT","flushAfterTimeout","_buffer","flush","onFirstListenerDidAdd","ChainableEvent","fromNodeEventEmitter","eventName","removeListener","fromDOMEventEmitter","runAndSubscribe","runAndSubscribeWithStore","store","EmitterObserver","obs","_counter","_hasChanged","addObserver","removeObserver","beginUpdate","_observable","handleChange","_change","endUpdate","fromObservable","EventProfiling","_listenerCount","_invocationCount","_elapsedOverall","_name","_idPool","listenerCount","_stopWatch","elapsed","Stacktrace","print","Listener","callbackThis","invoke","_disposed","_leakageMon","_perfMon","_profName","_deliveryQueue","deliveryQueue","_listeners","_event","firstListener","removeMonitor","onListenerDidAdd","PrivateEventDeliveryQueue","deliver","EventDeliveryQueue","_queue","EventDeliveryQueueElement","newQueue","PauseableEmitter","_isPaused","_eventQueue","_mergeFn","pause","resume","DebounceEmitter","_delay","EventBufferer","buffers","Relay","listening","inputEvent","inputEventListener","isPathSeparator","toSlashes","osPath","sep","toPosixPath","getRoot","path","firstLetter","isWindowsDriveLetter","isEqualOrParent","base","parentCandidate","ignoreCase","sepOffset","charAt","char0","hasDriveLetter","isWindowsOS","or","wordToMatchAgainst","_matchesPrefix","matchesPrefix","matchesContiguousSubString","matchesSubString","_matchesSubString","isLower","isUpper","isNumber","isWhitespace","wordSeparators","isWordSeparator","isAlphanumeric","head","nextAnchor","camelCaseWord","_matchesCamelCase","nextUpperIndex","matchesCamelCase","upper","isCamelCasePattern","analysis","alpha","numeric","upperPercent","lowerPercent","alphaPercent","numericPercent","analyzeCamelCaseWord","isCamelCaseWord","isUpperCaseWord","matchesWords","contiguous","_matchesWords","nextWord","codeA","codeB","nextWordIndex","fuzzyContiguousFilter","fuzzySeparateFilter","fuzzyRegExpCache","matchesFuzzy","enableSeparateSubstringMatching","regexp","anyScore","pattern","lowPattern","patternPos","lowWord","wordPos","fuzzyScore","firstMatchCanBeWeak","boostFullMatch","createMatches","_maxLen","initTable","initArr","maxLen","_minWordMatchPos","_maxWordMatchPos","_diag","_table","_arrows","_debug","printTable","patternLen","wordLen","pad","isSeparatorAtPos","codePointAt","isWhitespaceAtPos","isUpperCaseAtPos","wordLow","FuzzyScore","Default","isDefault","FuzzyScoreOptions","patternLow","patternStart","wordStart","default","fillMinWordPosArr","isPatternInWord","_fillInMaxWordMatchPos","column","hasStrongFirstMatch","minWordMatchPos","maxWordMatchPos","nextMaxWordMatchPos","MIN_SAFE_INTEGER","canComeDiag","_doScore","diagScore","MAX_SAFE_INTEGER","canComeLeft","leftScore","canComeLeftLeft","leftLeftScore","log","printTables","backwardsDiagLength","maxMatchColumn","diagColumn","skippedCharsCount","newMatchStart","outFirstMatchStrong","isGapLocation","fuzzyScoreGracefulAggressive","aggressive","tries","movingPatternPos","newPattern","nextTypoPermutation","candidate","fuzzyScoreWithPermutations","swap1","swap2","_this","didCall","doHash","hashVal","numberHash","initialHashVal","stringHash","objectHash","booleanHash","leftRotate","bits","totalBits","fill","dest","toHexString","bufferOrValue","bitsize","ArrayBuffer","Uint8Array","padStart","leftPad","StringSHA1","_h0","_h1","_h2","_h3","_h4","_buff","_buffDV","DataView","_buffLen","_totalLen","_leftoverHighSurrogate","_finished","strLen","buff","buffLen","leftoverHighSurrogate","codePoint","nextCharCode","_push","_step","digest","_wrapUp","ml","setUint32","bigBlock32","_bigBlock32","getUint32","k","MarkdownString","isTrustedOrOptions","isTrusted","supportThemeIcons","supportHtml","appendText","newlineStyle","g1","appendMarkdown","appendCodeblock","langId","appendLink","_escape","ch","isEmptyMarkdownString","oneOrMany","isMarkdownString","every","escapeDoubleQuotes","removeMarkdownEscapes","parseHrefAndDimensions","splitted","parameters","heightFromParams","widthFromParams","widthIsFinite","isFinite","parseInt","heightIsFinite","iconStartMarker","iconsRegex","iconNameCharacterRegexp","escapeIconsRegex","escapeIcons","markdownEscapedIconsRegex","markdownEscapeEscapedIcons","stripIconsRegex","stripIcons","preWhitespace","postWhitespace","parseLabelWithIcons","firstIconIndex","iconOffsets","textWithoutIcons","appendChars","chars","iconsOffset","nextChar","currentIconStart","currentIconValue","doParseLabelWithIcons","matchesFuzzyIconAware","wordToMatchAgainstWithoutIconsTrimmed","leadingWhitespaceOffset","iconOffset","IdGenerator","prefix","_prefix","_lastId","nextId","defaultGenerator","Iterable","consume","atMost","consumed","single","some","concatNested","reducer","initialValue","collect","at","bt","ai","bi","an","bn","KeyCodeStrMap","_keyCodeToStr","_strToKeyCode","define","keyCodeToStr","strToKeyCode","uiMap","userSettingsUSMap","userSettingsGeneralMap","EVENT_KEY_CODE_MAP","NATIVE_WINDOWS_KEY_CODE_TO_KEY_CODE","scanCodeIntToStr","scanCodeStrToInt","scanCodeLowerCaseStrToInt","IMMUTABLE_CODE_TO_KEY_CODE","IMMUTABLE_KEY_CODE_TO_CODE","KeyCodeUtils","KeyChord","firstPart","secondPart","mappings","seenKeyCode","seenScanCode","mapping","_keyCodeOrd","immutable","scanCode","scanCodeStr","keyCodeStr","eventKeyCode","vkey","usUserSettingsLabel","generalUserSettingsLabel","toUserSettingsUS","toUserSettingsGeneral","fromUserSettings","toElectronAccelerator","ModifierLabelProvider","mac","windows","linux","modifierLabels","toLabel","OS","parts","keyLabelProvider","part","keyLabel","_simpleAsString","UILabelProvider","AriaLabelProvider","ElectronAcceleratorLabelProvider","modifiers","createKeybinding","chordPart","ChordKeybinding","createSimpleKeybinding","ctrlCmd","winCtrl","SimpleKeybinding","isModifierKey","toChord","isDuplicateModifierCase","ResolvedKeybindingPart","kbLabel","kbAriaLabel","keyAriaLabel","ResolvedKeybinding","Lazy","hasValue","rawValue","disposableTracker","trackDisposable","markAsDisposed","setParentOfDisposable","setParent","markAsSingleton","singleton","MultiDisposeError","errors","isDisposable","combinedDisposable","toDisposable","setParentOfDisposables","DisposableStore","_toDispose","_isDisposed","DISABLE_DISPOSED_WARNING","Disposable","MutableDisposable","clearAndLeak","oldValue","RefCountedDisposable","_disposable","acquire","SafeDisposable","unset","isset","ImmortalReference","Undefined","prev","LinkedList","_first","_last","_insert","atTheEnd","newNode","oldLast","oldFirst","didRemove","_remove","StringIterator","_pos","hasNext","cmp","ConfigKeysIterator","_caseSensitive","_from","_to","justSeps","PathIterator","_splitOnBackslash","_valueLen","UriIterator","_ignorePathCasing","_ignoreQueryAndFragment","_states","_stateIdx","scheme","authority","_pathIterator","TernarySearchTreeNode","rotateLeft","tmp","updateHeight","rotateRight","heightLeft","heightRight","balanceFactor","TernarySearchTree","segments","_iter","forUris","ignorePathCasing","ignoreQueryAndFragment","forStrings","forConfigKeys","_root","iter","segment","oldElement","bf","d1","d2","_getNode","_delete","deleteSuperstr","superStr","_min","newChild","dir","findSubstr","findSuperstr","_dfsEntries","bucket","ResourceMapEntry","ResourceMap","mapOrKeyFn","defaultToKey","resource","clb","toStringTag","LinkedMap","_head","_tail","addItemLast","addItemFirst","removeItem","callbackfn","trimOld","currentSize","toJSON","fromJSON","LRUCache","ratio","_ratio","checkTrim","parse","revive","depth","$mid","flags","Mimes","binary","unknown","latex","uriList","Schemas","inMemory","vscode","internal","walkThrough","walkThroughSnippet","http","https","mailto","untitled","command","vscodeRemote","vscodeRemoteResource","vscodeUserData","vscodeCustomEditor","vscodeNotebook","vscodeNotebookCell","vscodeNotebookCellMetadata","vscodeNotebookCellOutput","vscodeInteractive","vscodeInteractiveInput","vscodeSettings","vscodeWorkspaceTrust","vscodeTerminal","webviewPanel","vscodeWebview","extension","vscodeFileResource","vsls","vscodeSourceControl","RemoteAuthorities","_hosts","_ports","_connectionTokens","_preferredWebSchema","_delegate","_remoteResourcesPath","schema","rewrite","port","connectionToken","encodeURIComponent","FileAccessImpl","uriOrModule","moduleIdToUrl","toUri","FALLBACK_AUTHORITY","with","isUri","toUrl","FileAccess","clamp","MovingAverage","_n","_val","SlidingWindowAverage","_values","_index","_sum","deepClone","deepFreeze","_hasOwnProperty","cloneAndChange","changer","_cloneAndChange","changed","r1","r2","i2","mixin","overwrite","oneKeys","otherKeys","safeProcess","process","sandboxProcess","arch","env","cwd","CHAR_DOT","CHAR_FORWARD_SLASH","CHAR_BACKWARD_SLASH","CHAR_COLON","ErrorInvalidArgType","expected","determiner","validateString","isPosixPathSeparator","isWindowsDeviceRoot","normalizeString","allowAboveRoot","lastSegmentLength","lastSlash","dots","lastSlashIndex","lastIndexOf","_format","pathObject","ext","win32","pathSegments","resolvedDevice","resolvedTail","resolvedAbsolute","rootEnd","device","isAbsolute","normalize","joined","needsReplace","slashCount","firstLen","fromOrig","toOrig","fromStart","fromEnd","fromLen","toStart","toEnd","toLen","lastCommonSep","fromCode","out","toNamespacedPath","resolvedPath","dirname","matchedSlash","basename","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","delimiter","posix","trailingSeparator","hasRoot","LANGUAGE_DEFAULT","_locale","_userAgent","_isWindows","_isMacintosh","_isLinux","_isLinuxSnap","_isNative","_isWeb","_isElectron","_isIOS","_isCI","_language","_translationsConfigFile","globals","nodeProcess","isElectronProcess","electron","isElectronRenderer","rawNlsConfig","nlsConfig","availableLanguages","locale","_platform","isWindows","isMacintosh","isLinux","isNative","isWeb","isWebWorker","importScripts","isIOS","language","setTimeout0IsFaster","postMessage","setTimeout0","pending","vscodeScheduleAsyncWork","lastId","myId","_isLittleEndian","_isLittleEndianComputed","isLittleEndian","Uint16Array","isEdge","Range","intersects","second","originalFSPath","ExtUri","uri1","uri2","ignoreFragment","getComparisonKey","isEqual","isEqualAuthority","joinPath","pathFragment","basenameOrAuthority","normalizePath","normalizedPath","relativePath","fromPath","toPath","resolvePath","newURI","isAbsolutePath","a1","a2","hasTrailingPathSeparator","fsp","fsPath","removeTrailingPathSeparator","addTrailingPathSeparator","isRootSep","extUri","DataUri","META_DATA_LABEL","META_DATA_DESCRIPTION","META_DATA_SIZE","META_DATA_MIME","parseMetaData","dataUri","metadata","ScrollState","_forceIntegerValues","_scrollStateBrand","rawScrollLeft","rawScrollTop","withScrollDimensions","useRawScrollPositions","withScrollPosition","createScrollEvent","widthChanged","scrollWidthChanged","heightChanged","scrollHeightChanged","oldWidth","oldScrollWidth","oldScrollLeft","oldHeight","oldScrollHeight","oldScrollTop","Scrollable","_scrollableBrand","_smoothScrollDuration","_scheduleAtNextAnimationFrame","_smoothScrolling","newState","_setState","acceptScrollDimensions","validTarget","newSmoothScrolling","SmoothScrollingOperation","startTime","duration","animationFrameDisposable","_performSmoothScrolling","tick","isDone","oldState","SmoothScrollingUpdate","createEaseOutCubic","completion","_initAnimations","_initAnimation","viewportSize","stop1","stop2","cut","_tick","newScrollLeft","Severity","_warning","_info","fromValue","Warning","Info","Ignore","severity","hasPerformanceNow","performance","StopWatch","highResolution","_highResolution","_startTime","_now","_stopTime","isFalsyOrWhitespace","_formatRegexp","escape","escapeRegExpCharacters","haystack","needle","rtrim","ltrim","needleLen","haystackLen","convertSimple2RegExpPattern","stripWildcards","createRegExp","searchString","isRegex","global","matchCase","multiline","unicode","regExpLeadsToEndlessLoop","regExpFlags","splitLines","firstNonWhitespaceIndex","chCode","getLeadingWhitespace","lastNonWhitespaceIndex","compareSubstring","aStart","aEnd","bStart","bEnd","aLen","bLen","compareIgnoreCase","compareSubstringIgnoreCase","isLowerAsciiLetter","isAsciiDigit","isUpperAsciiLetter","equalsIgnoreCase","startsWithIgnoreCase","candidateLength","commonPrefixLength","commonSuffixLength","aLastIndex","bLastIndex","isHighSurrogate","isLowSurrogate","computeCodePoint","highSurrogate","lowSurrogate","getNextCodePoint","CodePointIterator","_str","_offset","setOffset","prevCodePoint","prevCharCode","getPrevCodePoint","nextCodePoint","eol","GraphemeIterator","_iterator","nextGraphemeLength","graphemeBreakTree","GraphemeBreakTree","initialOffset","graphemeBreakType","getGraphemeBreakType","nextGraphemeBreakType","breakBetweenGraphemeBreakType","prevGraphemeLength","prevGraphemeBreakType","nextCharLength","prevCharLength","getCharContainingOffset","endOffset","CONTAINS_RTL","containsRTL","IS_BASIC_ASCII","isBasicASCII","UNUSUAL_LINE_TERMINATORS","containsUnusualLineTerminators","isFullWidthCharacter","isEmojiImprecise","UTF8_BOM_CHARACTER","startsWithUTF8BOM","containsUppercaseCharacter","ignoreEscapedChars","singleLetterHash","breakTypeA","breakTypeB","_data","_INSTANCE","nodeCount","nodeIndex","getLeftDeleteOffset","emojiOffset","isEmojiModifier","resultOffset","getOffsetBeforeLastEmojiComponent","noBreakWhitespace","AmbiguousCharacters","confusableDictionary","locales","getLocales","_locales","isAmbiguous","getPrimaryConfusable","getConfusableCodePoints","ambiguousCharacterData","arrayToMap","intersectMaps","map1","map2","languageSpecificMap","filteredLocales","mergeMaps","InvisibleCharacters","getRawData","isInvisibleCharacter","codePoints","isString","isObject","isTypedArray","TypedArray","isIterable","isBoolean","isUndefined","isDefined","isUndefinedOrNull","assertType","assertIsDefined","isFunction","validateConstraints","constraints","validateConstraint","constraint","getAllMethodNames","methods","proto","getOwnPropertyNames","getAllPropertyNames","createProxyObject","methodNames","createProxyMethod","method","methodName","withNullAsUndefined","assertNever","toUint8","toUint32","_schemePattern","_singleSlashStart","_doubleSlashStart","_validateUri","_strict","_slash","_regexp","URI","schemeOrData","_schemeFix","_referenceResolution","uriToFsPath","Uri","percentDecode","components","newPath","skipEncoding","_asFormatted","_formatted","external","_fsPath","_sep","_pathSepMarker","encodeTable","encodeURIComponentFast","uriComponent","allowSlash","nativeEncodePos","encodeURIComponentMinimal","keepDriveLetterCasing","encoder","userinfo","decodeURIComponentGraceful","decodeURIComponent","_rEncodedAsHex","generateUuid","crypto","randomUUID","getRandomValues","_hex","NO_KEY_MODS","QuickInputHideReason","ItemActivation","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__copyProps","except","monaco_editor_core_exports","languageDefinitions","lazyLanguageLoaders","LazyLanguageLoader","getOrCreate","languageId","_languageId","_loadingTriggered","_lazyLoadPromise","_lazyLoadPromiseResolve","_lazyLoadPromiseReject","load","loader","mod","registerLanguage","languages","register","lazyLanguageLoader","registerTokensProviderFactory","async","onLanguage","setLanguageConfiguration","conf","aliases","wordPattern","comments","lineComment","blockComment","brackets","autoClosingPairs","notIn","surroundingPairs","folding","markers","defaultToken","tokenPostfix","keywords","namespaceFollows","parenFollows","operators","symbols","escapes","tokenizer","cases","include","qualified","string","litstring","litinterpstring","interpolatedstring","mimetypes","EMPTY_ELEMENTS","onEnterRules","beforeText","afterText","indentAction","IndentAction","IndentOutdent","Indent","switchTo","doctype","commentBlock","commentHtml","otherTag","script","nextEmbedded","scriptAfterType","scriptAfterTypeEquals","scriptWithCustomType","scriptEmbedded","styleAfterType","styleAfterTypeEquals","styleWithCustomType","styleEmbedded","handlebarsInSimpleState","handlebarsInEmbeddedState","handlebarsRoot","control","noncontrol","jsescapes","table_header","table_body","table_common","codeblock","codeblockgh","linecontent","$S3","embeddedStyle","embeddedScript","builtinFunctions","builtinVariables","pseudoColumns","numbers","strings","complexIdentifiers","bracketedIdentifier","quotedIdentifier","scopes","firstLine","qualifiedName","cdata","offSide","numberInteger","numberFloat","numberOctal","numberHex","numberInfinity","numberNaN","numberDate","multiString","multiStringContinued","flowCollections","flowScalars","doubleQuotedString","blockStyle","flowNumber","tagHandle","applyFontInfo","fontInfo","getMassagedFontFamily","ElementSizeObserver","referenceDomElement","dimension","_referenceDomElement","_resizeObserver","measureReferenceDomElement","stopObserving","getWidth","startObserving","ResizeObserver","contentRect","emitEvent","observedWidth","observedHeight","CharWidthRequest","chr","fulfill","DomCharWidthReader","bareFontInfo","requests","_bareFontInfo","_requests","_container","_testElements","read","_createDomElements","_readFromDomElements","regularDomNode","boldDomNode","italicDomNode","testElements","request","htmlString","testString","FontMeasurementsImpl","_cache","FontMeasurementsCache","_evictUntrustedReadingsTimeout","clearAllFontInfos","_writeToCache","put","_evictUntrustedReadings","getValues","somethingRemoved","readFontInfo","readConfig","_actualReadFontInfo","typicalHalfwidthCharacterWidth","typicalFullwidthCharacterWidth","spaceWidth","maxDigitWidth","pixelRatio","isMonospace","canUseHalfwidthRightwardsArrow","middotWidth","wsmiddotWidth","_createRequest","monospace","typicalHalfwidthCharacter","typicalFullwidthCharacter","space","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","rightwardsArrow","halfwidthRightwardsArrow","middot","monospaceTestChars","readCharWidths","OFF","referenceWidth","_keys","FontMeasurements","TabFocus","_tabFocus","_onDidChangeTabFocus","onDidChangeTabFocus","getTabFocusMode","setTabFocusMode","tabFocusMode","TextAreaSyntethicEvents","CopyOptions","forceCopyWithSyntaxHighlighting","InMemoryClipboardMetadataManager","_lastState","lastCopiedValue","pastedText","CompositionContext","_lastTypeTextLength","handleCompositionUpdate","typeInput","replacePrevCharCnt","replaceNextCharCnt","positionDelta","TextAreaInput","_textArea","_OS","_browser","_onFocus","_onBlur","onKeyUp","_onCut","onCut","_onPaste","onPaste","_onType","onType","_onCompositionStart","onCompositionStart","_onCompositionUpdate","onCompositionUpdate","_onCompositionEnd","onCompositionEnd","_onSelectionChangeRequest","onSelectionChangeRequest","_asyncTriggerCut","_asyncFocusGainWriteScreenReaderContent","writeScreenReaderContent","_textAreaState","_selectionChangeListener","_hasFocus","_currentComposition","lastKeyDown","currentComposition","readFromTextArea","deduceAndroidCompositionInput","setIgnoreSelectionChangeTime","deduceInput","_ensureClipboardGetsEditorSelection","onCopy","clipboardData","ClipboardEventUtils","getTextData","hadFocus","_setHasFocus","onSyntheticTap","_installSelectionChangeListener","previousSelectionChangeEventTime","delta1","delta2","getIgnoreSelectionChangeTime","resetSelectionChangeTime","selectionStartPosition","selectionEndPosition","newSelectionStart","getSelectionStart","newSelectionEnd","getSelectionEnd","_newSelectionStartPosition","deduceEditorPosition","newSelectionStartPosition","deduceModelPosition","_newSelectionEndPosition","newSelectionEndPosition","lineNumber","focusTextArea","refreshFocusState","isFocused","newHasFocus","_setAndWriteTextAreaState","reason","textAreaState","collapseSelection","writeToTextArea","getScreenReaderContent","dataToCopy","getDataToCopy","storedMetadata","isFromEmptySelection","multicursorText","setTextData","rawmetadata","TextAreaWrapper","_actual","_onSyntheticTap","_ignoreSelectionChangeTime","textArea","selectionDirection","currentIsFocused","currentSelectionStart","currentSelectionEnd","_debugComposition","TextAreaState","_finishDeduceEditorPosition","str1","str2","deltaText","signum","lineFeedCnt","lastLineFeedIndex","previousState","currentState","couldBeEmojiInput","prefixLength","suffixLength","previousValue","previousSelectionStart","previousSelectionEnd","replacePreviousCharacters","PagedScreenReaderStrategy","_getPageOfLine","linesPerPage","_getRangeForPage","page","startLineNumber","endLineNumber","fromEditorSelection","model","trimLongText","selectionStartPage","selectionStartPageRange","selectionEndPage","selectionEndPageRange","pretextRange","intersectRanges","startColumn","pretext","getValueInRange","lastLine","getLineCount","lastLineMaxColumn","getLineMaxColumn","posttextRange","endColumn","posttext","selectionRange1","selectionRange2","LIMIT_CHARS","ColumnSelection","columnSelect","config","fromLineNumber","fromVisibleColumn","toLineNumber","toVisibleColumn","lineCount","reversed","isRTL","isLTR","columnFromVisibleColumn","visibleStartColumn","visibleColumnFromColumn","visibleEndColumn","maxColumn","viewStates","fromVisualColumn","toVisualColumn","columnSelectLeft","prevColumnSelectData","toViewVisualColumn","fromViewLineNumber","fromViewVisualColumn","toViewLineNumber","columnSelectRight","maxVisualViewColumn","minViewLineNumber","maxViewLineNumber","lineMaxViewColumn","lineMaxVisualViewColumn","columnSelectUp","isPaged","linesCount","pageSize","columnSelectDown","EditorScroll_","RevealLine_","CoreNavigationCommands","CoreEditorCommand","runEditorCommand","accessor","editor","viewModel","_getViewModel","runCoreEditorCommand","scrollArg","by","revealCursor","RawDirection","Up","Down","RawUnit","Line","WrappedLine","Page","HalfPage","Editor","unit","reveaLineArg","RawAtArgument","Top","Center","Bottom","EditorOrNativeTextInputCommand","addImplementation","focusedEditor","getFocusedCodeEditor","hasTextFocus","_runEditorCommand","runDOMCommand","activeEditor","getActiveCodeEditor","BaseMoveToCommand","_minimalReveal","minimalReveal","_inSelectionMode","inSelectionMode","pushStackElement","setCursorStates","moveTo","getPrimaryCursorState","viewPosition","revealPrimaryCursor","MoveTo","precondition","MoveToSelect","ColumnSelectCommand","_getColumnSelectResult","getCursorColumnSelectData","viewState","fromViewState","setCursorColumnSelectData","isReal","revealTopMostCursor","revealBottomMostCursor","ColumnSelect","primary","validatedPosition","validatePosition","validatedViewPosition","coordinatesConverter","validateViewPosition","doColumnSelect","mouseColumn","cursorConfig","CursorColumnSelectLeft","kbOpts","weight","kbExpr","textInputFocus","CursorColumnSelectRight","ColumnSelectUpCommand","_isPaged","CursorColumnSelectUp","CursorColumnSelectPageUp","ColumnSelectDownCommand","CursorColumnSelectDown","CursorColumnSelectPageDown","CursorMoveImpl","parsed","_runCursorMove","_move","getCursorStates","cursors","simpleMove","viewportMove","CursorMove","CursorMoveBasedCommand","_staticArgs","dynamicArgs","CursorLeft","secondary","CursorLeftSelect","CursorRight","CursorRightSelect","CursorUp","CursorUpSelect","CursorPageUp","CursorPageUpSelect","CursorDown","CursorDownSelect","CursorPageDown","CursorPageDownSelect","CreateCursor","wholeLine","line","states","newModelPosition","modelState","newViewPosition","containsPosition","LastCursorMoveToSelect","lastAddedCursorIndex","getLastAddedCursorIndex","newStates","HomeCommand","moveToBeginningOfLine","CursorHome","CursorHomeSelect","LineStartCommand","_exec","fromModelState","CursorLineStart","CursorLineStartSelect","EndCommand","moveToEndOfLine","sticky","CursorEnd","properties","CursorEndSelect","LineEndCommand","CursorLineEnd","CursorLineEndSelect","TopCommand","moveToBeginningOfBuffer","CursorTop","CursorTopSelect","BottomCommand","moveToEndOfBuffer","CursorBottom","CursorBottomSelect","EditorScrollImpl","_runEditorScroll","_computeDesiredScrollTop","desiredVisibleViewRange","getCompletelyVisibleViewRangeAtScrollTop","findPositionInViewportIfOutside","viewLayout","visibleViewRange","getCompletelyVisibleViewRange","visibleModelRange","convertViewRangeToModelRange","desiredTopModelLineNumber","convertModelPositionToViewPosition","getVerticalOffsetForLineNumber","noOfLines","deltaLines","getCurrentScrollTop","EditorScroll","ScrollLineUp","ScrollPageUp","win","ScrollEditorTop","ScrollLineDown","ScrollPageDown","ScrollEditorBottom","WordCommand","WordSelect","WordSelectDrag","LastCursorWordSelect","lastAddedState","hasSelection","LineCommand","LineSelect","LineSelectDrag","LastCursorLineCommand","LastCursorLineSelect","LastCursorLineSelectDrag","CancelSelection","hasNonEmptySelection","cancelSelection","RemoveSecondaryCursors","hasMultipleSelections","CORE_WEIGHT","RevealLine","revealLineArg","lineNumberArg","revealAt","viewRange","convertModelRangeToViewRange","revealRange","SelectAll","execCommand","selectAll","SetSelection","fromModelSelection","columnSelectionCondition","and","columnSelection","registerColumnSelection","registerKeybindingRule","when","registerCommand","CoreEditingCommands","CoreEditingCommand","runCoreEditingCommand","LineBreakInsert","pushUndoStop","executeCommands","lineBreakInsert","Outdent","editorTextFocus","tabDoesNotMoveFocus","outdent","Tab","tab","DeleteLeft","shouldPushStackElementBefore","commands","deleteLeft","getPrevEditOperationType","getCursorAutoClosedCharacters","setPrevEditOperationType","DeleteRight","deleteRight","Undo","hasModel","getOption","getModel","undo","Redo","EditorHandlerCommand","handlerId","_handlerId","runCommand","registerOverwritableCommand","CodeDataTransfers","EDITORS","Extensions","DragAndDropContribution","_contributions","toVSDataTransfer","vsDataTransfer","kind","asStringValue","getAsString","getAsFile","createFileDataTransferItemFromFile","arrayBuffer","INTERNAL_DND_MIME_TYPES","addExternalEditorsDropData","dragEvent","overwriteUriList","editorData","editors","rawEditorsData","rawResourcesData","resourcesRaw","resourceRaw","createDraggedEditorInputFromRawResourcesData","isExternal","allowWorkspaceOpen","rawCodeFiles","codeFiles","codeFile","contributions","as","contribution","dataFormatKey","getEditorInputs","extractEditorsDropData","UriList","isCodeEditor","getEditorType","ICodeEditor","isDiffEditor","IDiffEditor","getCodeEditor","getModifiedEditor","PageCoordinates","_pageCoordinatesBrand","toClientCoordinates","ClientCoordinates","_clientCoordinatesBrand","toPageCoordinates","EditorPagePosition","_editorPagePositionBrand","CoordinatesRelativeToEditor","_positionRelativeToEditorBrand","createEditorPagePosition","editorViewDomNode","editorPos","createCoordinatesRelativeToEditor","editorPagePosition","scaleX","scaleY","relativeX","relativeY","EditorMouseEvent","isFromPointerCapture","_editorMouseEventBrand","relativePos","EditorMouseEventFactory","_editorViewDomNode","_create","onMouseUp","onPointerDown","EditorPointerEventFactory","onPointerLeave","GlobalEditorPointerMoveMonitor","_globalPointerMoveMonitor","_keydownListener","DynamicCssRules","_editor","_instanceId","_rules","_garbageCollectionScheduler","garbageCollect","createClassNameRef","rule","getOrCreateRule","increaseRefCount","decreaseRefCount","computeUniqueKey","existingRule","RefCountedCssRule","getContainerDomNode","hasReferences","_containerElement","_referenceCount","_styleElement","getCssText","camelToDashes","letter","EditorExtensionsRegistry","Command","_kbOpts","_menuOpts","menuOpts","_description","_registerMenuItem","kbOptsArr","kbWhen","appendMenuItem","menuId","order","MultiCommand","_implementations","logService","trace","impl","ProxyCommand","EditorCommand","bindToContribution","controllerGetter","_callback","controller","codeEditorService","invokeWithinContext","editorAccessor","contextMatchesRules","EditorAction","convertOptions","alias","withDefaults","EditorContext","contextMenuOpts","reportTelemetry","publicLog2","MultiEditorAction","registerModelAndPositionCommand","instaService","isIPosition","editorPosition","invokeFunction","createModelReference","reference","textEditorModel","registerEditorCommand","editorCommand","EditorContributionRegistry","registerEditorAction","ctor","registerMultiEditorAction","registerInstantiatedEditorAction","editorAction","registerEditorContribution","getEditorCommand","commandId","getEditorActions","getEditorContributions","getSomeEditorContributions","ids","getDiffEditorContributions","editorContributions","diffEditorContributions","editorActions","editorCommands","UndoCommand","MenubarEditMenu","CommandPalette","RedoCommand","SelectAllCommand","MenubarSelectionMenu","IBulkEditService","ResourceEdit","convert","edits","ResourceTextEdit","ResourceFileEdit","textEdit","versionId","oldResource","newResource","ICodeEditorService","StableEditorScrollState","_visiblePosition","_visiblePositionScrollDelta","_cursorPosition","capture","visiblePosition","visiblePositionScrollDelta","visibleRanges","getVisibleRanges","getStartPosition","visiblePositionScrollTop","getTopForPosition","getPosition","restore","restoreRelativeVerticalPositionOfCursor","currentCursorPosition","getTopForLineNumber","MarkerDecorationsContribution","_markerDecorationsService","paramIndex","decorator","EditorSettingMigration","migrate","_read","_write","firstDotIndex","firstSegment","registerEditorSettingMigration","registerSimpleEditorSettingMigration","write","suggestFilteredTypesMapping","function","deprecated","field","struct","interface","operator","constant","enum","enumMember","keyword","typeParameter","snippet","EditorConfiguration","isSimpleWidget","_accessibilityService","_onDidChangeFast","onDidChangeFast","_isDominatedByLongLines","_viewLineCount","_lineNumbersDigitCount","_reservedHeight","_computeOptionsMemory","_containerObserver","_rawOptions","deepCloneAndMigrateOptions","_validatedOptions","EditorOptionsUtil","validateOptions","_computeOptions","onDidChangeZoomLevel","_recomputeOptions","onDidChangeScreenReaderOptimized","changeEvent","checkEquals","partialEnv","_readEnvConfiguration","createFromValidatedSettings","_readFontInfo","memory","outerWidth","outerHeight","extraEditorClassName","isDominatedByLongLines","viewLineCount","lineNumbersDigitCount","emptySelectionClipboard","accessibilitySupport","computeOptions","getExtraEditorClassName","isScreenReaderOptimized","getAccessibilitySupport","getRawOptions","_newOptions","applyUpdate","observeContainer","setIsDominatedByLongLines","setModelLineCount","modelLineCount","digitCount","setViewLineCount","setReservedHeight","reservedHeight","ValidatedEditorOptions","option","ComputedEditorOptions","editorOption","editorOptions","compute","_deepEquals","arrays","somethingChanged","objects","migration","migrateOptions","ViewEventHandler","shouldRender","forceShouldRender","setShouldRender","onDidRender","onConfigurationChanged","onCursorStateChanged","onDecorationsChanged","onFlushed","onFocusChanged","onLanguageConfigurationChanged","onLineMappingChanged","onLinesChanged","onLinesDeleted","onLinesInserted","onRevealRangeRequest","onScrollChanged","onThemeChanged","onTokensChanged","onTokensColorsChanged","onZonesChanged","handleEvents","ViewPart","addEventHandler","removeEventHandler","PartFingerprints","partId","stopAt","resultLen","RestrictedRenderingContext","viewportData","_restrictedRenderingContextBrand","_viewLayout","getScrollWidth","getScrollHeight","visibleRange","bigNumbersDelta","vInfo","getCurrentViewport","viewportWidth","viewportHeight","getScrolledTopFromAbsoluteTop","absoluteTop","getDecorationsInViewport","RenderingContext","viewLines","_renderingContextBrand","_viewLines","linesVisibleRangesForRange","includeNewLines","visibleRangeForPosition","LineVisibleRanges","outsideRenderedLine","HorizontalRange","_horizontalRangeBrand","FloatHorizontalRange","_floatHorizontalRangeBrand","HorizontalPosition","originalLeft","VisibleRanges","RangeUtil","_createRange","_handyReadyRange","createRange","_detachRange","endNode","selectNodeContents","_readClientRects","startElement","startOffset","endElement","setStart","setEnd","_mergeAdjacentRanges","_createHorizontalRangesFromClientRects","clientRects","clientRectDeltaLeft","clientRectScale","clientRect","readHorizontalRanges","startChildIndex","endChildIndex","canUseFastRenderedViewLine","monospaceAssumptionsAreValid","DomReadingContext","_clientRectDeltaLeft","_clientRectScale","_clientRectRead","readClientRect","rect","ViewLineOptions","themeType","renderWhitespace","renderControlCharacters","useMonospaceOptimizations","stopRenderingLineAfter","fontLigatures","ViewLine","_isMaybeInvalid","_renderedViewLine","onContentChanged","onOptionsChanged","onSelectionChanged","renderLine","deltaTop","sb","lineData","getViewLineRenderingData","actualInlineDecorations","inlineDecorations","minColumn","selectionsOnLine","selections","renderLineInput","continuesWithWrappedLine","tokens","tabSize","startVisibleColumn","appendASCIIString","CLASS_NAME","renderedViewLine","containsForeignElements","lineTokens","getCount","FastRenderedViewLine","characterMapping","createRenderedLine","layoutLine","getWidthIsFast","needsMonospaceFontCheck","onMonospaceAssumptionsInvalidated","toSlowRenderedLine","getVisibleRangesForRange","lineContent","horizontalRanges","getColumnOfNodeOffset","spanNode","_characterMapping","_charWidth","_getCharPosition","expectedWidth","actualWidth","startPosition","endPosition","horizontalOffset","getHorizontalOffset","spanNodeTextContentLength","spanIndex","previousSibling","getColumn","RenderedViewLine","_isWhitespaceOnly","_containsForeignElements","_cachedWidth","_pixelOffsetCache","Float32Array","_getReadingTarget","myDomNode","_readPixelOffset","_readVisibleRangesForRange","pixelOffset","_readRawVisibleRangesForRange","readingTarget","cachedPixelOffset","_actualReadPixelOffset","domPosition","getDomPosition","partIndex","charIndex","expectedResult","startDomPosition","endDomPosition","WebKitRenderedViewLine","endPixelOffset","HitTestResult","UnknownHitTestResult","hitTarget","ContentHitTestResult","injectedText","createFromDOMInfo","getPositionFromDOMInfo","PointerHandlerLastRenderData","lastViewCursorsRenderData","lastTextareaPosition","MouseTarget","_deduceRage","createUnknown","createTextarea","createMargin","createViewZone","createContentText","createContentEmpty","createContentWidget","createScrollbar","createOverlayWidget","createOutsideEditor","_typeToString","ElementPath","isTextArea","isChildOfViewLines","isStrictChildOfViewLines","isChildOfScrollableElement","isChildOfMinimap","isChildOfContentWidgets","isChildOfOverflowingContentWidgets","isChildOfOverlayWidgets","HitTestContext","viewHelper","lastRenderData","configuration","layoutInfo","viewDomNode","stickyTabStops","_viewHelper","getZoneAtCoord","mouseVerticalOffset","viewZoneWhitespace","getWhitespaceAtVerticalOffset","viewZoneMiddle","verticalOffset","positionBefore","positionAfter","afterLineNumber","viewZoneId","getFullLineRangeAtCoord","isAfterLines","maxLineColumn","getLineNumberAtVerticalOffset","isInTopPadding","isInBottomPadding","findAttribute","_findAttribute","getLineWidth","getCurrentScrollLeft","BareHitTestRequest","mouseContentHorizontalOffset","contentLeft","isInMarginArea","glyphMarginLeft","isInContentArea","MouseTargetFactory","_getMouseColumn","HitTestRequest","_ctx","targetPath","getLineContent","getOptions","fulfillUnknown","fulfillTextarea","fulfillMargin","fulfillViewZone","fulfillContentText","fulfillContentEmpty","fulfillContentWidget","fulfillScrollbar","fulfillOverlayWidget","withTarget","EMPTY_CONTENT_AFTER_LINES","createEmptyContentDataInLines","horizontalDistanceToText","mouseTargetIsWidget","createMouseTarget","_createMouseTarget","domHitTestExecuted","hitTestResult","_doHitTest","createMouseTargetFromHitTestPosition","resolvedRequest","_hitTestContentWidget","_hitTestOverlayWidget","_hitTestMinimap","_hitTestScrollbarSlider","_hitTestViewZone","_hitTestMargin","_hitTestViewCursor","_hitTestTextArea","_hitTestViewLines","_hitTestScrollbar","widgetId","mightBeForeignElement","cursorVerticalOffset","viewZoneData","mouseTargetType","glyphMarginWidth","lineNumbersWidth","getLineLength","lineWidth","possibleLineNumber","getMouseColumn","columnHorizontalOffset","points","mouseCoordinates","spanNodeClientRect","mouseIsOverSpanNode","curr","rng","resultPos","_doHitTestWithCaretRangeFromPoint","lineCenteredVerticalOffset","adjustedPageY","adjustedPage","_actualDoHitTestWithCaretRangeFromPoint","coords","caretRangeFromPoint","elementFromPoint","TEXT_NODE","lastChild","font","pixelCursor","charWidthReader","CharWidthReader","getCharWidth","shadowCaretRangeFromPoint","startContainer","parent1","parent2","parent3","_doHitTestWithCaretPositionFromPoint","hitResult","caretPositionFromPoint","offsetNode","parent1ClassName","parent2ClassName","tokenSpan","_snapToSoftTabBoundary","newPosition","atomicPosition","getInjectedTextAt","normalizedPosition","normalizePosition","_canvas","cacheKey","measureText","MouseHandler","viewController","_mouseLeaveMonitor","mouseTargetFactory","_mouseDownOperation","MouseDownOperation","testEventTarget","lastMouseLeaveTime","mouseEvents","_onContextMenu","_onMouseMove","_onMouseUp","capturePointerId","emitMouseWheel","zoomLevel","getZoomLevel","setZoomLevel","hasChanged","onHeightChanged","getTargetAtClientPoint","getLastRenderData","elementsFromPoint","emitContextMenu","isActive","emitMouseMove","emitMouseLeave","emitMouseUp","targetIsContent","targetIsGutter","targetIsLineNumbers","selectOnLineNumbers","targetIsViewZone","targetIsWidget","shouldHandle","shouldSuppressMouseDownOnViewZone","shouldSuppressMouseDownOnWidget","emitMouseDown","_viewController","_mouseMoveMonitor","_onScrollTimeout","_mouseState","MouseDownState","_currentSelection","_isActive","_lastMouseEvent","_onMouseDownThenMove","setModifiers","_findMousePosition","isDragAndDrop","emitMouseDrag","_dispatchMouse","targetType","setStartedOnLineNumbers","setStartButtons","trySetCount","viewLinesDomNode","KeyboardEvent","emitMouseDropCanceled","emitMouseDrop","_stop","_getPositionOutsideEditor","editorContent","_helpPositionJumpOverViewZone","aboveLineNumber","belowLineNumber","positionOutsideEditor","selectionStartLineNumber","selectionStartColumn","isBefore","dispatchMouse","startedOnLineNumbers","mouseDownCount","onInjectedText","_altKey","_ctrlKey","_metaKey","_shiftKey","_leftButton","_middleButton","_startedOnLineNumbers","_lastMouseDownPosition","_lastMouseDownPositionEqualCount","_lastMouseDownCount","_lastSetMouseDownCountTime","setMouseDownCount","newMouseDownPosition","CLEAR_MOUSE_DOWN_COUNT_TIME","PointerEventHandler","linesContentDomNode","_lastPointerType","pointerType","deltaScrollNow","TouchHandler","dispatchTextAreaEvent","PointerHandler","TouchEvent","DynamicViewOverlay","LineNumbersOverlay","_readConfig","_lastCursorModelPosition","_lastCursorViewPosition","_renderResult","_activeLineNumber","lineNumbers","_renderLineNumbers","renderType","_renderCustomLineNumbers","renderFn","_renderFinalNewline","_lineNumbersLeft","lineNumbersLeft","_lineNumbersWidth","primaryViewPosition","convertViewPositionToModelPosition","_getLineRenderLineNumber","viewLineNumber","modelPosition","modelLineNumber","prepareRender","lineHeightClassName","visibleStartLineNumber","visibleEndLineNumber","common","relativeLineNumbers","isWrappedLine","lineIndex","renderLineNumber","relativeLineNumber","theme","collector","getColor","addRule","activeLineNumber","Margin","_canUseLayerHinting","_contentLeft","_glyphMarginLeft","_glyphMarginWidth","OUTER_CLASS_NAME","_glyphMarginBackgroundDomNode","adjustedScrollTop","VisibleTextAreaData","distanceToModelLineStart","widthOfHiddenLineTextBefore","distanceToModelLineEnd","_visibleTextAreaBrand","visibleTextareaStart","visibleTextareaEnd","_previousPresentation","visibleRangeProvider","startModelPosition","endModelPosition","definePresentation","tokenPresentation","underline","canUseZeroSizeTextarea","TextAreaHandler","_primaryCursorPosition","_primaryCursorVisibleRange","_visibleRangeProvider","_scrollLeft","_scrollTop","_setAccessibilityOptions","_contentWidth","contentWidth","_contentHeight","_fontInfo","_emptySelectionClipboard","_copyWithSyntaxHighlighting","_visibleTextArea","_selections","_modelSelections","_lastRenderPosition","_getAriaLabel","textAreaCover","simpleModel","textAreaInputHost","rawTextToCopy","getPlainTextToCopy","newLineCharacter","getEOL","richText","getRichTextToCopy","_accessibilitySupport","textBefore","_getWordBeforePosition","_getCharacterBeforePosition","placeholderText","wordAtPosition","positionOffsetInWord","_getAndroidWordAtPosition","_accessibilityPageSize","viewAnchorPosition","deltaOffset","deduceModelPositionRelativeToViewPosition","textAreaWrapper","_textAreaInput","emitKeyDown","emitKeyUp","pasteOnNewLine","paste","compositionType","modelSelection","ta","widthOfHiddenTextBefore","textBeforeSelection","lineFeedOffset1","lineTextBeforeSelection","tabOffset1","desiredVisibleBeforeCharCount","visibleBeforeCharCount","textAfterSelection","lineFeedOffset2","lineTextAfterSelection","tabOffset2","desiredVisibleAfterCharCount","getEndPosition","visibleAfterCharCount","fromPositions","compositionStart","compositionEnd","setHasFocus","goingLeft","goingRight","distance","charBefore","accessibilityPageSize","modelSelections","setAriaOptions","activeDescendant","positionLineNumber","positionColumn","visibleStart","visibleEnd","_newlinecount","viewLineData","getViewLineData","startTokenIndex","findTokenIndexAtOffset","textareaSpansSingleToken","presentation","getPresentation","_doRender","lastRenderPosition","useCover","getColorMap","_renderAtTopLeft","renderData","tac","ViewController","userInputEvents","commandDelegate","startComposition","endComposition","_validateViewColumn","getLineMinColumn","_hasMulticursorModifier","_hasNonMulticursorModifier","selectionClipboardIsOn","_columnSelect","_lastCursorLineSelect","_createCursor","_lineSelectDrag","_lineSelect","_selectAll","_lastCursorLineSelectDrag","_lastCursorWordSelect","_wordSelectDrag","_wordSelect","_lastCursorMoveToSelect","_moveToSelect","_usualArgs","_convertViewToModelPosition","ViewUserInputEvents","onMouseDrag","onMouseDrop","onMouseDropCanceled","_coordinatesConverter","_convertViewToModelMouseEvent","_convertViewToModelMouseTarget","convertViewToModelMouseTarget","RenderedLinesCollection","createLine","_createLine","rendLineNumberStart","lines","_lines","_rendLineNumberStart","_get","getStartLineNumber","getEndLineNumber","getLine","deleteFromLineNumber","deleteToLineNumber","deleteCnt","deleteStartIndex","deleteAboveCount","changeFromLineNumber","changeCount","changeToLineNumber","someoneNotified","changedLineNumber","insertFromLineNumber","insertToLineNumber","insertCnt","newLines","beforeLines","afterLines","deletedLines","notifiedSomeone","VisibleLinesCollection","_createDomNode","_linesCollection","createVisibleLine","lineDomNode","getVisibleLine","renderLines","inp","ViewLayerRenderer","linesLength","resCtx","relativeVerticalOffset","inContext","stopLineNumber","_finishRendering","_renderUntouchedLines","_insertLinesBefore","removeCnt","_removeLinesBefore","_insertLinesAfter","_removeLinesAfter","endIndex","deltaLN","newLinesLen","removeCount","removeIndex","_finishRenderingNewLines","domNodeIsEmpty","newLinesHTML","wasNew","_ttPolicy","insertAdjacentHTML","currChild","_finishRenderingInvalidLines","invalidLinesHTML","wasInvalid","hugeDomNode","replaceChild","_sb","hadNewLine","build","hadInvalidLine","ViewOverlays","_visibleLines","_dynamicOverlays","_isFocused","ViewOverlayLine","addDynamicOverlay","overlay","dynamicOverlay","_viewOverlaysRender","dynamicOverlays","_configuration","_renderedContent","ContentViewOverlays","MarginViewOverlays","Coordinate","_coordinateBrand","ViewContentWidgets","_viewDomNode","_widgets","overflowingContentWidgetsDomNode","addWidget","_widget","myWidget","allowEditorOverflow","setWidgetPosition","widget","preference","affinity","removeWidget","suppressMouseDown","onBeforeRender","_fixedOverflowWidgets","_range","_viewRange","_affinity","_preference","_cachedDomNodeOffsetWidth","_cachedDomNodeOffsetHeight","_getMaxWidth","_renderData","_setPosition","validModelRange","validateRange","modelPositionIsVisible","_layoutBoxInViewport","topLeft","bottomLeft","aboveLineTop","heightAboveLine","underLineTop","aboveTop","fitsAbove","belowTop","fitsBelow","actualAboveLeft","actualBelowLeft","aboveLeft","belowLeft","_layoutHorizontalSegmentInPage","windowSize","MIN_LIMIT","MAX_LIMIT","absoluteLeft","_layoutBoxInPage","absoluteAboveTop","absoluteBelowTop","absoluteAboveLeft","absoluteBelowLeft","_prepareRenderWidgetAtExactPositionOverflowing","_getTopAndBottomLeft","visibleRangesForRange","visibleRangesForLine","firstLineMinLeft","lastLineMinLeft","topForPosition","topForBottomLine","_prepareRenderWidget","preferredDimensions","beforeRender","safeInvoke","pref","coordinate","afterRender","AbstractLineHighlightOverlay","_renderLineHighlight","_renderLineHighlightOnlyWhenFocus","_selectionIsEmpty","_focused","_cursorLineNumbers","_readFromSelections","cursorsLineNumbers","selectionIsEmpty","_shouldRenderThis","renderedLine","_renderOne","_shouldRenderInMargin","_shouldRenderInContent","CurrentLineHighlightOverlay","_shouldRenderOther","CurrentLineMarginHighlightOverlay","lineHighlight","defines","lineHighlightBorder","DecorationsOverlay","_typicalHalfwidthCharacterWidth","_decorations","decorations","decorationsLen","zIndex","aClassName","bClassName","compareRangesUsingStarts","_renderWholeLineDecorations","_renderNormalDecorations","lenI","isWholeLine","decorationOutput","prevClassName","prevShowIfCollapsed","prevRange","showIfCollapsed","areIntersectingOrTouching","plusRange","_renderNormalDecoration","linesVisibleRanges","lenJ","lineVisibleRanges","singleVisibleRange","center","lenK","EditorScrollbar","linesContent","overflowGuardDomNode","scrollbar","scrollbarOptions","getScrollable","scrollbarDomNode","_setLayout","onBrowserDesperateReveal","lookAtScrollTop","lookAtScrollLeft","newScrollPosition","deltaLeft","side","minimap","minimapWidth","newOpts","scrollbarShadowColor","scrollbarSliderBackgroundColor","scrollbarSliderHoverBackgroundColor","scrollbarSliderActiveBackgroundColor","DecorationToRender","_decorationToRenderBrand","DedupOverlay","prevEndLineIndex","startLineIndex","endLineIndex","GlyphMarginOverlay","_glyphMargin","_getDecorations","rLen","glyphMarginClassName","IndentGuidesOverlay","_primaryPosition","wrappingInfo","_spaceWidth","_maxIndentLeft","wrappingColumn","_bracketPairGuideOptions","indentation","bracketPairs","activeCursorPosition","indents","getGuidesByLine","leftOffset","guide","visibleColumn","horizontalLine","bracketGuides","getBracketGuidesInRangeByLine","highlightActive","highlightActiveBracketPair","horizontalGuides","bracketPairsHorizontal","Enabled","EnabledForActive","Disabled","includeInactive","indentGuides","getLinesIndentGuides","activeIndentStartLineNumber","activeIndentEndLineNumber","activeIndentLevel","highlightActiveIndentation","activeIndentInfo","getActiveIndentGuide","indentSize","lineGuides","bracketGuidesInLine","bracketGuidesInLineQueue","indentGuidesInLine","indentLvl","indentGuide","peeked","transparentToUndefined","editorIndentGuidesColor","editorActiveIndentGuidesColor","colors","bracketColor","guideColor","guideColorActive","colorProvider","colorValues","effectiveGuideColor","effectiveGuideColorActive","level","getInlineClassNameOfLevel","activeClassName","LastRenderedData","_currentVisibleRange","getCurrentVisibleRange","setCurrentVisibleRange","currentVisibleRange","HorizontalRevealRangeRequest","startScrollTop","stopScrollTop","scrollType","minLineNumber","maxLineNumber","HorizontalRevealSelectionsRequest","ViewLines","_linesContent","_textRangeRestingSpot","_isViewportWrapping","isViewportWrapping","_revealHorizontalRightPadding","_horizontalScrollbarHeight","horizontalScrollbarHeight","_cursorSurroundingLines","_cursorSurroundingLinesStyle","_viewLineOptions","_maxLineWidth","_asyncUpdateLineWidths","_updateLineWidthsSlow","_asyncCheckMonospaceFontAssumptions","_checkMonospaceFontAssumptions","_lastRenderedData","_horizontalRevealRequest","_onOptionsMaybeChanged","newViewLineOptions","rendStartLineNumber","rendEndLineNumber","_computeScrollTopToRevealRange","getFutureViewport","verticalType","revealHorizontal","setMaxLineWidth","viewLineDomNode","_getViewLineDomNode","_getLineNumberFor","originalEndLineNumber","visibleRangesLen","domReadingContext","nextLineModelLineNumber","currentLineModelLineNumber","_visibleRangesForLineRange","updateLineWidths","_updateLineWidths","_updateLineWidthsFast","fast","localMaxLineWidth","allWidthsComputed","visibleLine","_ensureMaxLineWidth","longestLineNumber","longestWidth","horizontalRevealRequest","_computeScrollLeftToReveal","maxHorizontalOffset","iLineWidth","viewport","viewportStartY","viewportEndY","boxIsSingleRange","boxStartY","boxEndY","minScrollTop","boxMiddleY","_computeMinimumScrolling","viewportStartX","viewportEndX","boxStartX","boxEndX","HORIZONTAL_EXTRA_PX","viewportStart","viewportEnd","boxStart","boxEnd","revealAtStart","revealAtEnd","viewportLength","LinesDecorationsOverlay","_decorationsLeft","decorationsLeft","_decorationsWidth","decorationsWidth","linesDecorationsClassName","firstLineDecorationClassName","lineOutput","MarginViewLineDecorationsOverlay","marginClassName","RGBA8","_rgba8Brand","_clamp","Empty","MinimapTokensColorTracker","_updateColorMap","changedColorMap","colorMap","_colors","_backgroundIsLight","colorId","backgroundLuminosity","backgroundIsLight","allCharCodes","MinimapCharRenderer","charData","scale","_minimapCharRendererBrand","charDataNormal","soften","charDataLight","Uint8ClampedArray","renderChar","dx","dy","foregroundAlpha","backgroundAlpha","fontScale","useLighterFont","force1pxHeight","charWidth","charHeight","getCharIndex","destWidth","backgroundR","backgroundG","backgroundB","deltaR","deltaG","deltaB","destAlpha","sourceOffset","blockRenderChar","colorR","colorG","colorB","charTable","A","B","C","D","E","F","decodeData","prebakedMiniMaps","MinimapCharRendererFactory","lastCreated","lastFontFamily","createFromSampleData","createSampleData","canvas","fillStyle","textBaseline","fillText","getImageData","_downsample","_downsampleChar","destOffset","brightest","sourceY1","sourceY2","sourceX1","sourceX2","samples","sy","sourceRow","yBalance","sx","xBalance","final","pixelsPerCharacter","adjust","MinimapOptions","tokensColorTracker","minimapLayout","minimapOpts","renderMinimap","minimapHeightIsEditorHeight","scrollBeyondLastLine","showSlider","autohide","minimapLeft","minimapHeight","canvasInnerWidth","minimapCanvasInnerWidth","canvasInnerHeight","minimapCanvasInnerHeight","canvasOuterWidth","minimapCanvasOuterWidth","canvasOuterHeight","minimapCanvasOuterHeight","isSampling","minimapIsSampling","editorHeight","minimapScale","minimapLineHeight","minimapCharWidth","charRenderer","defaultBackgroundColor","_getMinimapBackground","_getMinimapForegroundOpacity","themeColor","MinimapLayout","sliderNeeded","sliderTop","sliderHeight","getDesiredScrollTopFromDelta","getDesiredScrollTopFromTouchLocation","viewportStartLineNumber","viewportEndLineNumber","viewportStartLineNumberVerticalOffset","viewportContainsWhitespaceGaps","realLineCount","previousLayout","minimapLinesFitting","logicalScrollHeight","maxMinimapSliderTop","maxLinesFitting","viewportLineCount","expectedViewportLineCount","extraLinesAtTheBottom","MinimapLine","INVALID","RenderData","renderedLayout","imageData","_imageData","_renderedLines","linesEquals","scrollEquals","MinimapBuffers","WIDTH","HEIGHT","_backgroundFillData","_createBackgroundFillData","_buffers","createImageData","_lastUsedBuffer","getBuffer","backgroundA","MinimapSamplingState","samplingRatio","minimapLines","oldSamplingState","minimapLineCount","computeContainedMinimapLineCount","halfRatio","oldMinimapLines","oldLength","oldIndex","oldDeltaLineCount","lastEvent","oldMinimapLineNumber","_oldIndex","selectedViewLineNumber","_i","modelLineToMinimapLine","modelLineRangeToMinimapLineRange","fromLineIndex","toLineIndex","sampledLineNumber","decorationLineRangeToMinimapLineRange","minimapLineStart","minimapLineEnd","deletedLineCount","changeStartIndex","changeEndIndex","insertedLineCount","Minimap","_minimapSelections","samplingState","_samplingState","_shouldCheckSampling","InnerMinimap","_recreateLineSampling","onDidChangeOptions","affectsMinimap","minimapLineRange","minimapCtx","whitespaceViewportData","wasSampling","getRealLineCount","getMinimapLinesRenderingData","needed","getSelections","getMinimapDecorationsInViewport","modelStartLineNumber","modelEndLineNumber","decoration","minimapStartLineNumber","minimapEndLineNumber","revealLineNumber","_renderDecorations","_gestureInProgress","_theme","_model","_lastRenderData","_selectionColor","_getMinimapDomNodeClassName","_shadow","_decorationsCanvas","_slider","_sliderHorizontal","_applyLayout","_pointerDownListener","initialPosY","_startSliderDragging","internalOffsetY","_sliderPointerMoveMonitor","_sliderPointerDownListener","_gestureDisposable","_sliderTouchStartListener","scrollDueToTouchEvent","_sliderTouchMoveListener","_sliderTouchEndListener","initialSliderState","initialPosX","handlePointerMove","class_","_getBuffer","renderingCtx","renderDecorations","characterWidth","canvasContext","clearRect","highlightedLines","ContiguousLineMap","_renderSelectionLineHighlights","_renderDecorationsLineHighlights","lineOffsetMap","_renderSelectionsHighlights","_renderDecorationsHighlights","y1","y2","yy1","yy2","fillRect","highlightColors","minimapOptions","Inline","decorationColor","highlightColor","renderDecorationOnLine","Gutter","renderDecoration","decorationRange","x1","getXOffsetForPosition","x2","lineIndexToXOffset","prevx","_lastData","_dirtyY1","_dirtyY2","lineInfo","defaultBackground","renderMinimapLineHeight","innerLinePadding","renderBackground","renderedLines","_renderLine","dirtyY1","dirtyHeight","putImageData","lastTargetData","lastStartLineNumber","lastLines","lastLinesLength","targetData","maxDestPixel","dirtyPixel1","dirtyPixel2","copySourceStart","copySourceEnd","copyDestStart","copyDestEnd","dest_dy","lastLineIndex","source_dy","sourceStart","sourceEnd","destStart","destEnd","subarray","colorTracker","minimapCharRenderer","maxDx","tabsCharDelta","tokenIndex","tokensLen","tokenEndIndex","getEndOffset","tokenColorId","getForeground","tokenColor","insertSpacesCount","_startLineNumber","_endLineNumber","_defaultValue","sliderBackground","sliderHoverBackground","sliderActiveBackground","shadow","ViewOverlayWidgets","_verticalScrollbarWidth","verticalScrollbarWidth","_minimapWidth","_editorHeight","_editorWidth","widgetData","_renderWidget","widgetHeight","Settings","overviewRulerLanes","renderBorder","hideCursor","cursorColor","minimapEnabled","minimapSide","getDefaultBackground","overviewRuler","domWidth","domHeight","canvasWidth","canvasHeight","_initLanes","canvasLeftOffset","laneCount","remainingWidth","leftWidth","rightWidth","centerWidth","centerOffset","DecorationsOverviewRuler","_updateSettings","_tokensColorTrackerListener","_cursorPositions","newSettings","_settings","affectsOverviewRuler","editorCtx","heightRatio","getAllOverviewRulerDecorations","minDecorationHeight","halfMinDecorationHeight","canvasCtx","decorationGroup","decorationGroupData","prevLane","prevY1","prevY2","lane","yCenter","cursorHeight","halfCursorHeight","cursorX","cursorW","beginPath","strokeStyle","lineTo","stroke","OverviewRuler","cssClassName","_zoneManager","setDOMWidth","setDOMHeight","setOuterHeight","setPixelRatio","getDOMWidth","getDOMHeight","getCanvasWidth","getCanvasHeight","setLayout","setZones","zones","getOuterHeight","colorZones","resolveColorZones","id2Color","getId2Color","_renderOneLane","currentColorId","currentFrom","currentTo","zone","zoneColorId","zoneFrom","zoneTo","Rulers","_renderedRulers","_rulers","_ensureRulersCount","currentCount","desiredCount","rulerWidth","addCount","ruler","rulerColor","ScrollDecorationViewPart","_updateWidth","_shouldShow","_useShadows","_updateShouldShow","newShouldShow","HorizontalRangeWithStyle","startStyle","endStyle","LineVisibleRangesWithStyle","toStyledRange","toStyled","SelectionsOverlay","_previousFrameVisibleRangesWithStyle","_roundedSelection","_visibleRangesHaveGaps","_enrichVisibleRangesWithStyle","previousFrame","epsilon","previousFrameTop","previousFrameBottom","topLineNumber","bottomLineNumber","curLineRange","curLeft","curRight","prevLeft","prevRight","nextLeft","nextRight","_getVisibleRangesWithStyle","_createSelectionPiece","_actualRenderOneSelection","output2","visibleRangesHaveStyle","fullLineHeight","reducedLineHeight","firstLineNumber","lastLineNumber","innerCornerOutput","restOfSelectionOutput","SELECTION_CLASS_NAME","ROUNDED_PIECE_WIDTH","EDITOR_BACKGROUND_CLASS_NAME","SELECTION_TOP_RIGHT","SELECTION_BOTTOM_RIGHT","SELECTION_TOP_LEFT","SELECTION_BOTTOM_LEFT","thisFrameVisibleRangesWithStyle","visibleRangesWithStyle","internalCorners","restOfSelection","editorSelectionColor","editorInactiveSelectionColor","editorSelectionForegroundColor","ViewCursorRenderData","textContentClassName","ViewCursor","_cursorStyle","_lineCursorWidth","_lastRenderedContent","onCursorPositionChanged","_getGraphemeAwarePosition","_prepareRender","nextGrapheme","LineThin","visibleRangeForCharacter","firstVisibleRangeForCharacter","Block","getClassName","Underline","UnderlineThin","ViewCursors","_readOnly","_cursorBlinking","_cursorSmoothCaretAnimation","_isComposingInput","_primaryCursor","_secondaryCursors","_updateDomClassName","_startCursorBlinkAnimation","_cursorFlatBlinkInterval","_blinkingEnabled","_editorHasFocus","_updateBlinking","_onCursorPositionChanged","secondaryPositions","addCnt","newCursor","nextSibling","positions","secondaryCursor","_getCursorBlinking","blinkingStyle","isHidden","isSolid","_show","BLINK_INTERVAL","_getClassName","BlockOutline","renderDataLen","primaryRenderData","secondaryRenderData","caret","caretBackground","invalidFunc","ViewZones","marginDomNode","_zones","_recomputeWhitespacesProps","whitespaces","getWhitespaces","oldWhitespaces","hadAChange","changeWhitespace","whitespaceAccessor","_computeWhitespaceProps","isInHiddenArea","oldWhitespace","afterViewLineNumber","heightInPx","changeOneWhitespace","_safeCallOnComputedHeight","_getZoneOrdinal","afterColumn","_heightInPixels","minWidthInPx","_minWidthInPixels","zoneAfterModelPosition","zoneBeforeModelPosition","validAfterLineNumber","afterColumnAffinity","isVisible","changeViewZones","zonesHaveChanged","changeAccessor","addZone","_addZone","removeZone","_removeZone","layoutZone","_layoutZone","arg1","safeInvoke1Arg","myZone","whitespaceId","insertWhitespace","removeWhitespace","heightInLines","onComputedHeight","_safeCallOnDomNodeTop","onDomNodeTop","visibleWhitespaces","visibleZones","hasVisibleZone","visibleWhitespace","newTop","newHeight","newDisplay","EditorTheme","ViewContext","eventHandler","addViewEventHandler","removeViewEventHandler","ViewportData","partialData","getViewportViewLineRenderingData","BlockDecorations","blocks","newContentWidth","blockClassName","block","View","colorTheme","overflowWidgetsDomNode","_renderAnimationFrame","_viewParts","_textAreaHandler","_createTextAreaHandlerHelper","_getEditorClassName","_overflowGuardContainer","_scrollbar","_viewZones","decorationsOverviewRuler","scrollDecoration","contentViewOverlays","marginViewOverlays","_contentWidgets","_viewCursors","_overlayWidgets","rulers","blockOutline","overviewRulerData","_pointerHandler","_createPointerHandlerHelper","_flushAccumulatedAndRenderNow","_renderNow","focused","_scheduleRender","viewPart","_onRenderScheduled","safeInvokeNoArg","_actualRender","_getViewPartsToRender","viewPartsToRender","partialViewportData","getLinesViewportData","setViewport","centeredLineNumber","getWhitespaceViewportData","renderingContext","restoreState","tokenizeViewport","getOffsetForColumn","modelColumn","mouseTarget","createOverviewRuler","everything","addContentWidget","layoutContentWidget","newRange","newPreference","positionAffinity","removeContentWidget","addOverlayWidget","layoutOverlayWidget","removeOverlayWidget","Cursor","_selTrackedRange","_trackSelection","_removeTrackedRange","startTrackingSelection","_updateTrackedRange","stopTrackingSelection","_setTrackedRange","asCursorState","readSelectionFromMarkers","_getTrackedRange","fromRange","getDirection","ensureValidState","setState","_validatePositionWithCache","cacheInput","cacheOutput","_validateViewState","sStartPosition","sEndPosition","validPosition","validSStartPosition","validSEndPosition","selectionStartLeftoverVisibleColumns","leftoverVisibleColumns","equalsRange","viewSelectionStart","validateViewRange","viewSelectionStart1","viewSelectionStart2","CursorCollection","startTrackingSelections","stopTrackingSelections","updateContext","getViewPositions","getTopMostViewPosition","getBottomMostViewPosition","getViewSelections","setSelections","setStates","fromModelSelections","getPrimaryCursor","_setSecondaryStates","secondaryStates","secondaryCursorsLength","secondaryStatesLength","createCnt","_addSecondaryCursor","_removeSecondaryCursor","killSecondaryCursors","sortedCursors","sortedCursorIndex","currentSelection","nextSelection","multiCursorMergeOverlapping","shouldMergeCursors","isBeforeOrEqual","winnerSortedCursorIndex","looserSortedCursorIndex","looserIndex","winnerIndex","looserSelection","winnerSelection","equalsSelection","resultingRange","looserSelectionIsLTR","winnerSelectionIsLTR","resultingSelectionIsLTR","resultingSelection","resultingState","sortedCursor","CursorContext","_cursorContextBrand","ViewCompositionStartEvent","ViewCompositionEndEvent","ViewConfigurationChangedEvent","ViewCursorStateChangedEvent","ViewDecorationsChangedEvent","ViewFlushedEvent","ViewFocusChangedEvent","ViewLanguageConfigurationEvent","ViewLineMappingChangedEvent","ViewLinesChangedEvent","ViewLinesDeletedEvent","ViewLinesInsertedEvent","ViewRevealRangeRequestEvent","ViewScrollChangedEvent","ViewThemeChangedEvent","ViewTokensChangedEvent","ViewTokensColorsChangedEvent","ViewZonesChangedEvent","ViewModelEventDispatcher","_onEvent","onEvent","_eventHandlers","_viewEventQueue","_isConsumingViewEventQueue","_collector","_collectorCnt","_outgoingEvents","emitOutgoingEvent","_addOutgoingEvent","_emitOutgoingEvents","mergeResult","attemptToMerge","isNoOp","beginEmitViewEvents","ViewModelEventsCollector","endEmitViewEvents","outgoingEvents","viewEvents","outgoingEvent","_emitMany","emitSingleViewEvent","emitViewEvent","_consumeViewEventQueue","_doConsumeQueue","eventHandlers","ContentSizeChangedEvent","oldContentWidth","oldContentHeight","_oldContentWidth","_oldContentHeight","contentWidthChanged","contentHeightChanged","FocusChangedEvent","oldHasFocus","ScrollChangedEvent","_oldScrollWidth","_oldScrollLeft","_oldScrollHeight","_oldScrollTop","HiddenAreasChangedEvent","CursorStateChangedEvent","oldSelections","oldModelVersionId","modelVersionId","reachedMaxCursorCount","_selectionsAreEqual","ReadOnlyEditAttemptEvent","ModelDecorationsChangedEvent","ModelLanguageChangedEvent","ModelLanguageConfigurationChangedEvent","ModelContentChangedEvent","ModelOptionsChangedEvent","ModelTokensChangedEvent","CursorsController","_knownModelVersionId","getVersionId","_viewModel","_cursors","_isHandling","_compositionState","_columnSelectData","_autoClosedActions","_prevEditOperationType","updateConfiguration","eventsCollector","_validateAutoClosedActions","autoClosedAction","isValid","MAX_CURSOR_COUNT","CursorModelState","_emitStateChangedIfNecessary","columnSelectData","revealPrimary","viewPositions","revealViewRange","revealViewSelections","saveState","desiredSelections","onModelContentChanged","rawContentChangedEvent","hadFlushEvent","containsEvent","cursorState","isUndoing","isRedoing","selectionsFromMarkers","primaryCursor","_pushAutoClosedAction","autoClosedCharactersRanges","autoClosedEnclosingRanges","autoClosedCharactersDeltaDecorations","autoClosedEnclosingDeltaDecorations","inlineClassName","stickiness","autoClosedCharactersDecorations","deltaDecorations","autoClosedEnclosingDecorations","AutoClosedAction","_executeEditOperation","opResult","CommandExecutor","_interpretCommandResult","enclosingRange","closeCharacterRange","shouldPushStackElementAfter","viewSelections","newCursorState","_findAutoClosingPairs","indices","closeChar","autoClosingPairsCandidates","autoClosingPairsCloseSingleChar","openChar","closeCharIndex","openCharIndex","executeEdits","cursorStateComputer","autoClosingIndices","_isTracked","pushEditOperations","undoEdits","openCharInnerIndex","closeCharInnerIndex","undoEdit","_executeEdit","cursorChangeReason","readOnly","getAutoClosedCharacters","getAllAutoClosedCharacters","CompositionState","compositionOutcome","deduceOutcome","compositionEndWithInterceptors","charLength","typeWithInterceptors","typeWithoutInterceptors","newSelections","executeCommand","_autoClosedCharactersDecorations","_autoClosedEnclosingDecorations","autoClosedActions","autoClosedCharacters","getAutoClosedCharactersRanges","getDecorationRange","enclosingRanges","strictContainsRange","selectionsBefore","trackedRanges","trackedRangesDirection","_innerExecuteCommands","_arrayIsEmpty","commandsData","_getEditOperations","operations","rawOperations","loserCursorsMap","_getLoserCursorMap","filteredOperations","major","hadTrackedEditOperation","selectionsAfter","inverseEditOperations","groupedInverseEditOperations","op","minorBasedSorter","minor","cursorSelections","computeCursorState","getInverseEditOperations","getTrackedSelection","losingCursors","losingCursorIndex","losingCursor","_getEditOperationsFromCommand","majorIdentifier","operationMinor","addEditOperation","forceMoveMarkers","isAutoWhitespaceEdit","insertsAutoWhitespace","editOperationBuilder","addTrackedEditOperation","trackSelection","_selection","trackPreviousOnEmpty","liftSelection","getEditOperations","compareRangesUsingEnds","previousOp","currentOp","loserMajor","CompositionLineState","startSelection","endSelection","textModel","_original","_capture","_deduceOutcome","commonPrefix","commonSuffix","deletedText","insertedText","PendingChanges","_hasPending","_inserts","_changes","_removes","insert","mustCommit","commit","linesLayout","inserts","removes","_commitPendingChanges","EditorWhitespace","ordinal","minWidth","prefixSum","LinesLayout","paddingTop","paddingBottom","INSTANCE_COUNT","_pendingChanges","_lastWhitespaceId","_arr","_prefixSumValidIndex","_minWidth","_lineCount","_paddingTop","_paddingBottom","findInsertionIndex","_checkPendingChanges","setPadding","newAfterLineNumber","_insertWhitespace","_changeOneWhitespace","_findWhitespaceIndex","_removeWhitespace","toRemove","toChange","applyRemoveAndChange","getWhitespacesTotalHeight","getWhitespacesAccumulatedHeight","getLinesTotalHeight","getWhitespaceAccumulatedHeightBeforeLineNumber","lastWhitespaceBeforeLineNumber","_findLastWhitespaceBeforeLineNumber","_findFirstWhitespaceAfterLineNumber","firstWhitespaceAfterLineNumber","getFirstWhitespaceIndexAfterLineNumber","includeViewZones","previousLinesHeight","getVerticalOffsetAfterLineNumber","getWhitespaceMinWidth","getLineNumberAtOrAfterVerticalOffset","midLineNumber","midLineNumberVerticalOffset","verticalOffset1","verticalOffset2","startLineNumberVerticalOffset","whitespaceIndex","whitespaceCount","getWhitespacesCount","currentWhitespaceHeight","currentWhitespaceAfterLineNumber","getAfterLineNumberForWhitespaceIndex","getHeightForWhitespaceIndex","currentVerticalOffset","currentLineRelativeOffset","STEP_SIZE","linesOffsets","verticalCenter","endLineNumberVerticalOffset","completelyVisibleStartLineNumber","completelyVisibleEndLineNumber","getVerticalOffsetForWhitespaceIndex","previousWhitespacesHeight","getWhitespaceIndexAtOrAfterVerticallOffset","minWhitespaceIndex","maxWhitespaceIndex","midWhitespaceIndex","midWhitespaceVerticalOffset","candidateIndex","candidateTop","candidateHeight","getIdForWhitespaceIndex","EditorScrollDimensions","EditorScrollable","_onDidContentSizeChange","onDidContentSizeChange","_dimensions","oldDimensions","ViewLayout","_linesLayout","_configureSmoothScrollDuration","_updateHeight","onHeightMaybeChanged","_getContentHeight","_getHorizontalScrollbarHeight","currentScrollPosition","_computeContentWidth","maxLineWidth","extraHorizontalSpace","whitespaceMinWidth","firstLineNumberInViewport","scrollTopWithoutViewZones","visibleBox","getLinesViewportDataAtScrollTop","createModelLineProjection","lineBreakData","IdentityModelLineProjection","HiddenModelLineProjection","ModelLineProjection","_projectionData","getProjectionData","getViewLineCount","getOutputLineCount","getViewLineContent","outputLineIndex","_assertVisible","startOffsetInInputWithInjections","breakOffsets","endOffsetInInputWithInjections","injectionOffsets","injectedTexts","injectionOptions","applyInjectedText","spaces","wrappedTextIndentLength","getViewLineLength","getViewLineMinColumn","_modelLineNumber","getMinOutputOffset","getViewLineMaxColumn","getMaxOutputOffset","getViewLinesData","outputLineIdx","globalStartIndex","lineWithInjections","inlineDecorationsPerOutputLine","totalInjectedTextLengthBefore","currentInjectedOffset","lineStartOffsetInInputWithInjections","lineEndOffsetInInputWithInjections","injectedTextStartOffsetInInputWithInjections","injectedTextEndOffsetInInputWithInjections","inlineClassNameAffectsLetterSpacing","tokenization","getLineTokens","withInserted","tokenMetadata","defaultTokenMetadata","globalIndex","_getViewLineData","deltaStartIndex","sliceAndInflate","breakOffsetsVisibleColumn","getModelColumnOfViewPosition","outputColumn","translateToInputOffset","getViewPositionOfModelPosition","deltaLineNumber","inputColumn","translateToOutputPosition","toPosition","getViewLineNumberOfModelPosition","outputPosition","baseViewLineNumber","normalizeOutputPosition","getInjectedText","_outputLineIndex","inflate","_fromOuputLineIndex","_toOutputLineIndex","_inputColumn","_outputColumn","_globalStartIndex","_needed","_result","_deltaLineNumber","_spaces","_makeSpaces","ViewModelLinesFromProjectedModel","editorId","domLineBreaksComputerFactory","monospaceLineBreaksComputerFactory","wrappingStrategy","wrappingIndent","_editorId","_validModelVersionId","_domLineBreaksComputerFactory","_monospaceLineBreaksComputerFactory","_constructLines","hiddenAreasDecorationIds","createCoordinatesConverter","CoordinatesConverter","resetHiddenAreas","previousLineBreaks","modelLineProjections","getLinesContent","injectedTextDecorations","getInjectedTextDecorations","lineBreaksComputer","createLineBreaksComputer","injectedTextQueue","fromDecorations","lineInjectedText","addRequest","linesBreaks","finalize","hiddenAreas","areaId","hiddenAreaStart","hiddenAreaEnd","hiddenAreaIdx","nextLineNumberToUpdateHiddenArea","projectedModelLineLineCounts","getHiddenAreas","decId","setHiddenAreas","_ranges","newRanges","sortedRanges","currentRangeStart","currentRangeEnd","normalizeLineRanges","oldRanges","hasDifference","newDecorations","hasVisibleLine","lineChanged","newOutputLineCount","_modelColumn","getModelLineViewLineCount","setTabSize","newTabSize","setWrappingSettings","equalFontInfo","equalWrappingStrategy","equalWrappingColumn","equalWrappingIndent","onlyWrappingColumnChanged","onModelFlushed","onModelLinesDeleted","outputFromLineNumber","getPrefixSum","outputToLineNumber","removeValues","onModelLinesInserted","_toLineNumber","lineBreaks","totalOutputLineCount","insertLines","insertPrefixSumValues","outputLineCount","insertValues","onModelLineChanged","oldOutputLineCount","lineMappingChanged","changeFrom","changeTo","insertFrom","insertTo","deleteFrom","deleteTo","acceptVersionId","getTotalSum","_toValidViewLineNumber","modelMinPosition","modelMaxPosition","guides","viewStartPosition","viewEndPosition","getViewLineInfo","getIndexOf","remainder","ViewLineInfo","getMinColumnOfViewLine","viewLineInfo","modelLineWrappedLineIdx","getMaxColumnOfViewLine","getModelStartPositionOfViewLine","minViewColumn","getModelEndPositionOfViewLine","maxViewColumn","getViewLineInfosGroupedByModelRanges","viewStartLineNumber","viewEndLineNumber","startViewLine","endViewLine","lastVisibleModelPos","curModelLine","lastVisibleModelPos2","modelRange","ViewLineInfoGroupedByModelRange","getViewLinesBracketGuides","activeViewPosition","modelActivePosition","resultPerViewLine","modelRangeStartLineNumber","bracketGuidesPerModelLine","getLinesBracketGuides","forWrappedLinesAfterColumn","forWrappedLinesBeforeOrAtColumn","getViewLinesIndentGuides","modelStart","modelEnd","resultRepeatCount","resultRepeatOption","modelStartLineIndex","modelEndLineIndex","reqStart","modelLineIndex","viewLineStartIndex","viewLineEndIndex","viewIndents","currIndex","blockAtIndex","startModelLineIndex","startRemainder","fromViewLineIndex","remainingViewLineCount","viewColumn","expectedModelPosition","computedModelColumn","expectedModelRange","validViewStart","validViewEnd","inputLineNumber","lineIndexChanged","getDecorationsInRange","ownerId","filterOutValidation","finalResult","finalResultLen","prevDecId","dec","getLineIndentColumn","ViewModelLinesFromModelAsIs","IdentityCoordinatesConverter","_newTabSize","_wrappingStrategy","_wrappingColumn","_wrappingIndent","lineText","previousLineBreakData","_versionId","_minLineNumber","_maxLineNumber","activePosition","_validPosition","_validRange","_viewPosition","ViewModel","languageConfigurationService","_themeService","_eventDispatcher","getLanguageId","_tokenizeViewportSoon","_updateConfigurationViewLineCount","_updateConfigurationViewLineCountNow","_viewportStart","ViewportStart","isTooLargeForTokenization","_cursor","invalidate","_registerModelEvents","_onConfigurationChanged","onDidColorThemeChange","_invalidateDecorationsColorCache","linesViewportData","viewVisibleRange","modelVisibleRanges","_toModelVisibleRanges","modelVisibleRange","previousViewportStartModelPosition","previousViewportStartViewPosition","restorePreviousViewportStart","viewPositionTop","startLineDelta","shouldRecreate","onDidChangeContentOrInjectedText","hadOtherModelChange","hadModelLineChangeThatChangedLineMapping","textModelEvents","changeType","lineIdx","lineBreakQueue","linesDeletedEvent","insertedLineBreaks","linesInsertedEvent","changedLineBreakData","linesChangedEvent","viewportStartWasValid","getAttachedEditorCount","modelTrackedRange","contentChangedEvent","onDidChangeTokens","viewRanges","tokenizationSupportChanged","onDidChangeLanguageConfiguration","onDidChangeLanguage","onDidChangeDecorations","onModelDecorationsChanged","getVisibleRangesPlusViewportAboveBelow","linesAround","startViewLineNumber","endViewLineNumber","hiddenStartLineNumber","hiddenEndLineNumber","compatViewState","firstViewLineNumber","firstPosition","firstPositionDeltaTop","reduceRestoreState","_reduceRestoreStateCompatibility","getTabSize","getLineFirstNonWhitespaceColumn","getLineLastNonWhitespaceColumn","getDecorationsViewportData","_getViewLineRenderingData","getInlineDecorationsOnLine","mightContainRTL","mightContainNonBasicASCII","toInlineDecoration","getOverviewRulerDecorations","OverviewRulerDecorations","decorationOptions","opts1","invalidateCachedColor","opts2","modelAnchor","getOffsetAt","getPositionAt","modelRanges","forceCRLF","hasEmptyRange","hasNonEmptyRange","modelLineNumbers","prevModelLineNumber","_getColorMap","_getHTMLToCopy","_withViewEventsCollector","saveCursorState","restoreCursorState","_executeCursorEdit","_viewLineNumber","_isValid","_modelTrackedRange","_startLineDelta","viewportStartLineTrackedRange","viewportStartLineTop","_asMap","prevGroup","prevData","prevEndLineNumber","ModelLineProjectionData","lineLength","outputOffset","offsetInInput","inputOffset","inputOffsetInInputWithInjection","offsetInInputWithInjectionsToOutputPosition","offsetInInputWithInjections","midStart","midStop","OutputPosition","outputPositionToOffsetInInputWithInjections","normalizedOffsetInUnwrappedLine","normalizeOffsetInInputWithInjectionsAroundInjections","getInjectedTextAtOffset","hasRightCursorStop","injectedTextIndex","cursorStops","hasLeftCursorStop","cursorStop","Right","Both","Left","baseLineNumber","MonospaceLineBreaksComputerFactory","breakBeforeChars","breakAfterChars","WrappingCharacterClassifier","previousBreakingData","columnsForFullWidthChar","createLineBreaks","createLineBreaksFromPreviousLineBreaks","arrPool1","arrPool2","BREAK_BEFORE","BREAK_AFTER","_asciiMap","firstLineBreakColumn","prevBreakingOffsets","prevBreakingOffsetsVisibleColumn","computeWrappedTextIndentLength","wrappedLineBreakColumn","breakingOffsets","breakingOffsetsVisibleColumn","breakingOffsetsCount","lastBreakingOffset","lastBreakingOffsetVisibleColumn","breakingColumn","prevLen","prevIndex","bestDistance","prevBreakOffset","prevBreakOffsetVisibleColumn","breakOffset","breakOffsetVisibleColumn","forcedBreakOffset","forcedBreakOffsetVisibleColumn","prevCharCodeClass","entireLineFits","charStartOffset","charCodeClass","computeCharWidth","canBreak","hitATabCharacter","prevCharWidth","remainingWidthOfNextLine","charCodeAtForcedBreakOffset","_lineText","tabCharacterWidth","numberOfAdditionalTabs","ttPolicy","DOMLineBreaksComputerFactory","injectedTextsPerLine","createEmptyLineBreakWithPossiblyInjectedText","requestIdx","overallWidth","additionalIndent","additionalIndentSize","additionalIndentLength","containerDomNode","firstNonWhitespaceIndices","wrappedTextIndentLengths","renderLineContents","allCharOffsets","allVisibleColumns","indentWidth","renderLineContent","trustedhtml","lineDomNodes","readLineBreaks","visibleColumns","curInjectedTexts","initialVisibleColumn","wrappingIndentLength","hangingOffset","charOffset","charOffsets","producedCharacters","write1","appendASCII","spans","discoverBreaks","lowRects","highRects","midRects","EDITOR_ID","ModelData","hasRealView","listenersToRemove","onBeforeDetached","CodeEditorWidget","codeEditorWidgetOptions","instantiationService","commandService","contextKeyService","themeService","notificationService","accessibilityService","languageFeaturesService","_onDidChangeModelContent","onDidChangeModelContent","_onDidChangeModelLanguage","onDidChangeModelLanguage","_onDidChangeModelLanguageConfiguration","onDidChangeModelLanguageConfiguration","_onDidChangeModelOptions","onDidChangeModelOptions","_onDidChangeModelDecorations","onDidChangeModelDecorations","_onDidChangeModelTokens","onDidChangeModelTokens","_onDidChangeConfiguration","onDidChangeConfiguration","_onDidChangeModel","onDidChangeModel","_onDidChangeCursorPosition","onDidChangeCursorPosition","_onDidChangeCursorSelection","onDidChangeCursorSelection","_onDidAttemptReadOnlyEdit","onDidAttemptReadOnlyEdit","_onDidLayoutChange","onDidLayoutChange","_editorTextFocus","BooleanEventEmitter","onDidFocusEditorText","onDidChangeToTrue","onDidBlurEditorText","onDidChangeToFalse","_editorWidgetFocus","onDidFocusEditorWidget","onDidBlurEditorWidget","_onWillType","onWillType","_onDidType","onDidType","_onDidCompositionStart","onDidCompositionStart","_onDidCompositionEnd","onDidCompositionEnd","_onDidPaste","onDidPaste","_onMouseDrag","_onMouseDrop","_onMouseDropCanceled","_onDropIntoEditor","onDropIntoEditor","_onDidScrollChange","onDidScrollChange","_onDidChangeViewZones","onDidChangeViewZones","_onDidChangeHiddenAreas","onDidChangeHiddenAreas","_bannerDomNode","_dropIntoEditorDecorations","createDecorationsCollection","_domElement","_overflowWidgetsDomNode","_decorationTypeKeysToIds","_decorationTypeSubtypes","_telemetryData","telemetryData","_createConfiguration","_contextKeyService","createScoped","_notificationService","_codeEditorService","_commandService","EditorContextKeysManager","EditorModeContext","_instantiationService","createChild","_modelData","_focusTracker","CodeEditorWidgetFocusTracker","createInstance","internalAction","isDropIntoEnabled","showDropIndicatorAt","removeDropIndicator","addCodeEditor","editorCommon","removeCodeEditor","contributionId","_removeDecorationTypes","_postDetachModelCleanup","_detachModel","getOverflowWidgetsDomNode","getConfiguredWordAtPosition","getWordAtPosition","preserveBOM","eolPreference","lineEnding","setModel","detachedModel","_attachModel","oldModelUrl","newModelUrl","decorationType","subTypes","subType","_removeDecorationType","_getVerticalOffsetAfterPosition","modelData","_getVerticalOffsetForPosition","getBottomForLineNumber","getVisibleColumnFromPosition","rawPosition","_sendRevealRange","isIRange","validatedModelRange","revealLine","_revealLine","revealLineInCenter","revealLineInCenterIfOutsideViewport","revealLineNearTop","revealType","revealPosition","_revealPosition","revealPositionInCenter","revealPositionInCenterIfOutsideViewport","revealPositionNearTop","something","isSelection","isISelection","isRange","_setSelectionImpl","sel","revealLines","_revealLines","revealLinesInCenter","revealLinesInCenterIfOutsideViewport","revealLinesNearTop","revealVerticalInCenter","_revealRange","revealRangeInCenter","revealRangeInCenterIfOutsideViewport","revealRangeNearTop","revealRangeNearTopIfOutsideViewport","revealRangeAtTop","getScrollLeft","setScrollLeft","saveViewState","contributionsState","restoreViewState","codeEditorState","reducedState","getContribution","getActions","getSupportedActions","payload","_startComposition","_endComposition","_compositionType","replaceCharCnt","_paste","_cut","_triggerEditorCommand","_triggerCommand","popUndoStop","popStackElement","endCursorState","EditorDecorationsCollection","changeDecorations","getLineDecorations","oldDecorations","removeDecorations","decorationIds","removeDecorationsByType","decorationTypeKey","oldDecorationsIds","getLayoutInfo","hasWidgetFocus","getScrolledVisiblePosition","forceRedraw","setBanner","domNodeHeight","onBeforeAttached","onWillDispose","secondarySelections","_createView","viewUserInputEvents","getColorTheme","removeAllDecorationsWithOwnerId","removeDomNode","removeDecorationType","dropIntoEditorDecorationOptions","_emitterOptions","_onDidChangeToTrue","_onDidChangeToFalse","createKey","_editorSimpleInput","editorSimpleInput","bindTo","_editorFocus","_textInputFocus","_editorTabMovesFocus","tabMovesFocus","_editorReadonly","_inDiffEditor","inDiffEditor","_editorColumnSelection","_hasMultipleSelections","_hasNonEmptySelection","_canUndo","canUndo","_canRedo","canRedo","_updateFromConfig","_updateFromSelection","_updateFromFocus","_updateFromModel","_languageFeaturesService","_langId","_hasCompletionItemProvider","hasCompletionItemProvider","_hasCodeActionsProvider","hasCodeActionsProvider","_hasCodeLensProvider","hasCodeLensProvider","_hasDefinitionProvider","hasDefinitionProvider","_hasDeclarationProvider","hasDeclarationProvider","_hasImplementationProvider","hasImplementationProvider","_hasTypeDefinitionProvider","hasTypeDefinitionProvider","_hasHoverProvider","hasHoverProvider","_hasDocumentHighlightProvider","hasDocumentHighlightProvider","_hasDocumentSymbolProvider","hasDocumentSymbolProvider","_hasReferenceProvider","hasReferenceProvider","_hasRenameProvider","hasRenameProvider","_hasSignatureHelpProvider","hasSignatureHelpProvider","_hasInlayHintsProvider","hasInlayHintsProvider","_hasDocumentFormattingProvider","hasDocumentFormattingProvider","_hasDocumentSelectionFormattingProvider","hasDocumentSelectionFormattingProvider","_hasMultipleDocumentFormattingProvider","hasMultipleDocumentFormattingProvider","_hasMultipleDocumentSelectionFormattingProvider","hasMultipleDocumentSelectionFormattingProvider","_isInWalkThrough","isInWalkThroughSnippet","_update","completionProvider","codeActionProvider","codeLensProvider","definitionProvider","declarationProvider","implementationProvider","typeDefinitionProvider","hoverProvider","documentHighlightProvider","documentSymbolProvider","referenceProvider","renameProvider","documentFormattingEditProvider","documentRangeFormattingEditProvider","signatureHelpProvider","inlayHintsProvider","bufferChangeEvents","_domFocusTracker","_decorationIds","_isChangingDecorations","getRange","getRanges","decorationId","squigglyStart","squigglyEnd","getSquigglySVGData","dotdotdotStart","dotdotdotEnd","errorBorderColor","errorForeground","errorBackground","warningBorderColor","warningForeground","warningBackground","infoBorderColor","infoForeground","infoBackground","hintBorderColor","hintForeground","getDotDotDotSVGData","unnecessaryForeground","unnecessaryBorder","deprecatedForeground","__param","EmbeddedCodeEditorWidget","parentEditor","_parentEditor","_overwriteOptions","_onParentConfigurationChanged","getParentEditor","ReplaceCommand","_text","builder","helper","srcRange","ReplaceCommandThatSelectsText","ReplaceCommandWithoutChangingPosition","ReplaceCommandWithOffsetCursorState","lineNumberDeltaOffset","columnDeltaOffset","_columnDeltaOffset","_lineNumberDeltaOffset","ReplaceCommandThatPreservesSelection","editRange","initialSelection","_initialSelection","_forceMoveMarkers","_selectionId","repeatCache","cachedStringRepeat","ShiftCommand","_languageConfigurationService","_useLastEditRangeForCursorEndPosition","_selectionStartColumnStaysPut","unshiftIndent","insertSpaces","contentStartVisibleColumn","prevIndentTabStop","prevRenderTabStop","shiftIndent","nextIndentTabStop","nextRenderTabStop","_addEditOperation","startLine","endLine","shouldIndentEmptyLines","useTabStops","previousLineExtraSpaces","extraSpaces","desiredIndent","indentationEndIndex","isUnshift","isCheapToTokenize","enterAction","autoIndent","removeText","oneIndent","lastOp","initialStartColumn","editorConfigurationBaseNode","scope","editorConfiguration","minimum","markdownDescription","detectIndentation","trimAutoWhitespace","largeFileOptimizations","enumDescriptions","markdownEnumDescriptions","anyOf","cachedEditorConfigurationKeys","getEditorConfigurationKeys","isEditorConfigurationKey","isDiffEditorConfigurationKey","Configuration","registerConfiguration","MINIMAP_GUTTER_WIDTH","ConfigurationChangedEvent","ComputeOptionsMemory","stableMinimapLayoutInput","stableFitMaxMinimapScale","stableFitRemainingWidth","BaseEditorOption","ApplyUpdateResult","arrayEquals","ComputedEditorOption","SimpleEditorOption","boolean","EditorBooleanOption","clampedInt","maximum","EditorIntOption","EditorFloatOption","validationFn","float","EditorStringOption","stringSet","allowedValues","EditorStringEnumOption","_allowedValues","EditorEnumOption","defaultStringValue","_convert","TextEditorCursorStyle","EditorFontLigatures","ON","EditorFontWeight","EDITOR_FONT_DEFAULTS","MINIMUM_VALUE","MAXIMUM_VALUE","errorMessage","SUGGESTION_VALUES","EditorLayoutInfoComputer","computeLayout","typicalViewportLineCount","extraLinesBeyondLastLine","desiredRatio","_computeMinimapLayout","couldUseMemory","renderCharacters","minimapRenderCharacters","minimapMaxColumn","minimapSize","baseCharHeight","minimapWidthMultiplier","fitBecomesFill","maxMinimapScale","effectiveMinimapHeight","configuredMinimapScale","minimapMaxWidth","wordWrapOverride2","wordWrapOverride1","wordWrapColumn","showGlyphMargin","showLineNumbers","lineNumbersMinChars","verticalScrollbarHasArrows","scrollbarArrowSize","rawLineDecorationsWidth","showFoldingDecoration","lineDecorationsWidth","multiple","isWordWrapMinified","viewportColumn","verticalArrowSize","filterValidationDecorations","renderValidationDecorations","_scrollbarVisibilityFromString","inUntrustedWorkspace","unicodeHighlightConfigKeys","allowedCharacters","invisibleCharacters","nonBasicASCII","ambiguousCharacters","includeComments","includeStrings","allowedLocales","primitiveSet","editorOptionsRegistry","EditorOptions","acceptSuggestionOnCommitCharacter","acceptSuggestionOnEnter","autoClosingBrackets","autoClosingDelete","autoClosingOvertype","autoClosingQuotes","automaticLayout","autoSurround","bracketPairColorization","defaults","bracketPairColorizationOptions","independentColorPoolPerBracketType","_input","bracketPairGuides","codeLens","codeLensFontFamily","codeLensFontSize","colorDecorators","insertSpace","ignoreEmptyLines","contextmenu","copyWithSyntaxHighlighting","cursorBlinking","cursorBlinkingStyle","cursorSmoothCaretAnimation","cursorStyle","cursorSurroundingLines","cursorSurroundingLinesStyle","cursorWidth","disableLayerHinting","disableMonospaceOptimizations","domReadOnly","dragAndDrop","dropIntoEditor","experimental","stickyScroll","cursorMoveOnType","seedSearchStringFromSelection","autoFindInSelection","globalFindClipboard","addExtraSpaceOnTop","included","fixedOverflowWidgets","foldingStrategy","foldingHighlight","foldingImportsByDefault","foldingMaximumRegions","unfoldOnClickAfterEndOfLine","fontLigatures2","formatOnPaste","formatOnType","glyphMargin","gotoLocation","multipleDefinitions","multipleTypeDefinitions","multipleDeclarations","multipleImplementations","multipleReferences","alternativeDefinitionCommand","alternativeTypeDefinitionCommand","alternativeDeclarationCommand","alternativeImplementationCommand","alternativeReferenceCommand","jsonSubset","alternativeCommandOptions","deprecationMessage","hideCursorInOverviewRuler","hover","above","linkedEditing","links","matchBrackets","mouseStyle","mouseWheelZoom","multiCursorModifier","multiCursorPaste","occurrencesHighlight","overviewRulerBorder","parameterHints","cycle","peekWidgetDefaultFocus","definitionLinkOpensInPeek","quickSuggestions","additionalProperties","validatedOther","validatedComments","validatedStrings","quickSuggestionsDelay","renameOnType","markdownDeprecationMessage","restricted","renderFinalNewline","renderLineHighlight","renderLineHighlightOnlyWhenFocus","revealHorizontalRightPadding","roundedSelection","columnSchema","scrollBeyondLastColumn","selectionClipboard","selectionHighlight","showFoldingControls","showUnused","showDeprecated","inlayHints","snippetSuggestions","smartSelect","selectLeadingAndTrailingWhitespace","suggest","insertMode","filterGraceful","snippetsPreventQuickSuggestions","localityBonus","shareSuggestSelections","showIcons","showStatusBar","previewMode","showInlineDetails","showMethods","showFunctions","showConstructors","showFields","showVariables","showClasses","showStructs","showInterfaces","showModules","showProperties","showEvents","showOperators","showUnits","showValues","showConstants","showEnums","showEnumMembers","showKeywords","showWords","showColors","showFiles","showReferences","showFolders","showTypeParameters","showSnippets","showUsers","showIssues","inlineSuggest","suggestFontSize","suggestLineHeight","suggestOnTriggerCharacters","suggestSelection","tabCompletion","unicodeHighlight","_os","_vscode","validateBooleanMap","unusualLineTerminators","useShadowDOM","wordWrapBreakAfterCharacters","wordWrapBreakBeforeCharacters","editorClassName","EditorZoom","_zoomLevel","_onDidChangeZoomLevel","GOLDEN_LINE_HEIGHT_RATIO","BareFontInfo","_bareFontInfoBrand","ignoreEditorZoom","editorZoomLevelMultiplier","fallbackFontFamily","_wrapInQuotes","FontInfo","_editorStylingBrand","CharacterClassifier","_createAsciiMap","asciiMap","CharacterSet","CursorColumns","_nextVisibleColumn","textLen","lineContentLength","beforeVisibleColumn","beforeColumn","afterVisibleColumn","EditOperation","replaceMove","editorLineHighlight","dark","light","hcDark","hcLight","editorLineHighlightBorder","editorRangeHighlight","editorRangeHighlightBorder","editorSymbolHighlight","editorSymbolHighlightBorder","editorCursorForeground","editorCursorBackground","editorWhitespaces","editorIndentGuides","editorActiveIndentGuides","editorLineNumbers","deprecatedEditorActiveLineNumber","editorActiveLineNumber","editorRuler","editorBracketMatchBackground","editorBracketMatchBorder","editorOverviewRulerBorder","editorOverviewRulerBackground","editorGutter","editorUnnecessaryCodeBorder","editorUnnecessaryCodeOpacity","ghostTextBorder","ghostTextForeground","ghostTextBackground","rulerRangeDefault","overviewRulerRangeHighlight","overviewRulerError","overviewRulerWarning","overviewRulerInfo","editorBracketHighlightingForeground1","editorBracketHighlightingForeground2","editorBracketHighlightingForeground3","editorBracketHighlightingForeground4","editorBracketHighlightingForeground5","editorBracketHighlightingForeground6","editorBracketHighlightingUnexpectedBracketForeground","editorBracketPairGuideBackground1","editorBracketPairGuideBackground2","editorBracketPairGuideBackground3","editorBracketPairGuideBackground4","editorBracketPairGuideBackground5","editorBracketPairGuideBackground6","editorBracketPairGuideActiveBackground1","editorBracketPairGuideActiveBackground2","editorBracketPairGuideActiveBackground3","editorBracketPairGuideActiveBackground4","editorBracketPairGuideActiveBackground5","editorBracketPairGuideActiveBackground6","imeBackground","gutter","rangeHighlight","rangeHighlightBorder","symbolHighlight","symbolHighlightBorder","invisibles","countEOL","eolCount","firstLineLength","lastLineStart","normalizeIndentation","spacesCnt","tabsCnt","_normalizeIndentationFromWhitespace","Position","newLineNumber","newColumn","deltaColumn","aLineNumber","bLineNumber","strictContainsPosition","containsRange","otherRange","resultStartLineNumber","resultStartColumn","resultEndLineNumber","resultEndColumn","otherStartLineNumber","otherStartColumn","otherEndLineNumber","otherEndColumn","setEndPosition","setStartPosition","collapseToStart","areIntersecting","aStartLineNumber","bStartLineNumber","aStartColumn","bStartColumn","aEndLineNumber","bEndLineNumber","spansMultipleLines","Selection","selectionsEqual","selectionsArrEqual","createWithDirection","_utf16LE_TextDecoder","_utf16BE_TextDecoder","_platformTextDecoder","getUTF16LE_TextDecoder","getPlatformTextDecoder","hasTextDecoder","createStringBuilder","decodeUTF16LE","compatDecodeUTF16LE","capacity","StringBuilder","CompatStringBuilder","_completedStrings","_bufferLength","_flushBuffer","_buildBuffer","bufferString","remainingSpace","_pieces","_piecesLen","escapeNewLine","TextChange","oldPosition","oldText","newText","oldEnd","newLength","newEnd","_writeStringSize","_writeString","_readString","writeSize","compressConsecutiveTextChanges","prevEdits","currEdits","TextChangeCompressor","compress","_prevEdits","_currEdits","_resultLen","_prevLen","_prevDeltaOffset","_currLen","_currDeltaOffset","prevEdit","_getPrev","currEdit","_getCurr","_acceptCurr","_acceptPrev","_splitCurr","_splitPrev","mergePrev","mergeCurr","merged","_merge","_removeNoOps","_rebaseCurr","_rebasePrev","prevDeltaOffset","currDeltaOffset","preText","postText","EDITOR_MODEL_DEFAULTS","WordCharacterClassifier","getMapForWordSeparators","computeFn","USUAL_WORD_SEPARATORS","DEFAULT_WORD_REGEXP","allowInWords","createWordRegExp","ensureValidWordDefinition","wordDefinition","_defaultConfig","getWordAtText","textOffset","prevRegexIndex","timeBudget","regexIndex","thisMatch","_findRegexMatchEnclosingPosition","stopPos","matchIndex","autoCloseAlways","autoCloseNever","autoCloseBeforeWhitespace","CursorConfiguration","modelOptions","_cursorMoveConfigurationBrand","_electricChars","shouldAutoCloseBefore","_getShouldAutoClose","getLanguageConfiguration","getAutoClosingPairs","getSurroundingPairs","pair","electricChars","electricCharacter","getElectricCharacters","onElectricCharacter","character","scopedLineTokens","electricCharacterSupport","firstCharOffset","autoCloseConfig","_getLanguageDefinedShouldAutoClose","autoCloseBeforeSet","getAutoCloseBeforeSet","CursorState","_cursorStateBrand","PartialModelCursorState","PartialViewCursorState","SingleCursorState","_singleCursorStateBrand","_computeSelection","EditOperationResult","_editOperationResultBrand","isQuote","AtomicTabMoveOperations","whitespaceVisibleColumn","prevTabStopPosition","prevTabStopVisibleColumn","currentVisibleColumn","targetVisibleColumn","DeleteOperations","prevEditOperationType","deleteSelection","rightOfPosition","isAutoClosingPairDelete","autoClosingPairsOpen","autoClosingPairCandidates","afterCharacter","foundAutoClosingPair","autoClosingPairCandidate","found","autoClosedCharacter","_runAutoClosingPairDelete","autoClosingPairsOpenByEnd","getDeleteRange","lastIndentationColumn","toColumn","getPositionAfterDeleteLeft","lastCutRange","CursorMoveCommands","addCursorDown","useLogicalLine","translateDown","addCursorUp","translateUp","_moveToLineStart","currentViewStateColumn","isFirstLineOfWrappedLine","currentViewStatelineNumber","firstNonBlankColumn","_moveToLineStartByModel","_moveToLineStartByView","_moveToLineEnd","viewStatePosition","viewModelMaxColumn","isEndOfViewLine","modelStatePosition","modelMaxColumn","isEndLineOfWrappedLine","_moveToLineEndByModel","_moveToLineEndByView","expandLineSelection","selectToLineNumber","selectToColumn","enteringLineNumber","selectToViewLineNumber","selectToViewColumn","endPositionOfSelectionStart","_moveHalfLineLeft","_moveLeft","_moveHalfLineRight","_moveRight","_moveUpByViewLines","_moveUpByModelLines","_moveDownByViewLines","_moveDownByModelLines","moveToPrevBlankLine","moveToNextBlankLine","_moveToViewMinColumn","_moveToViewFirstNonWhitespaceColumn","_moveToViewCenterColumn","_moveToViewMaxColumn","_moveToViewLastNonWhitespaceColumn","_firstLineNumberInRange","_moveToModelPosition","_lastLineNumberInRange","newViewLineNumber","noOfColumns","moveLeft","halfLine","moveRight","moveDown","moveUp","_moveToViewPosition","toViewColumn","toModelLineNumber","toModelColumn","cursorMoveArg","PrevBlankLine","NextBlankLine","WrappedLineStart","WrappedLineFirstNonWhitespaceCharacter","WrappedLineColumnCenter","WrappedLineEnd","WrappedLineLastNonWhitespaceCharacter","ViewPortTop","ViewPortCenter","ViewPortBottom","ViewPortIfOutside","Character","HalfLine","CursorPosition","_cursorPositionBrand","MoveOperations","leftPosition","leftPositionAtomicSoftTabs","normalizedPos","clipPositionColumn","clipRange","rightPosition","rightPositionAtomicSoftTabs","allowMoveOnEdgeLine","normalizationAffinity","wasOnFirstPosition","wasOnLastPosition","wasAtEdgePosition","down","allowMoveOnLastLine","up","allowMoveOnFirstLine","_isBlankLine","lastColumn","SurroundSelectionCommand","charBeforeSelection","charAfterSelection","_charBeforeSelection","_charAfterSelection","firstOperationRange","secondOperationRange","CompositionSurroundSelectionCommand","_charAfter","opRange","TypeOperations","_distributedPaste","_simplePaste","typeSelection","_distributePasteToCursors","distributedPaste","_goodIndentForLine","expectedIndentAction","expectedEnterAction","_replaceJumpToNextIndent","typeText","goodIndent","possibleTypeText","lineMaxColumn","shouldPushStackElementBetween","_typeCommand","keepPosition","_enter","normalIndent","increasedIndent","actualIndentation","ir","oldEndViewColumn","oldEndColumn","newLineContent","firstNonWhitespace","afterEnter","_isAutoIndentType","_runAutoIndentType","currentIndentation","_isAutoClosingOvertype","chIsQuote","_runAutoClosingOvertype","_isBeforeClosingBrace","lineAfter","potentialStartingBraces","autoClosingPairsOpenByStart","potentialClosingBraces","autoClosingPairsCloseByStart","isBeforeStartingBrace","isBeforeClosingBrace","_findAutoClosingPairOpen","candidates","candidateIsMatch","_findContainedAutoClosingPair","lastChar","autoClosingPairsCloseByEnd","_getAutoClosingPairClose","chIsAlreadyTyped","containedPair","containedPairClose","isContainedPairPresent","lineBefore","characterAfter","characterBefore","forceTokenization","shouldAutoClose","neutralCharacter","findNeutralCharacter","tokenType","getTokenTypeIfInsertingCharacter","isOK","_runAutoClosingOpenCharType","autoClosingPairClose","TypeWithAutoClosingCommand","_shouldSurroundChar","_isSurroundSelectionType","isTypingAQuoteCharacter","selectionContainsOnlyWhitespace","selectedText","selectionText","_runSurroundSelectionType","closeCharacter","_isTypeInterceptorElectricChar","_typeInterceptorElectricChar","electricAction","matchOpenBracket","findMatchingBracketUp","matchLine","matchLineIndentation","newIndentation","lineFirstNonBlankColumn","getTypingOperation","compositions","composition","hasDeletion","deletedSelectionStart","deletedSelectionEnd","isDoingComposition","autoIndentFails","opType","lineInsertBefore","lineInsertAfter","openCharacter","insertOpenCharacter","_openCharacter","_closeCharacter","CompositionOutcome","insertedSelectionStart","insertedSelectionEnd","typedText","previousTypingOperation","typingOperation","isTypingOperation","normalizeOperationType","WordOperations","_createWord","wordType","nextCharClass","_findPreviousWordOnLine","_doFindPreviousWordOnLine","chIndex","chClass","_findEndOfWord","_findNextWordOnLine","_doFindNextWordOnLine","_findStartOfWord","moveWordLeft","wordNavigationType","prevWordOnLine","_moveWordPartLeft","rightRight","moveWordRight","movedDown","nextWordOnLine","_moveWordPartRight","_deleteWordLeftWhitespace","lastNonWhitespace","deleteWordLeft","whitespaceHeuristics","deleteInsideWord","_deleteInsideWordWhitespace","_deleteInsideWordDetermineDeleteRange","_charAtIsWhitespace","leftIndex","rightIndex","touchesWord","createRangeWithPosition","deleteWordAndAdjacentWhitespace","expandedToTheRight","_deleteWordPartLeft","_findFirstNonWhitespaceChar","_deleteWordRightWhitespace","deleteWordRight","_deleteWordPartRight","_createWordAtPosition","_wordSeparators","prevWord","possiblePosition","WordPartOperations","deleteWordPartLeft","enforceDefined","deleteWordPartRight","moveWordPartLeft","moveWordPartRight","InternalEditorAction","_precondition","_run","EditorType","EditorContextKeys","toNegated","hasOnlyEmptySelection","hasSingleSelection","hoverVisible","inCompositeEditor","notInCompositeEditor","TokenMetadata","getTokenType","containsBalancedBrackets","getFontStyle","getBackground","getClassNameFromMetadata","getInlineStyleFromMetadata","getPresentationFromMetadata","CompletionItemKinds","InlineCompletionTriggerKind","SignatureHelpTriggerKind","DocumentHighlightKind","SymbolKinds","InlayHintKind","TokenizationSupportFactoryData","_registry","_factory","_resolvePromise","_isResolved","isResolved","createTokenizationSupport","Token","_tokenBrand","TokenizationResult","endState","_tokenizationResultBrand","EncodedTokenizationResult","_encodedTokenizationResultBrand","isLocationLink","originSelectionRange","targetSelectionRange","byKind","toIcon","strict","FoldingRangeKind","Imports","Region","_factories","_colorMap","changedLanguages","support","registerFactory","myData","tokenizationSupport","setColorMap","getInheritIndentForLine","honorIntentialIndent","indentRulesSupport","precedingUnIgnoredLine","getLanguageIdAtPosition","resultLineNumber","shouldIgnore","getPrecedingValidLine","precedingUnIgnoredLineContent","shouldIncrease","shouldIndentNextLine","shouldDecrease","previousLine","previousLineIndentMetadata","getIndentMetadata","stopLine","getGoodIndentForLine","virtualModel","indentConverter","richEditSupport","inheritLine","enterResult","getIndentForEnter","scopedLineText","beforeEnterText","afterEnterText","embeddedLanguage","beforeEnterResult","beforeEnterIndent","currentLineIndent","afterEnterAction","beforeEnter","afterEnterIndent","getIndentActionForType","beforeTypeText","afterTypeText","getEnterAction","previousLineText","oneLineAboveScopedLineTokens","ILanguageService","StandardAutoClosingPairConditional","_neutralCharacter","_neutralCharacterSearched","_inString","_inComment","_inRegEx","standardToken","getTokenCount","standardTokenType","getStandardTokenType","_findNeutralCharacterInRange","toCharCode","AutoClosingPairs","appendEntry","CharacterPairSupport","_autoClosingPairs","__electricCharacterSupport","docComment","_autoCloseBefore","autoCloseBefore","DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED","_surroundingPairs","BracketElectricCharacterSupport","richEditBrackets","_richEditBrackets","reversedBracketRegex","reversedRegex","findPrevBracketInRange","bracketText","textIsOpenBracket","textBeforeBracket","getActualLineContentBefore","resetGlobalRegex","reg","IndentRulesSupport","indentationRules","_indentationRules","increaseIndentPattern","decreaseIndentPattern","indentNextLinePattern","unIndentedLinePattern","OnEnterSupport","_brackets","openRegExp","_createOpenBracketRegExp","closeRegExp","_createCloseBracketRegExp","_regExpRules","_safeRegExp","LanguageBracketsConfiguration","colorizedBracketPairs","filterValidBrackets","openingBracketInfos","closing","OpeningBracketKind","closingBracketInfos","opening","ClosingBracketKind","_openingBrackets","_closingBrackets","openingBrackets","closingBrackets","getOpeningBracketInfo","getClosingBracketInfo","getBracketInfo","BracketKindBase","openedBrackets","isOpeningBracket","closedBrackets","closes","getClosedBrackets","LanguageConfigurationServiceChangeEvent","affects","ILanguageConfigurationService","LanguageConfigurationService","configurationService","languageService","LanguageConfigurationRegistry","onDidChangeEmitter","configurations","languageConfigKeys","customizedLanguageConfigKeys","globalConfigChanged","localConfigChanged","overrides","overrideLangName","isRegisteredLanguageId","registry","languageConfig","ResolvedLanguageConfiguration","customizedConfig","overrideIdentifier","validateBracketPairs","getCustomizedLanguageConfig","combineLanguageConfigurations","underlyingConfig","computeConfig","getIndentationAtPosition","getScopedLineTokens","columnNumber","ComposedLanguageConfiguration","_resolved","_order","LanguageConfigurationContribution","getResolvedConfiguration","_resolve","configs","LanguageConfigurationChangeEvent","_electricCharacter","_onEnterSupport","_handleComments","characterPair","foldingRules","bracketsNew","getWordDefinition","commentRule","lineCommentToken","blockStart","blockEnd","blockCommentStartToken","blockCommentEndToken","ModesRegistry","_onDidChangeLanguages","onDidChangeLanguages","_languages","getLanguages","PLAINTEXT_LANGUAGE_ID","registerDefaultConfigurations","NullState","nullTokenize","nullTokenizeEncoded","Uint32Array","createScopedLineTokens","tokenCount","desiredLanguageId","lastTokenIndex","firstTokenIndex","ScopedLineTokens","getStartOffset","lastCharOffset","_scopedLineTokensBrand","_firstTokenIndex","_lastTokenIndex","_lastCharOffset","ignoreBracketsInToken","RichEditBracket","forwardRegex","_richEditBracketBrand","_openSet","_toSet","_closeSet","isOpen","isClose","RichEditBrackets","_richEditBracketsBrand","N","areOverlapping","aOpen","aClose","bOpen","bClose","mergeGroups","g2","newG","oldG","currentOpen","currentClose","groupFuzzyBrackets","currentIndex","pieces","collectSuperstrings","unique","lengthcmp","createBracketOrRegExp","getRegexForBracketPair","toReversedString","getReversedRegexForBracketPair","getRegexForBrackets","getReversedRegexForBrackets","textIsBracket","maxBracketLength","prepareBracketForRegExp","insertWordBoundaries","regexStr","lastInput","lastOutput","BracketsUtils","_findPrevBracketInText","reversedText","matchOffset","matchLength","absoluteMatchOffset","reversedSubstr","findNextBracketInText","bracketRegex","findNextBracketInRange","fallback","getInitialState","tokenizeEncoded","hasEOL","tokenizeToString","_tokenizeToString","languageIdCodec","tokenizeLineToHTML","viewLineTokens","useNbsp","prevIsSpace","partContent","getInlineStyle","tokenizationResult","convertToEndOffset","OverviewRulerLane","MinimapPosition","InjectedTextCursorStops","TextModelResolvedOptions","src","_textModelResolvedOptionsBrand","defaultEOL","createChangeEvent","FindMatch","_findMatchBrand","isITextSnapshot","ValidAnnotatedEditOperation","SearchData","simpleSearch","ApplyEditsResult","reverseEdits","trimAutoWhitespaceLineNumbers","shouldSynchronizeModel","isTooLargeForSyncing","isForSimpleWidget","BaseAstNode","_length","PairAstNode","openingBracket","closingBracket","missingOpeningBracketIds","getEmpty","listHeight","childrenLength","getChild","canBeReused","openBracketIds","computeMinIndentation","ListAstNode","_missingOpeningBracketIds","cachedMinIndentation","create23","item1","item2","item3","missingBracketIds","Immutable23ListAstNode","TwoThreeListAstNode","ImmutableArrayListAstNode","throwIfImmutable","makeLastElementMutable","childCount","mutable","toMutable","setChild","makeFirstElementMutable","lastLength","handleChildrenChanged","unopenedBrackets","minIndentation","childOffset","_item1","_item2","_item3","appendChildOfSameHeight","unappendChild","prependChildOfSameHeight","unprependChild","ArrayListAstNode","_children","emptyArray","ImmutableLeafAstNode","TextAstNode","_openedBracketIds","columnCount","firstNonWsColumn","BracketAstNode","bracketInfo","bracketIds","InvalidBracketAstNode","openedBracketIds","TextEditInfo","BeforeEditPositionMapper","documentLength","nextEditIdx","deltaOldToNewLineCount","deltaOldToNewColumnCount","deltaLineIdxInOld","TextEditInfoCache","getOffsetBeforeChange","adjustNextEdit","translateCurToOld","getDistanceToNextChange","nextEdit","nextChangeOffset","translateOldToCur","offsetObj","oldOffsetObj","newOffset","nextEditEndOffsetInCur","endOffsetAfterObj","nextEditEndOffsetInCurObj","nextEditEndOffsetBeforeInCurObj","endOffsetBeforeObj","lineDelta","previousColumnDelta","columnDelta","textLength","BracketTokens","hasRegExp","_regExpGlobal","createFromLanguage","denseKeyProvider","getKey","openingTextId","getRegExpStr","regExpGlobal","regExpStr","getToken","findClosingTokenText","openingBracketIds","closingText","LanguageAgnosticBracketTokens","languageIdToBracketTokens","didLanguageChange","getSingleLanguageBracketTokens","singleLanguageBracketTokens","LengthObj","lengthDiff","startLineCount","startColumnCount","endLineCount","endColumnCount","toLength","zero","lengthZero","lengthIsZero","lengthToObj","lengthGetLineCount","lengthGetColumnCountIfZeroLineCount","lengthAdd","l1","l2","lengthDiffNonNegative","length1","length2","lineCount1","lineCount2","colCount2","lengthLessThan","lengthLessThanEqual","lengthGreaterThanEqual","positionToLength","lengthsToRange","lengthStart","lengthEnd","colCount","lengthOfString","concat23TreesOfSameHeight","createImmutableLists","node1","node2","nodeToAppend","curNode","parents","nodeToAppendOfCorrectHeight","nodeToPrependOfCorrectHeight","NodeReader","lastOffset","nextNodes","offsets","idxs","readLongestNodeAt","lastOrUndefined","curNodeOffset","nextNodeAfterCurrent","nextChildIdx","getNextChildIdx","currentOffset","curIdx","parseDocument","Parser","_itemsConstructed","_itemsFromCache","oldNodeReader","positionMapper","parseList","parseChild","readNode","concat23Trees","maxCacheableLength","cachedNode","skip","astNode","nextToken","bracketId","emptyArr","SmallImmutableSet","additionalItems","cached","keyProvider","newItem","identityKeyProvider","DenseKeyProvider","TextBufferTokenizer","bracketTokens","reader","NonPeekableTextBufferTokenizer","didPeek","textBufferLineCount","textBufferLastLineLength","lineCharOffset","lineTokenOffset","peekedToken","startLineIdx","startLineCharOffset","lengthHeuristic","peekedBracketToken","getMetadata","isOther","containsBracketType","FastTokenizer","curLineCount","lastLineBreakOffset","lastTokenEndOffset","lastTokenEndLine","smallTextTokens0Line","smallTextTokens1Line","curOffset","uriGetComparisonKey","SingleModelEditStackData","beforeVersionId","afterVersionId","beforeEOL","afterEOL","beforeCursorState","afterCursorState","alternativeVersionId","getAlternativeVersionId","getModelEOL","textChanges","_writeSelectionsSize","_writeSelections","_readSelections","serialize","necessarySize","deserialize","SingleModelEditStackElement","matchesResource","canAppend","_applyUndo","_applyRedo","heapSize","MultiModelEditStackElement","editStackElements","_isOpen","_editStackElementsArr","_editStackElementsMap","editStackElement","resources","prepareUndoRedo","isEditStackElement","EditStack","undoRedoService","_undoRedoService","lastElement","getLastElement","removeElements","_getOrCreateEditStackElement","newElement","pushElement","pushEOL","setEOL","pushEditOperation","editOperations","applyEdits","_computeCursorState","textChange","GuidesTextModelPart","_computeIndentLevel","assertNotDisposed","up_aboveContentLineIndex","up_aboveContentLineIndent","up_belowContentLineIndex","up_belowContentLineIndent","up_resolveIndents","down_aboveContentLineIndex","down_aboveContentLineIndent","down_belowContentLineIndex","down_belowContentLineIndent","down_resolveIndents","goUp","goDown","initialIndent","upLineNumber","downLineNumber","upLineIndentLevel","currentIndent","_getIndentLevelForWhitespaceLine","downLineIndentLevel","getBracketPairsInRangeWithMinIndentation","activeBracketPairRange","bracketsContainingActivePosition","getBracketPairsInRange","bp","BracketPairGuidesClassNames","closingBracketRange","getInlineClassName","nestingLevel","nestingLevelOfEqualBracketType","openingBracketRange","endVisibleColumn","guideVisibleColumn","minVisibleColumnIndentation","renderHorizontalEndLineAtTheBottom","visibleGuideStartLineNumber","visibleGuideEndLineNumber","aboveContentLineIndex","aboveContentLineIndent","belowContentLineIndex","belowContentLineIndent","resultIndex","PrefixSumComputer","prefixSumValidIndex","oldValues","oldPrefixSum","insertValuesLen","maxCount","_getPrefixSum","sum","PrefixSumIndexOfResult","ConstantTimePrefixSumComputer","_validEndIndex","_prefixSum","_indexBySum","_ensureValid","viewLinesAbove","_invalidate","sumAbove","_prefixSumIndexOfResultBrand","BracketInfo","isInvalid","BracketPairInfo","bracketPairNode","openingBracketInfo","BracketPairWithMinIndentationInfo","BracketPairsTree","didChangeEmitter","backgroundTokenizationState","initialAstWithoutTokens","astWithTokens","parseDocumentFromTextBuffer","handleDidChangeBackgroundTokenizationState","wasUndefined","handleDidChangeTokens","handleContentChanged","previousAst","previousAstClone","getBracketsInRange","collectBrackets","includeMinIndentation","startLength","endLength","CollectBracketPairsContext","collectBracketPairs","getFirstBracketAfter","getFirstBracketBefore","nodeOffsetStart","nodeOffsetEnd","lengths","levelPerBracketType","levelPerBracket","openingBracketEnd","BracketPairsTextModelPart","bracketPairsTree","bracketsRequested","updateBracketPairsTree","canBuildAST","getValueLength","handleDidChangeOptions","handleDidChangeLanguage","handleDidChangeContent","_bracket","maxDuration","closingBracketInfo","bracketPair","bracketsSupport","stripBracketSearchCanceled","_findMatchingBracketUp","createTimeBasedContinueBracketSearchPredicate","matchBracket","continueSearchPredicate","_matchBracket","_establishBracketSearchOffsets","modeBrackets","currentLanguageId","searchStartOffset","tokenEndOffset","searchEndOffset","tokenStartOffset","currentModeBrackets","bestResult","foundBracket","foundBracketText","_matchFoundBracket","BracketSearchCanceled","prevTokenIndex","prevModeBrackets","matched","_findMatchingBracketDown","totalCallCount","searchPrevMatchingBracketInRange","hitText","prevSearchInToken","searchInToken","searchNextMatchingBracketInRange","findPrevBracket","bracketConfig","tokenLanguageId","_toFoundBracket","findNextBracket","findEnclosingBrackets","savedCounts","counts","resetCounts","searchInRange","_searchCanceledBrand","ColorizedBracketPairsDecorationProvider","ColorProvider","colorizationOptions","bracketsInRange","getAllDecorations","unexpectedClosingBracketClassName","SpacesDiffResult","spacesDiff","looksLikeAlignment","aLength","bLength","aSpacesCnt","aTabsCount","bSpacesCnt","bTabsCount","tabsDiff","guessIndentation","defaultTabSize","defaultInsertSpaces","linesIndentedWithTabsCount","linesIndentedWithSpacesCount","previousLineIndentation","ALLOWED_TAB_SIZE_GUESSES","spacesDiffCount","currentLineLength","currentLineText","useCurrentLineText","currentLineHasContent","currentLineIndentation","currentLineSpacesCount","currentLineTabsCount","getLineCharCode","currentSpacesDiff","tabSizeScore","possibleTabSize","possibleTabSizeScore","getNodeColor","setNodeColor","getNodeIsVisited","setNodeIsVisited","getNodeIsForValidation","setNodeIsForValidation","_setNodeStickiness","setCollapseOnReplaceEdit","IntervalNode","maxEnd","cachedVersionId","cachedAbsoluteStart","cachedAbsoluteEnd","setOptions","collapseOnReplaceEdit","setCachedOffsets","absoluteStart","absoluteEnd","detach","SENTINEL","IntervalTree","requestNormalizeDelta","intervalSearch","filterOwnerId","T","intervalStart","intervalEnd","nodeMaxEnd","nodeStart","nodeEnd","collectNodesFromOwner","collectNodesPostOrder","rbTreeInsert","_normalizeDeltaIfNecessary","rbTreeDelete","resolveNode","initialNode","acceptReplace","nodesOfInterest","searchForEditing","editDelta","recomputeMaxEnd","noOverlapReplace","nodeAcceptEdit","normalizeDelta","adjustMarkerBeforeColumn","markerOffset","markerStickToPreviousCharacter","checkOffset","moveSemantics","nodeStickiness","getNodeStickiness","startStickToPreviousCharacter","endStickToPreviousCharacter","deletingCnt","insertingCnt","commonLength","startDone","endDone","getCollapseOnReplaceEdit","z","zAbsoluteStart","zAbsoluteEnd","treeInsert","recomputeMaxEndWalkToRoot","rightRotate","leftest","resetSentinel","yWasRed","computeMaxEnd","leftMaxEnd","rightMaxEnd","TreeNode","piece","size_left","lf_left","righttest","calculateSize","calculateLF","tree","rbDelete","recomputeTreeMetadata","newSizeLeft","newLFLeft","lf_delta","updateTreeMetadata","fixInsert","lineFeedCntDelta","AverageBufferSize","createUintArray","LineStarts","lineStarts","cr","lf","crlf","createLineStartsFast","readonly","rLength","Piece","bufferIndex","StringBuffer","PieceTreeSnapshot","BOM","_tree","_BOM","iterate","getPieceContent","PieceTreeSearchCache","nodePos","nodeStartOffset","get2","nodeStartLineNumber","nodePosition","hasInvalidVal","newArr","PieceTreeBase","chunks","eolNormalized","_lastChangeBufferPos","_lineCnt","_EOL","_EOLLength","_EOLNormalized","lastNode","rbInsertRight","_searchCache","_lastVisitedLine","computeBufferMetadata","normalizeEOL","averageBufferSize","tempChunk","tempChunkLen","getNodeContent","newEOL","createSnapshot","leftLen","getAccumulatedValue","lfCnt","originalOffset","nodeAt2","getValueInRange2","offsetInBuffer","currentLine","danglingCR","pieceLength","pieceStartLine","pieceEndLine","pieceStartOffset","getLength","getLineRawContent","_getCharCode","matchingNode","targetOffset","findMatchesInNode","searcher","startCursor","endCursor","searchData","captureMatches","limitResultCount","startOffsetInBuffer","searchText","positionInBuffer","getLineFeedCnt","retStartColumn","retEndColumn","findMatchesLineByLine","searchRange","lineBreakCnt","nextLineStartOffset","_findMatchesInLine","searchStringLen","lastMatchIndex","nodeAt","insertPosInBuffer","appendToNode","insertContentToNodeLeft","nodesToDel","newRightPiece","shouldCheckCRLF","endWithCR","nodeCharCodeAt","newStart","startWithLF","previousPos","deleteNodeTail","newPieces","createNewPieces","tmpNode","deleteNodes","insertContentToNodeRight","rbInsertLeft","cnt","startNode","startSplitPosInBuffer","endSplitPosInBuffer","validateCRLFWithPrevNode","deleteNodeHead","validateCRLFWithNextNode","shrinkNode","nPiece","adjustCarriageReturnFromNext","previousCharOffset","nodes","splitText","endPos","newPiece","prevAccumulatedValue","accumulatedValue","originalLineNumber","lineCnt","realLineCnt","expectedLineStartIndex","originalLFCnt","originalEndOffset","newEndOffset","newLineFeedCnt","size_delta","originalStartOffset","originalStartPos","originalEndPos","oldLFCnt","hitCRLF","prevStartOffset","oldLineFeedCnt","prevAccumualtedValue","offsetOfNode","fixCRLF","prevNewLength","prevNewLFCnt","leftRet","prevNode","PieceTreeTextBuffer","_onDidChangeContent","_mightContainNonBasicASCII","_mightContainRTL","_mightContainUnusualLineTerminators","_pieceTree","mightContainUnusualLineTerminators","resetMightContainUnusualLineTerminators","getBOM","getRangeAt","_getEndOfLine","getValueLengthInRange","getCharacterCountInRange","fromOffset","toOffset","recordTrimAutoWhitespace","computeUndoEdits","canReduceOperations","validatedRange","textMightContainNonBasicASCII","validText","lastLineLength","strEOL","bufferEOL","sortIndex","rangeOffset","rangeLength","_sortOpsAscending","hasTouchingRanges","rangeEnd","nextRangeStart","_reduceOperations","reverseRanges","_getInverseEditRanges","newTrimAutoWhitespaceCandidates","reverseRange","currentLineContent","oldContent","reverseOperations","reverseRangeDeltaOffset","bufferText","reverseRangeOffset","contentChanges","_doApplyEdits","prevContent","_toSingleEditOperation","firstEditRange","lastEditRange","entireEditRange","lastEndLineNumber","lastEndColumn","operation","_sortOpsDescending","contentChangeRange","prevOpEndLineNumber","prevOpEndColumn","prevOp","resultRange","PieceTreeTextBufferFactory","_chunks","_bom","_cr","_lf","_crlf","_containsRTL","_containsUnusualLineTerminators","_isBasicASCII","_normalizeEOL","_getEOL","totalEOLCount","totalCRCount","newLineStart","textBuffer","PieceTreeTextBufferBuilder","_hasPreviousChar","_previousChar","_tmpLineStarts","acceptChunk","chunk","_acceptChunk1","allowEmptyStrings","_acceptChunk2","createLineStarts","finish","_finish","lastChunk","newLineStarts","ContiguousMultilineTokens","_tokens","appendLineTokens","ContiguousMultilineTokensBuilder","ContiguousGrowingArray","_default","deleteIndex","TokenizationStateStore","initialState","_lineBeginState","_lineNeedsTokenization","_firstLineNeedsTokenization","invalidLineStartIndex","markMustBeTokenized","getBeginState","setEndState","previousEndState","TextModelTokenization","_textModel","_tokenizationPart","_languageIdCodec","_isScheduled","_tokenizationStateStore","_resetTokenizationState","clearTokens","isFlush","_beginBackgroundTokenization","handleDidChangeAttached","tokenizationPart","initializeTokenization","isAttachedToEditor","_hasLinesToTokenize","deadline","_backgroundTokenizeWithDeadline","endTime","_backgroundTokenizeForAtLeast1ms","sw","_tokenizeOneInvalidLine","setTokens","_isTokenizationComplete","_tokenizeViewport","_updateTokensUntilLine","lineStartState","safeTokenize","tokenizeLineWithEdit","curLineContent","firstInvalidLineNumber","nonWhitespaceColumn","fakeLines","newNonWhitespaceIndex","encodeLanguageId","EMPTY_LINE_TOKENS","ContiguousTokensEditing","deleteBeginning","toChIndex","deleteEnding","fromChIndex","toUint32Array","lineTextLength","tokensCount","fromTokenIndex","findIndexInTokensArray","fromTokenStartOffset","lastEnd","_otherTokens","myTokens","otherTokens","otherTokensCount","ContiguousTokensStore","_lineTokens","getTokens","topLevelLanguageId","rawLineTokens","getDefaultMetadata","_massageTokens","hasDifferentLanguageId","_ensureLine","_deleteLines","_insertLines","checkEquality","oldTokens","_equals","acceptEdit","_acceptDeleteRange","_acceptInsertText","firstLineIndex","lastLineTokens","SparseTokensStore","_isComplete","isComplete","setPartial","_firstRange","_lastRange","insertPosition","removeTokens","addSparseTokens","aTokens","bTokens","_findFirstPieceWithLine","aIndex","lastEndOffset","emitToken","bIndex","bStartCharacter","getStartCharacter","bEndCharacter","getEndCharacter","bMetadata","bMask","aMask","aMergeIndex","firstCharCode","TokenizationTextModelPart","_languageService","bracketPairsTextModelPart","_onDidChangeLanguage","_onDidChangeLanguageConfiguration","_onDidChangeTokens","_backgroundTokenizationState","_onBackgroundTokenizationStateChanged","_semanticTokens","_tokenization","_languageRegistryListener","handleTokenizationProgress","completed","backgroundTokenizationCompleted","minChangedLineNumber","maxChangedLineNumber","hasChange","_emitModelTokensChangedEvent","semanticTokensApplied","setSemanticTokens","hasCompleteSemanticTokens","hasSomeSemanticTokens","setPartialSemanticTokens","changedRange","_isDisposing","resetTokenization","tokenizeIfCheap","_getLineTokens","syntacticTokens","rbStartOffset","rbEndOffset","_findLanguageBoundaries","rightBiasedWord","lbStartOffset","lbEndOffset","leftBiasedWord","getWordUntilPosition","setLanguageId","oldLanguage","newLanguage","createTextBuffer","createTextBufferFactory","createTextBufferFactoryFromSnapshot","MODEL_ID","TextModelSnapshot","_eos","resultCnt","resultLength","TextModel","creationOptions","associatedResource","_onWillDispose","_onDidChangeDecorations","DidChangeDecorationsEmitter","affectedInjectedTextLines","handleBeforeFireDecorationsChangedEvent","_onDidChangeOptions","_onDidChangeAttached","onDidChangeAttached","_onDidChangeInjectedText","_eventEmitter","DidChangeContentEmitter","_deltaDecorationCallCnt","_associatedResource","_attachedEditorCount","_bufferDisposable","_bracketPairs","_guidesTextModelPart","_decorationProvider","_tokenizationTextModelPart","bufferLineCount","bufferTextLength","_isTooLargeForTokenization","LARGE_FILE_SIZE_THRESHOLD","LARGE_FILE_LINE_COUNT_THRESHOLD","_isTooLargeForSyncing","MODEL_SYNC_LIMIT","_alternativeVersionId","_initialUndoRedoSnapshot","__isDisposing","_lastDecorationId","_decorationsTree","DecorationsTrees","_commandManager","_isUndoing","_isRedoing","_trimAutoWhitespaceLines","beginDeferredEmit","endDeferredEmit","guessedIndentation","onDidChangeContent","slowEvent","fastEvent","emptyDisposedTextBuffer","_assertNotDisposed","_emitContentChangedEvent","rawChange","_setValueFromTextBuffer","_createContentChanged2","textBufferDisposable","oldFullModelRange","getFullModelRange","oldModelValueLength","_increaseVersionId","_onBeforeEOLChange","_onAfterEOLChange","ensureAllNodesHaveRanges","allDecorations","smallLineCharCount","longLineCharCount","getFormattingOptions","_newOpts","bracketColorizationOptions","removeUnusualLineTerminators","findMatches","getInitialUndoRedoSnapshot","_validatePosition","rawOffset","_overwriteVersionId","_overwriteAlternativeVersionId","newAlternativeVersionId","_overwriteInitialUndoRedoSnapshot","newInitialUndoRedoSnapshot","fullModelRange","fullModelValue","rawRange","getEndOfLineSequence","_validateRangeRelaxedNoAllocations","initialStartLineNumber","initialEndLineNumber","initialEndColumn","_isValidPosition","validationType","charCodeBefore","_lineNumber","_column","_isValidRange","charCodeBeforeStart","charCodeBeforeEnd","startInsideSurrogatePair","endInsideSurrogatePair","modifyPosition","rawSearchScope","searchRanges","searchScope","uniqueSearchRanges","matchMapper","parseSearchRequest","findNextMatch","rawSearchStart","searchStart","findPreviousMatch","_validateEditOperation","rawOperation","_validateEditOperations","_pushEditOperations","incomingEdits","editsAreNearCursors","foundEditNearSel","selIsAbove","selIsBelow","trimLineNumber","allowTrimLine","editText","trimRange","resultingAlternativeVersionId","rangeStart","_applyUndoRedoEdits","oldLineCount","newLineCount","rawContentChanges","deletingLinesCnt","insertingLinesCnt","editingLinesCnt","changeLineCountDelta","currentEditStartLineNumber","firstEditLineNumber","lastInsertedLineNumber","decorationsWithInjectedTextInEditedRange","getInjectedTextInInterval","injectedTextInEditedRange","injectedTextInEditedRangeQueue","editLineNumber","currentEditLineNumber","decorationsInCurrentLine","spliceStartLineNumber","spliceLineNumber","lineChangeEvents","_getInjectedTextInLine","_changeDecorations","addDecoration","_deltaDecorationsImpl","changeDecoration","_changeDecorationImpl","changeDecorationOptions","_changeDecorationOptionsImpl","_normalizeOptions","removeDecoration","newStickiness","TRACKED_RANGE_OPTIONS","getDecorationOptions","getNodeRange","getLinesDecorations","_getDecorationsInRange","getAllInjectedText","filterRange","getAllInInterval","oldRange","recordLineAffectedByInjectedText","checkAffectedAndFire","nodeWasInOverviewRuler","nodeIsInOverviewRuler","nodeRange","oldDecorationsLen","oldDecorationIndex","newDecorationsLen","newDecorationIndex","internalDecorationId","newDecoration","setMode","indentOfLine","isNodeInOverviewRuler","isNodeInjectedText","DEFAULT_CREATION_OPTIONS","_decorationsTree0","_decorationsTree1","_injectedTextDecorationsTree","_ensureNodesHaveRanges","_intervalSearch","r0","overviewRulerOnly","_search","_resolveNode","cleanClassName","DecorationOptions","darkColor","ModelDecorationOverviewRulerOptions","_resolvedColor","_resolveColor","ModelDecorationMinimapOptions","ModelDecorationInjectedTextOptions","attachedData","ModelDecorationOptions","hoverMessage","glyphMarginHoverMessage","beforeContentClassName","afterContentClassName","hideInCommentTokens","hideInStringTokens","createDynamic","handleBeforeFire","_affectedInjectedTextLines","_deferredCnt","_shouldFire","_affectsMinimap","_affectsOverviewRuler","_fastEmitter","_slowEmitter","_deferredEvent","TextModelPart","SearchParams","nextChCode","isMultilineRegexSource","canUseSimpleSearch","createFindMatch","rawMatches","LineFeedCounter","lineFeedsOffsets","lineFeedsOffsetsLen","_lineFeedsOffsets","findLineFeedCountBeforeOffset","TextModelSearch","searchParams","_doFindMatchesMultiline","Searcher","_doFindMatchesLineByLine","_getMultilineMatchRange","lfCounter","match0","lineFeedCountBeforeMatch","lineFeedCountInMatch","isValidMatch","_doFindNextMatchMultiline","_doFindNextMatchLineByLine","searchTextStart","_findFirstMatchInLine","fromColumn","_doFindPreviousMatchMultiline","_doFindPreviousMatchLineByLine","_findLastMatchInLine","matchStartIndex","firstCharInMatch","leftIsWordBounday","charAfter","lastCharInMatch","rightIsWordBounday","searchRegex","_searchRegex","_prevMatchStartIndex","_prevMatchLength","computeIndentLevel","IEditorWorkerService","encodeSemanticTokensDto","semanticTokens","deltas","encodeSemanticTokensDtoSize","uint8Arr","b0","b1","b2","b3","reverseEndianness","toLittleEndianBuffer","isSemanticTokens","isSemanticTokensEdits","DocumentSemanticTokensResult","provider","hasDocumentSemanticTokensProvider","getDocumentSemanticTokens","lastProvider","lastResultId","providers","orderedGroups","getDocumentSemanticTokensProviders","results","provideDocumentSemanticTokens","DocumentRangeSemanticTokensResult","hasDocumentRangeSemanticTokensProvider","getDocumentRangeSemanticTokensProviders","getDocumentRangeSemanticTokens","provideDocumentRangeSemanticTokens","documentSemanticTokensProvider","_getDocumentSemanticTokensProviderHighestGroup","getLegend","resultId","releaseDocumentSemanticTokens","documentRangeSemanticTokensProvider","ILanguageFeatureDebounceService","IdentityHash","_hashes","WeakMap","pool","FeatureDebounceInformation","_logService","_max","avg","_overall","LanguageFeatureDebounceService","feature","_overallAverage","ILanguageFeaturesService","IMarkerDecorationsService","IModelService","computeModelSha1","shaComputer","_modelEventListeners","_languageSelection","_languageSelectionListener","_disposeLanguageSelection","setLanguage","languageSelection","DEFAULT_EOL","DisposedModelInfo","initialUndoRedoSnapshot","time","sharesUndoRedoStack","sha1","ModelService","_configurationService","_resourcePropertiesService","_languageFeatureDebounceService","_onModelAdded","onModelAdded","_onModelRemoved","onModelRemoved","_onModelModeChanged","onModelLanguageChanged","_modelCreationOptionsByLanguageAndResource","_models","_disposedModels","_disposedModelsHeapSize","_semanticStyling","SemanticStyling","_updateModelOptions","SemanticColoringFeature","_readModelOptions","parsedTabSize","parsedIndentSize","newDefaultEOL","_shouldRestoreUndoStack","getCreationOptions","oldOptionsByLanguageAndResource","modelId","oldOptions","_setModelOptionsForModel","currentOptions","_insertDisposedModel","disposedModelData","_removeDisposedModel","_ensureDisposedModelsHeapSize","maxModelsHeapSize","disposedModels","disposedModel","restoreSnapshot","_createModelData","sha1IsEqual","past","future","setElementsValidFlag","createModel","getModels","getSemanticTokensProviderStyling","_schemaShouldMaintainUndoRedoElements","getUriComparisonKey","maintainUndoRedoStack","maxMemory","MAX_MEMORY_FOR_CLOSED_FILES_UNDO_STACK","oldLanguageId","newLanguageId","SEMANTIC_HIGHLIGHTING_SETTING_ID","isSemanticColoringEnabled","setting","semanticHighlighting","semanticStyling","modelService","languageFeatureDebounceService","_watchers","ModelSemanticColoring","deregister","modelSemanticColoring","handleSettingOrThemeChange","affectsConfiguration","watcher","_caches","SemanticTokensResponse","stylingProvider","_provider","_debounceInformation","for","REQUEST_MIN_DELAY","REQUEST_MAX_DELAY","_fetchDocumentSemanticTokens","_fetchDocumentSemanticTokensNow","_currentDocumentResponse","_currentDocumentRequestCancellationTokenSource","_documentProvidersChangeListeners","_setDocumentSemanticTokens","bindDocumentChangeListeners","cancellationTokenSource","pendingChanges","contentChangeListener","styling","_copy","srcOffset","currentResponse","rescheduleIfNeeded","deltaLength","srcData","destData","srcLastStart","destLastStart","warnInvalidEditStart","copyCount","area","singleChange","applyEdit","ITextModelService","SparseMultilineTokens","getMaxDeltaLine","SparseMultilineTokensStorage","_updateEndLineNumber","deltaRange","bDeltaLine","deletedLinesCount","tokenMaxDeltaLine","deletedBefore","acceptDeleteRange","acceptInsertText","_tokenCount","_getDeltaLine","_getStartCharacter","_getEndCharacter","_getTokenCount","startChar","maxDeltaLine","endChar","deltaLine","midDeltaLine","SparseLineTokens","startDeltaLine","endDeltaLine","newTokenCount","hasDeletedTokens","firstDeltaLine","tokenDeltaLine","tokenStartCharacter","tokenEndCharacter","destTokens","destFirstDeltaLine","horizontalShiftForFirstLineTokens","startCharacter","endCharacter","isInsertingPreciselyOneWordCharacter","tokenLength","SemanticTokensProviderStyling","_legend","_hasWarnedOverlappingTokens","_hasWarnedInvalidLengthTokens","_hasWarnedInvalidEditStart","_hashTable","HashTable","tokenTypeIndex","tokenModifierSet","encodedLanguageId","getLevel","Trace","tokenTypes","tokenModifiers","modifierSet","modifierIndex","tokenStyle","getTokenStyleMetadata","warnOverlappingSemanticTokens","warnInvalidLengthSemanticTokens","previousResultId","editIndex","editStart","maxExpectedStart","toMultilineTokens2","tokensPerArea","lastStartCharacter","tokenStartIndex","smallTokenEndIndex","bigTokenEndIndex","areaLine","prevLineNumber","prevEndCharacter","deltaCharacter","HashTableEntry","_elementsCount","_currentLengthIndex","_currentLength","_SIZES","_growCount","_nullOutEntries","_hash2","n1","n2","_hashFunc","oldElements","oldNext","_add","ITextResourceConfigurationService","ITextResourcePropertiesService","UnicodeTextModelHighlighter","computeUnicodeHighlights","codePointHighlighter","CodePointHighlighter","getCandidateCodePoints","fromCodePoint","hasMore","ambiguousCharacterCount","invisibleCharacterCount","nonBasicAsciiCharacterCount","forLoop","highlightReason","shouldHighlightNonBasicASCII","MAX_RESULT_LENGTH","computeUnicodeHighlightReason","primaryConfusable","notAmbiguousInLocales","confusableWith","allowedCodePoints","cp","isAllowedInvisibleCharacter","wordContext","hasBasicASCIICharacters","hasNonConfusableNonBasicAsciiCharacter","AccessibilityHelpNLS","InspectTokensNLS","GoToLineNLS","QuickHelpNLS","QuickCommandNLS","QuickOutlineNLS","StandaloneCodeEditorNLS","ToggleHighContrastNLS","StandaloneServicesNLS","noSelection","singleSelectionRange","singleSelection","multiSelectionRange","multiSelection","emergencyConfOn","openingDocs","readonlyDiffEditor","editableDiffEditor","readonlyEditor","editableEditor","changeConfigToOnMac","changeConfigToOnWinLinux","auto_on","auto_off","tabFocusModeOnMsg","tabFocusModeOnMsgNoKb","tabFocusModeOffMsg","tabFocusModeOffMsgNoKb","openDocMac","openDocWinLinux","outroMsg","showAccessibilityHelpAction","inspectTokensAction","gotoLineActionLabel","helpQuickAccessActionLabel","quickCommandActionLabel","quickCommandHelp","quickOutlineActionLabel","quickOutlineByCategoryActionLabel","editorViewAccessibleLabel","accessibilityHelpMessage","toggleHighContrast","bulkEditServiceSummary","AccessibilitySupport","CodeActionTriggerType","CompletionItemInsertTextRule","CompletionItemKind","CompletionItemTag","CompletionTriggerKind","ContentWidgetPositionPreference","CursorChangeReason","DefaultEndOfLine","EditorAutoIndentStrategy","EditorOption","EndOfLinePreference","EndOfLineSequence","KeyCode","MarkerSeverity","MarkerTag","MouseTargetType","OverlayWidgetPositionPreference","PositionAffinity","RenderLineNumbersType","RenderMinimap","ScrollType","ScrollbarVisibility","SelectionDirection","SymbolKind","SymbolTag","TextEditorCursorBlinkingStyle","TrackedRangeStickiness","WrappingIndent","ModelRawFlush","LineInjectedText","lastOriginalOffset","ModelRawLineChanged","ModelRawLinesDeleted","ModelRawLinesInserted","ModelRawEOLChanged","ModelRawContentChangedEvent","ModelInjectedTextChangedEvent","InternalModelContentChangeEvent","_mergeChangeEvents","HorizontalGuidesState","IndentGuide","IndentGuideHorizontalLine","LineTokens","decoder","_lineTokensBrand","_tokensCount","createEmpty","defaultMetadata","slicedEquals","sliceFromTokenIndex","sliceTokenCount","decodeLanguageId","SliceLineTokens","desiredIndex","insertTokens","nextOriginalTokenIdx","nextInsertTokenIdx","newTokens","nextOriginalTokenEndOffset","nextInsertToken","_startOffset","_endOffset","_deltaOffset","LineDecoration","_lineDecorationBrand","equalsArr","extractWrapped","lineDecorations","minLineColumn","_typeCompare","ORDER","typeCmp","DecorationSegment","Stack","stopOffsets","_metadata","consumeLowerThan","maxStopOffset","nextStartOffset","stopOffset","LineDecorationsNormalizer","currentStartOffset","currentEndOffset","LinePart","_linePartBrand","isPseudoAfter","LineRange","otherLineRange","RenderLineInput","fauxIndentLength","renderSpaceWidth","renderSpaceCharCode","sameSelection","otherSelections","DomPosition","CharacterMapping","partCount","_horizontalOffset","getPartIndex","partData","setColumnInfo","charOffsetToPartData","partLength","partDataToCharOffset","searchEntry","midEntry","minEntry","maxEntry","minPartIndex","minCharIndex","maxCharIndex","RenderLineOutput","_renderLineOutputBrand","renderViewLine","beforeCount","afterCount","lineDecoration","fontIsMonospace","isOverflowing","lastCharacterMappingDefined","charOffsetInPart","charHorizontalOffset","partDisplacement","partEndIndex","partType","partContainsRTL","partRendersWhitespace","partRendersWhitespaceWithWidth","partIsEmptyAndHasPseudoAfter","partWidth","_charIndex","_visibleColumn","isControlCharacter","lineContainsRTL","tokenContainsRTL","transformAndRemoveOverflowing","lastLinePart","extractControlCharacters","onlyBoundary","onlyTrailing","generateLinePartForEachWhitespace","tokensLength","lineIsEmptyOrWhitespace","wasInWhitespace","currentSelectionIndex","tmpIndent","isInWhitespace","generateWhitespace","lastCharCode","_applyRenderWhitespace","_lineDecorations","lineDecorationsLen","lineDecorationIndex","lastResultEndIndex","lastTokenEndIndex","_applyInlineDecorations","onlyAtSpaces","lastSpaceOffset","currTokenStart","piecesCount","pieceEndIndex","splitLargeTokens","ResolvedRenderLineInput","resolveRenderLineInput","RenderLineOutput2","renderViewLine2","Viewport","_viewportBrand","MinimapLinesRenderingData","ViewLineData","_viewLineDataBrand","ViewLineRenderingData","InlineDecoration","SingleLineInlineDecoration","ViewModelDecoration","_viewModelDecorationBrand","OverviewRulerDecorationsGroup","ColorZone","_colorZoneBrand","OverviewRulerZone","_overviewRulerZoneBrand","_colorZone","setColorZone","colorZone","getColorZones","OverviewZoneManager","getVerticalOffsetForLine","_getVerticalOffsetForLine","_colorZonesInvalid","_domWidth","_domHeight","_outerHeight","_pixelRatio","_lastAssignedId","_color2Id","_id2Color","newZones","colorZonesInvalid","totalHeight","halfMinimumHeight","allColorZones","offset1","offset2","ycenter","halfHeight","ViewModelDecorations","linesCollection","_decorationsCache","_cachedModelDecorationsResolver","_cachedModelDecorationsResolverViewRange","_clearCachedModelDecorationsResolver","_getOrCreateViewModelDecoration","modelDecoration","cacheIsValid","modelDecorations","decorationsInViewport","decorationsInViewportLen","isModelDecorationVisible","viewModelDecoration","inlineDecoration","intersectedStartLineNumber","intersectedEndLineNumber","isModelDecorationInComment","isModelDecorationInString","testTokensInRange","isFirstLine","isEndLine","tokenIdx","SelectionAnchorSet","SelectionAnchorController","selectionAnchorSetContextKey","modelChangeListener","setSelectionAnchor","goToSelectionAnchor","anchorPosition","selectFromAnchorToCursor","cancelSelectionAnchor","SetSelectionAnchor","_accessor","GoToSelectionAnchor","SelectFromAnchorToCursor","CancelSelectionAnchor","overviewRulerBracketMatchForeground","JumpToBracketAction","BracketMatchingController","jumpToBracket","SelectToBracketAction","selectBrackets","selectToBracket","BracketsData","_lastBracketsData","_lastVersionId","_updateBracketsSoon","_updateBrackets","_matchBrackets","newCursorPosition","enclosingBrackets","nextBracket","selectFrom","selectTo","_recomputeBrackets","bracketData","previousData","positionsLen","newData","newDataLen","previousIndex","previousLen","_DECORATION_OPTIONS_WITH_OVERVIEW_RULER","_DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER","bracketMatchBackground","bracketMatchBorder","MenubarGoMenu","MoveCaretCommand","isMovingLeft","_isMovingLeft","rangeBefore","rangeAfter","MoveCaretAction","TransposeLettersAction","middlePosition","beginPosition","leftChar","rightChar","replaceRange","CLIPBOARD_CONTEXT_MENU_GROUP","supportsCut","supportsCopy","supportsPaste","CutAction","SimpleEditorContext","CopyAction","submenu","MenubarCopy","EditorContextCopy","EditorContextShare","PasteAction","ExecCommandCopyWithSyntaxHighlightingAction","registerExecCommandImpl","browserCommand","clipboardService","clipboardText","codeActionCommandId","refactorCommandId","refactorPreviewCommandId","sourceActionCommandId","organizeImportsCommandId","fixAllCommandId","CodeActionItem","resolveCodeAction","ManagedCodeActionSet","documentation","allActions","codeActionsComparator","validActions","isPreferred","diagnostics","localeCompare","hasAutoFix","fix","QuickFix","emptyCodeActionsResponse","getCodeActions","rangeOrSelection","progress","codeActionContext","only","cts","providedCodeActionKinds","getCodeActionProviders","providedCodeActions","provideCodeActions","filteredActions","currentBest","getDocumentation","newProviders","allDocumentation","itemResolveCount","validatedRangeOrSelection","codeActionSet","triggerAction","includeSourceActions","resolving","resolveCount","Context","Visible","CodeActionAction","CodeMenuRenderer","acceptKeybindings","keybindingService","isSeparator","isDocumentation","lookupKeybinding","getLabel","CodeActionMenu","_contextMenuService","_telemetryService","_contextViewService","_showingActions","codeActionList","_visible","hasSeperator","_keybindingResolver","CodeActionKeybindingResolver","getKeybindings","_ctxMenuWidgetVisible","listRenderer","isCodeActionWidgetEnabled","_onListSelection","hideCodeActionWidget","_onListHover","focusedEnabledItem","currSelectedItem","renderCodeActionMenuList","inputArray","renderDisposables","renderMenu","menuBlock","currIsSeparator","documentationID","menuItem","getElementById","blurListener","navigateListWithKeysUp","navigateListWithKeysDown","onEnterSet","codeActionTelemetry","openedFromString","didCancel","CodeActions","codeActionFrom","validCodeActions","cancelled","codeActions","actionsToShow","includeDisabledActions","menuActions","getMenuActions","_toCoords","resolver","getResolver","Lightbulb","showContextMenu","domForShadowRoot","autoSelectFirstItem","getKeyBinding","toCodeActionAction","onSelectCodeAction","_getAdditionalMenuItems","cursorCoords","editorCoords","_keybindingProvider","allCodeActionBindings","codeActionCommands","resolvedKeybinding","commandArgs","SourceOrganizeImports","SourceFixAll","fromUser","binding","bestKeybindingForCodeAction","preferred","reduceRight","codeAction","LightBulbState","Hidden","Showing","widgetPosition","LightBulbWidget","_quickFixActionId","_preferredFixActionId","_keybindingService","_onClick","editorModel","_updateLightBulbTitleAndIcon","onDidUpdateKeybindings","atPosition","isFolded","effectiveLineNumber","_posPref","preferredKb","kb","editorBackgroundColor","editorLightBulbForegroundColor","editorLightBulbAutoFixForegroundColor","_CodeActionUi_disposed","CodeActionUi","quickFixActionId","preferredFixActionId","_activeCodeActions","previewOn","_codeActionWidget","applyCodeAction","_lightBulbWidget","showCodeActionList","fromLightbulb","receiver","__classPrivateFieldSet","onPreviewEnter","navigateList","navUp","__classPrivateFieldGet","validActionToApply","tryGetValidActionToApply","invalidAction","getInvalidActionThatWouldHaveBeenApplied","notAvailableMessage","autoApply","_CodeActionModel_isDisposed","SUPPORTED_CODE_ACTIONS","CodeActionOracle","_markerService","_signalChange","_autoTriggerTimer","onMarkerChanged","_onMarkerChanges","_onCursorChange","_getRangeOfSelectionUnlessWhitespaceEnclosed","_createEventAndSignalChange","_getRangeOfMarker","marker","markerRange","CodeActionsState","Triggered","_cancellablePromise","catch","emptyCodeActionSet","CodeActionModel","_progressService","_codeActionOracle","_onDidChangeState","onDidChangeState","_supportedCodeActions","supportedActions","showWhile","skipNotify","contextKeyForSupportedActions","refactorTrigger","userArgs","Refactor","triggerCodeActionsForEditorSelection","onlyIncludePreferredActions","argsSchema","defaultSnippets","QuickFixController","markerService","progressService","_ui","QuickFixAction","Id","AutoFixAction","retrigger","_applyCodeAction","_trigger","hideCodeActionMenu","navigateCodeActionList","selectedOption","selectedOptionWithPreview","showCodeActions","manualTriggerAtCurrentPosition","closeMessage","triggerPosition","ApplyCodeActionReason","FromCodeActions","codeActionReason","bulkEditService","telemetryService","codeActionTitle","codeActionKind","codeActionIsPreferred","quotableLabel","respectAutoSaveConfig","showPreview","asMessage","CodeActionCommand","RefactorAction","RefactorPreview","SourceAction","Source","OrganizeImportsAction","OrganizeImports","FixAllAction","FixAll","AutoFix","CodeActionContribution","tags","CodeActionKind","CodeActionTriggerSource","mayIncludeActionsOfKind","providedKind","excludes","excludesAction","filtersAction","actionKind","CodeActionCommandArgs","getKindFromUser","getApplyFromUser","getPreferredUser","defaultAutoApply","defaultKind","CodeLensModel","lenses","_disposables","symbol","getCodeLensModel","ordered","providerRanks","provideCodeLenses","resolveCodeLens","ICodeLensCache","CacheItem","CodeLensCache","storageService","_fakeProvider","raw","_deserialize","onWillSaveState","SHUTDOWN","_serialize","copyItems","copyModel","CodeLensViewZone","onHeight","_onHeight","_lastHeight","CodeLensContentWidget","_commands","_isEmpty","updatePosition","withCommands","hasSymbol","lens","getCommand","_widgetPosition","CodeLensHelper","_removeDecorations","_addDecorations","_addDecorationsCallbacks","resultingDecorations","CodeLensWidget","viewZoneChangeAccessor","updateCallback","codeLensData","_viewZone","_viewZoneId","_createContentWidgetIfNecessary","_contentWidget","updateCodeLensSymbols","computeIfNecessary","updateCommands","getLineNumber","CodeLensContribution","debounceService","_codeLensCache","_localToDispose","_lenses","_oldCodeLensModels","_provideCodeLensDebounce","_resolveCodeLensesDebounce","salt","_resolveCodeLensesScheduler","_resolveCodeLensesInViewport","_onModelChange","_updateLensStyle","_styleClassName","_localDispose","_currentCodeLensModel","_getLayoutInfo","lineHeightFactor","codeLensHeight","editorFontInfo","fontFamilyVar","fontFeaturesVar","newStyle","_getCodeLensModelPromise","_resolveCodeLensesPromise","cachedLenses","_renderCodeLensSymbols","cachedLensesNow","registration","scheduler","newDelay","_resolveCodeLensesInViewportSoon","decorationsAccessor","viewZonesAccessor","lastLensLineNumber","_disposeAllLenses","decChangeAccessor","lastGroup","viewZoneAccessor","codeLensIndex","groupsIndex","symbolsLineNumber","codeLensLineNumber","toResolve","resolvePromise","resolvedSymbols","quickInputService","codelensController","pick","canPickMany","getColorPresentations","colorInfo","provideColorPresentations","colorProviderRegistry","rawCIs","provideDocumentColors","ci","presentations","ColorDecorationInjectedTextMarker","ColorDetector","_decorationsIds","_colorDatas","_colorDecoratorIds","_ruleFactory","_colorDecorationClassRefs","RECOMPUTE_TIME","_isEnabled","onModelChanged","prevIsEnabled","removeAllDecorations","_timeoutTimer","_computePromise","deprecatedConfig","beginCompute","getColors","colorInfos","updateDecorations","updateColorDecorators","colorDatas","colorData","getColorData","isColorDecoration","ColorPickerModel","availableColorPresentations","presentationIndex","_onColorFlushed","onColorFlushed","_onDidChangeColor","onDidChangeColor","_onDidChangePresentation","onDidChangePresentation","originalColor","_colorPresentations","colorPresentations","selectNextColorPresentation","flushColor","guessColorPresentation","originalText","ColorPickerHeader","pickedColorNode","colorBox","ColorPickerBody","saturationBox","SaturationBox","onDidSaturationValueChange","opacityStrip","OpacityStrip","onDidOpacityChange","hueStrip","HueStrip","onDidHueChange","monitor","onDidChangePosition","pointerUpListener","paintSelection","paint","saturatedColor","whiteGradient","createLinearGradient","addColorStop","blackGradient","Strip","updateSliderPosition","onDidChangeTop","opaque","ColorPickerWidget","header","ColorHover","owner","forceShowAtRange","isValidForHoverAnchor","ColorHoverParticipant","hoverOrdinal","computeSync","computeAsync","_computeAsync","colorDetector","_createColorHover","renderHoverParts","hoverParts","colorHover","setColorPicker","updateEditorModel","textEdits","trackedRange","additionalTextEdits","updateColorPresentations","ColorContribution","mouseEvent","hoverController","ModesHoverController","isColorPickerVisible","showContentHover","BlockCommentCommand","_insertSpace","_usedEndToken","_haystackHasNeedleAtOffset","needleLength","_createOperationsForBlockComment","startToken","endToken","startLineText","endLineText","ops","endTokenIndex","startLineAfterStartToken","endLineBeforeEndToken","_createRemoveBlockCommentOperations","_createAddBlockCommentOperations","startTokenEditOperation","endTokenEditOperation","LineCommentCommand","ignoreFirstLine","_tabSize","_deltaColumn","_moveEndPositionDown","_ignoreEmptyLines","_ignoreFirstLine","_gatherPreflightCommentStrings","commentStr","ignore","commentStrOffset","commentStrLength","_analyzeLines","shouldRemoveComments","onlyWhitespaceLines","lineContentStartOffset","commentStrEndOffset","supported","_gatherPreflightData","_executeLineComments","_createRemoveLineCommentsOperations","_normalizeInsertionPoint","_createAddLineCommentsOperations","cursorPosition","_attemptRemoveBlockComment","startTokenAllowedBeforeColumn","_executeBlockComment","afterCommentStr","nextVisibleColumn","isTab","columnSize","minVisibleColumn","CommentLineAction","commentsOptions","BlockCommentAction","ContextMenuController","_menuService","_contextMenuIsBeingShownCount","getContextViewElement","_showScrollbarContextMenu","hasSelectionAtPosition","_getMenuActions","_doShowContextMenu","createMenu","addedItems","subActions","oldHoverSetting","getActionViewItem","_keybindingFor","customActionViewItem","wasCancelled","createAction","createEnumAction","configName","configuredValue","createRunner","updateValue","createSubmenuAction","ShowContextMenu","vscodeClipboardMime","CopyPasteController","_bulkEditService","_clipboardService","handleCopy","handlePaste","arePasteActionsEnabled","primarySelection","wasFromEmptySelection","documentPasteEditProvider","prepareDocumentPaste","setCopyMetadata","_currentClipboardItem","dataTransferPromise","rawMetadata","stopImmediatePropagation","originalDocVersion","tokenSource","readResources","pasteMimeTypes","provideDocumentPasteEdits","performSnippetEdit","insertText","additionalEdit","textDataTransfer","thisLen","StackElement","CursorUndoRedoController","_isCursorUndoRedo","_undoStack","_redoStack","prevState","cursorUndo","_applyState","cursorRedo","stackElement","CursorUndo","CursorRedo","DragAndDropCommand","targetPosition","targetSelection","hasTriggerModifier","DragAndDropController","_dndDecorationIds","_onEditorMouseDown","_onEditorMouseUp","_onEditorMouseDrag","_onEditorMouseDrop","_onEditorMouseDropCanceled","onEditorKeyDown","onEditorKeyUp","onEditorBlur","_mouseDown","_modifierPressed","_dragSelection","_removeDecoration","TRIGGER_KEY_VALUE","possibleSelections","showAt","_hitContent","_hitMargin","_DECORATION_OPTIONS","outlineService","getTopLevelSymbols","TreeElement","findId","candidateId","OutlineElement","OutlineGroup","OutlineModel","_groups","displayName","provideDocumentSymbols","_makeOutlineElement","newProvider","_compact","childInfo","roots","asListOfDocumentSymbols","_flattenDocumentSymbols","overrideContainerLabel","containerName","selectionRange","IOutlineModelService","OutlineModelService","debounces","promiseCnt","outlineModel","_err","DropIntoEditorController","workspaceContextService","documentOnDropEditProvider","DefaultOnDropProvider","initialModelVersion","ourDataTransfer","extractDataTransferData","withProgress","cancellable","provideDocumentOnDropEdits","textEditorDataTransfer","_workspaceContextService","urlListEntry","urlList","getUriListInsertText","textEntry","strUriList","uris","getWorkspaceFolder","rel","IEditorCancellationTokens","ctxCancellableOperation","removeFn","EditorKeybindingCancellationTokenSource","_unregister","EditorState","EditorStateCancellationTokenSource","TextModelCancellationTokenSource","FindDecorations","_overviewRulerApproximateDecorations","_findScopeDecorationIds","_rangeHighlightDecorationId","_highlightedDecorationId","_startPosition","_allDecorations","getFindScope","getFindScopes","findScopeDecorationId","newStartPosition","setCurrentFindMatch","_getDecorationIndex","getCurrentMatchesPosition","desiredRange","candidateOpts","_FIND_MATCH_DECORATION","_CURRENT_FIND_MATCH_DECORATION","nextMatch","newCurrentDecorationId","matchPosition","lineBeforeEnd","lineBeforeEndMaxColumn","_RANGE_HIGHLIGHT_DECORATION","findScopes","findMatchesOptions","newOverviewRulerApproximateDecorations","_FIND_MATCH_NO_OVERVIEW_DECORATION","approxPixelsPerLine","mergeLinesDelta","prevStartLineNumber","_FIND_MATCH_ONLY_OVERVIEW_DECORATION","newFindMatchesDecorations","findScope","_FIND_SCOPE_DECORATION","matchBeforePosition","matchAfterPosition","ReplaceAllCommand","editorSelection","replaceStrings","_editorSelection","_replaceStrings","_trackedEditorSelectionId","o1","o2","resultOps","buildReplaceStringWithCasePreserved","containsHyphens","validateSpecificSpecialCharacter","containsUnderscores","buildReplaceStringForSpecificSpecialCharacter","specialCharacter","splitPatternAtSpecialCharacter","splitMatchAtSpecialCharacter","replaceString","splitValue","StaticValueReplacePattern","staticValue","DynamicPiecesReplacePattern","ReplacePattern","fromStaticValue","ReplacePiece","hasReplacementPatterns","buildReplaceString","_substitute","caseOps","lenOps","opIdx","ReplacePieceBuilder","_lastCharIndex","_currentStaticPiece","emitUnchanged","toCharIndex","_emitStatic","emitStatic","emitMatchIndex","CONTEXT_FIND_WIDGET_VISIBLE","CONTEXT_FIND_INPUT_FOCUSED","CONTEXT_REPLACE_INPUT_FOCUSED","ToggleCaseSensitiveKeybinding","ToggleWholeWordKeybinding","ToggleRegexKeybinding","ToggleSearchScopeKeybinding","TogglePreserveCaseKeybinding","FIND_IDS","MATCHES_LIMIT","FindModelBoundToEditorModel","_startSearchingTimer","_updateDecorationsScheduler","research","_ignoreModelContentChanged","onFindReplaceStateChange","isReplaceRevealed","moveCursor","_getSearchRange","newFindScope","_findMatches","currentMatchesPosition","matchAfterSelection","changeMatchInfo","_moveToNextMatch","_hasMatches","matchesCount","_cannotFind","_setCurrentFindMatch","matchesPosition","_prevSearchPosition","isUsingLineStops","_moveToPrevMatch","isRecursed","canNavigateBack","nextMatchRange","prevMatchRange","prevMatch","moveToPrevMatch","_nextSearchPosition","canNavigateForward","_getNextMatch","forceMove","moveToNextMatch","_getReplacePattern","nextNextChCode","parseReplaceString","replacePattern","_executeEditorCommand","_largeReplaceAll","_regularReplaceAll","modelText","resultText","selectAllMatches","FindOptionsWidget","_hideSoon","inputActiveOptionBorderColor","inputActiveOptionForegroundColor","inputActiveOptionBackgroundColor","_keybindingLabelFor","isRevealed","_revealTemporarily","_applyTheme","actionId","inputStyles","widgetBackground","widgetForeground","widgetShadowColor","hcBorder","effectiveOptionValue","override","FindReplaceState","_onFindReplaceStateChange","_searchString","_replaceString","_isRevealed","_isReplaceRevealed","_isRegex","_isRegexOverride","_wholeWord","_wholeWordOverride","_matchCase","_matchCaseOverride","_preserveCase","_preserveCaseOverride","_searchScope","_matchesPosition","_matchesCount","_currentMatch","_loop","_isSearching","_filters","actualIsRegex","actualWholeWord","actualMatchCase","actualPreserveCase","currentMatch","updateHistory","isSearching","filters","oldEffectiveIsRegex","oldEffectiveWholeWords","oldEffectiveMatchCase","oldEffectivePreserveCase","newSearchScope","existingSearchScope","isRegexOverride","wholeWordOverride","matchCaseOverride","preserveCaseOverride","canNavigateInLoop","showHistoryKeybindingHint","getElectronAccelerator","findSelectionIcon","findCollapsedIcon","findExpandedIcon","findReplaceIcon","findReplaceAllIcon","findPreviousMatchIcon","findNextMatchIcon","NLS_FIND_INPUT_LABEL","NLS_FIND_INPUT_PLACEHOLDER","NLS_PREVIOUS_MATCH_BTN_LABEL","NLS_NEXT_MATCH_BTN_LABEL","NLS_TOGGLE_SELECTION_FIND_TITLE","NLS_CLOSE_BTN_LABEL","NLS_REPLACE_INPUT_LABEL","NLS_REPLACE_INPUT_PLACEHOLDER","NLS_REPLACE_BTN_LABEL","NLS_REPLACE_ALL_BTN_LABEL","NLS_TOGGLE_REPLACE_MODE_BTN_LABEL","NLS_MATCHES_COUNT_LIMIT_TITLE","NLS_MATCHES_LOCATION","NLS_NO_RESULTS","FIND_WIDGET_INITIAL_WIDTH","MAX_MATCHES_COUNT_WIDTH","ctrlEnterReplaceAllWarningPromptedKey","FindWidgetViewZone","stopPropagationForMultiLineUpwards","textarea","isMultiline","stopPropagationForMultiLineDownwards","FindWidget","codeEditor","_cachedHeight","_revealTimeouts","_codeEditor","_controller","_contextViewProvider","_storageService","_ctrlEnterReplaceAllWarningPrompted","getBoolean","_isReplaceVisible","_ignoreChangeEvent","_updateHistoryDelayer","_buildDomNode","_updateButtons","_tryUpdateWidgetWidth","_findInput","updateAccessibilitySupport","_showViewZone","_removeViewZone","_updateToggleSelectionFindButton","globalBufferTerm","getGlobalBufferTerm","_findInputFocused","_findFocusTracker","_updateSearchScope","_replaceInputFocused","_replaceFocusTracker","_replaceInput","_layoutViewZone","_tryUpdateHeight","setPreserveCase","_toggleSelectionFind","showRedOutline","_updateMatchesCount","_delayedUpdateHistory","_updateHistory","_closeBtn","findInputIsNonEmpty","_prevBtn","_nextBtn","_replaceBtn","_replaceAllBtn","_toggleReplaceBtn","setExpanded","canReplace","isSelectionMultipleLine","adjustEditorScrollTop","startCoords","startLeft","startTop","leftOfFindWidget","endCoords","focusTheEditor","targetScrollTop","viewZone","_getHeight","adjustScroll","scrollAdjustment","editorWidth","collapsedFindWidget","reducedFindWidget","narrowFindWidget","_resized","findInputWidth","totalheight","focusFindInput","focusReplaceInput","_onFindInputMouseDown","_onFindInputKeyDown","_onReplaceInputKeyDown","_sash","PART_WIDTH","focusOnPreserve","SimpleButton","onTrigger","findPart","actionsContainer","appendPreserveCaseLabel","getPreserveCase","onPreserveCaseKeyDown","replacePart","replaceActionsContainer","_resizeSash","originalWidth","currentWidth","expanded","addBackgroundColorRule","findMatchHighlightBorder","findMatchBorder","findRangeHighlightBorder","resizeBorderBackground","toolbarHoverBackgroundColor","focusOutline","SEARCH_STRING_MAX_LENGTH","getSelectionSearchString","seedSearchStringFromNonEmptySelection","CommonFindController","_findWidgetVisible","loadQueryState","shouldRestartFind","disposeModel","_start","forceRevealReplace","seedSearchStringFromGlobalClipboard","shouldFocus","shouldAnimate","updateSearchScope","saveQueryState","setGlobalBufferTerm","isFindInputFocused","getState","closeFindWidget","toggleCaseSensitive","toggleWholeWords","toggleRegex","togglePreserveCase","toggleSearchScope","setSearchString","ignoreWhenVisible","stateChanges","selectionSearchString","currentSelections","readFindText","writeFindText","FindController","_findOptionsWidget","_super","_createFindWidget","StartFindAction","findArgDescription","regexOverride","findInSelection","StartFindWithArgsAction","matchWholeWord","isCaseSensitive","StartFindWithSelectionAction","MatchFindAction","NextMatchFindAction","PreviousMatchFindAction","SelectionMatchFindAction","NextSelectionMatchFindAction","PreviousSelectionMatchFindAction","StartFindReplaceAction","findInputFocused","FindCommand","not","MAX_LINE_NUMBER","MASK_INDENT","BitField","numWords","arrayIndex","bit","FoldingRegions","startIndexes","endIndexes","sourceAbbr","_startIndexes","_endIndexes","_collapseStates","_userDefinedStates","_recoveredStates","_types","_parentsComputed","ensureParentIndices","parentIndexes","isInsideLast","parentIndex","getType","hasTypes","isCollapsed","setCollapsed","isUserDefined","setUserDefined","isRecovered","setRecovered","getSource","setSource","setCollapsedAllOfType","toRegion","FoldingRegion","getParentIndex","findRange","toFoldRange","fromFoldRanges","rangesLength","gotTypes","regions","sanitizeAndMerge","rangesA","rangesB","MAX_VALUE","getIndexedFunction","getA","getB","indexA","indexB","nextA","nextB","stackedRanges","topStackedRange","resultRanges","useRange","scanIndex","prescanB","regionIndex","containedBy","containsLine","FoldingModel","decorationProvider","_updateEventEmitter","_regions","_editorDecorationIds","toggleCollapseState","toggledRegions","processed","dirtyRegionEndLine","lastHiddenLine","updateDecorationsUntil","isManual","getDecorationOption","region","editorDecorationId","newCollapseState","collapseStateChanged","removeManualRanges","newFoldingRanges","foldRange","updatePost","newRegions","blockedLineNumers","foldedOrManualRanges","_currentFoldedOrManualRanges","newEditorDecorations","isBlocked","blockedLineNumber","foldedRanges","decRange","getMemento","checksum","_getLinesChecksum","applyMemento","rangesToRestore","lineNumber1","lineNumber2","getAllRegionsAtLine","getRegionAtLine","getRegionsInside","levelStack","setCollapseStateLevelsDown","foldingModel","doCollapse","levels","toToggle","regionsInside","setCollapseStateLevelsUp","setCollapseStateForRest","blockedLineNumbers","filteredRegions","filteredRegion","setCollapseStateForMatchingLines","regExp","setCollapseStateForType","HiddenRangeModel","_hasLineChanges","_foldingModel","_foldingModelListener","updateHiddenRanges","_hiddenRanges","hiddenRanges","notifyChangeModelContent","updateHiddenAreas","newHiddenAreas","lastCollapsedStart","lastCollapsedEnd","applyHiddenRanges","hasRanges","adjustSelections","hasChanges","adjustLine","isInside","adjustedStartLine","adjustedEndLine","IndentRangeProvider","maxFoldingRegions","cancelationToken","notifyTooManyRegions","foldingRangesLimit","RangesCollector","previousRegions","endAbove","insertFirst","toIndentRanges","computeRanges","_notifyTooManyRegions","_indentOccurrences","_foldingRangesLimit","maxIndent","foldingExpandedIcon","foldingCollapsedIcon","foldingManualCollapsedIcon","foldingManualExpandedIcon","FoldingDecorationProvider","showFoldingHighlights","HIDDEN_RANGE_DECORATION","MANUALLY_COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION","MANUALLY_COLLAPSED_VISUAL_DECORATION","COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION","COLLAPSED_VISUAL_DECORATION","MANUALLY_EXPANDED_AUTO_HIDE_VISUAL_DECORATION","EXPANDED_AUTO_HIDE_VISUAL_DECORATION","MANUALLY_EXPANDED_VISUAL_DECORATION","EXPANDED_VISUAL_DECORATION","foldingContext","SyntaxRangeProvider","handleFoldingRangesChange","cancellationToken","rangeData","provideFoldingRanges","nLines","rank","collectSyntaxRanges","sorted","sanitizeRanges","_nestingLevels","_nestingLevelCounts","maxLevel","CONTEXT_FOLDING_ENABLED","FoldingController","_tooManyRegionsNotified","localToDispose","_useFoldingProviders","_unfoldOnClickAfterEndOfLine","_restoringViewState","_currentModelHasFoldedImports","_foldingImportsByDefault","_maxFoldingRegions","updateDebounceInfo","foldingRangeProvider","hiddenRangeModel","rangeProvider","foldingRegionPromise","foldingModelPromise","updateScheduler","cursorChangedScheduler","mouseDownInfo","foldingDecorationProvider","foldingEnabled","notify","triggerFoldingModelChanged","onFoldingStrategyChanged","collapsedRegions","foldedImports","hr","onHiddenRangesChanges","onEditorMouseDown","onEditorMouseUp","getRangeProvider","foldingProviders","getFoldingModel","foldingRanges","selectionLineNumbers","iconClicked","offsetLeftInGutter","otherRegion","toMaybeToggle","recursive","FoldingAction","foldingController","getSelectedLines","getLineNumbers","selectionLines","foldingArgumentsConstraint","foldingArgs","FoldLevelAction","getFoldingLevel","ID_PREFIX","_foldingController","foldLevel","setCollapseStateAtLevel","_args","setCollapseStateUp","selectedLines","foldingRegion","parentFoldingIdx","getParentFoldLine","expectedParentIndex","getPreviousFoldLine","getNextFoldLine","collapseRanges","foldBackgroundBackground","editorFoldForeground","foldBackground","editorFoldColor","EditorFontZoomIn","EditorFontZoomOut","EditorFontZoomReset","ExtensionIdentifier","_lower","alertFormattingEdits","getRealAndSyntheticDocumentFormattersOrdered","docFormatter","formatter","extensionId","rangeFormatter","provideDocumentFormattingEdits","provideDocumentRangeFormattingEdits","FormattingConflicts","setFormatterSelector","_selectors","formatDocumentRangesWithSelectedProvider","editorOrModel","rangeOrRanges","documentRangeFormattingEditProviderRegistry","selected","formatDocumentRangesWithProvider","workerService","computeEdits","hasIntersectingEdit","mergedA","acc","otherEdit","allEdits","rawEditsList","mergedRange","rawEdits","minimalEdits","computeMoreMinimalEdits","formatDocumentWithSelectedProvider","formatDocumentWithProvider","getOnTypeFormattingEdits","onTypeFormattingEditProvider","autoFormatTriggerCharacters","provideOnTypeFormattingEdits","resolverService","getDocumentRangeFormattingEditsUntilResult","getDocumentFormattingEditsUntilResult","FormatOnType","_workerService","_sessionDisposables","triggerChars","unbind","FormatOnPaste","_callOnDispose","_callOnModel","FormatDocumentAction","FormatSelectionAction","FormattingEdit","_handleEolEdits","newEol","singleEdits","_isFullModelReplaceEdit","_edits","addUndoStops","MarkerCoordinate","MarkerList","resourceFilter","_configService","_dispoables","_markers","_nextIdx","_resourceFilter","compareOrder","compareMarker","updateMarker","severities","_initIdx","fwd","resetIndex","oldIdx","IMarkerNavigationService","MarkerNavigationService","getMarkerList","SeverityIcon","errorIconForeground","errorCodiconSelector","warningIconForeground","warningCodiconSelector","infoIconForeground","infoCodiconSelector","MessageWidget","onRelatedInformation","_openerService","_labelService","_longestLineLength","_relatedDiagnostics","_messageBlock","_relatedBlock","related","relatedInformation","sourceAndCodeLength","lastLineElement","detailsElement","sourceElement","codeElement","_codeLink","allowCommands","relatedInformationNode","relatedResource","getUriBasenameLabel","getUriLabel","relatedMessage","getHeightInLines","severityLabel","Hint","MarkerNavigationWidget","showArrow","showFrame","isAccessible","frameWidth","_onDidSelectRelatedInformation","onDidSelectRelatedInformation","_severity","editorMarkerNavigationBackground","editorMarkerNavigationError","headerBackground","editorMarkerNavigationErrorHeader","editorMarkerNavigationWarning","editorMarkerNavigationWarningHeader","editorMarkerNavigationInfo","editorMarkerNavigationInfoHeader","frameColor","headerBg","arrowColor","headerBackgroundColor","primaryHeadingColor","peekView","secondaryHeadingColor","_applyStyles","_parentContainer","_fillHead","_actionbarWidget","TitleMenu","_fillTitleIcon","_fillBody","_message","showAtMarker","markerIdx","markerCount","computeRequiredHeight","setTitle","toSeverity","showStale","_relayout","_doLayoutBody","heightInPixel","widthInPixel","_heightInPixel","_onWidth","errorDefault","warningDefault","infoDefault","MarkerController","_markerNavigationService","_editorService","_sessionDispoables","_widgetVisible","CONTEXT_MARKERS_NAVIGATION_VISIBLE","_cleanUp","_getOrCreateModel","reusePosition","onDidClose","openCodeEditor","revealIfOpened","focusEditor","nagivate","multiFile","otherEditor","selectionRevealType","MarkerNavigationAction","_next","_multiFile","NextMarkerAction","LABEL","PrevMarkerAction","MarkerCommand","ctxHasSymbols","ISymbolNavigationService","SymbolNavigationService","_currentModel","_currentIdx","_ignoreEditorChange","_ctxHasSymbols","_currentState","_currentMessage","refModel","editorState","seenUri","seenPosition","revealNext","registerCommandAndKeybindingRule","editorService","onCodeEditorRemove","_onDidRemoveEditor","onCodeEditorAdd","_onDidAddEditor","listCodeEditors","EditorContextPeek","_goToActionIds","registerGoToAction","SymbolNavigationAnchor","SymbolNavigationAction","symbolNavService","_getLocationModel","altAction","ariaMessage","referenceAt","altActionId","_getAlternativeCommand","_activeAlternativeCommands","referenceCount","muteMessage","_getNoResultFoundMessage","_onResult","_getGoToPreference","openInPeek","firstReference","targetEditor","_openReference","openToSide","_openInPeek","sideBySide","selectionSource","modelNow","toggleWidget","DefinitionAction","goToDefinitionKb","GoToDefinitionAction","registerCommandAlias","OpenDefinitionToSideAction","PeekDefinitionAction","notInPeekEditor","DeclarationAction","GoToDeclarationAction","TypeDefinitionAction","GoToTypeDefinitionAction","PeekTypeDefinitionAction","ImplementationAction","GoToImplementationAction","PeekImplementationAction","ReferencesAction","GenericGoToLocationAction","_references","_gotoMultipleBehaviour","noResultsMessage","appendMenuItems","getLocationLinks","provide","getDefinitionsAtPosition","provideDefinition","getDeclarationsAtPosition","provideDeclaration","getImplementationsAtPosition","provideImplementation","getTypeDefinitionsAtPosition","provideTypeDefinition","getReferencesAtPosition","provideReferences","includeDeclaration","resultWithoutDeclaration","_sortedAndDeduped","rawLinks","modelLinks","hasModifier","ClickLinkMouseEvent","triggerModifier","hasSideBySideModifier","triggerSideBySideModifier","isNoneOrSingleMouseDown","ClickLinkKeyboardEvent","keyCodeIsTriggerKey","triggerKey","keyCodeIsSideBySideKey","triggerSideBySideKey","ClickLinkOptions","createOptions","ClickLinkGesture","_onMouseMoveOrRelevantKeyDown","onMouseMoveOrRelevantKeyDown","_onExecute","onExecute","_onCancel","onCancel","_lastMouseMoveEvent","_hasTriggerKeyOnMouseDown","_lineNumberOnMouseDown","_onEditorMouseMove","_onEditorKeyDown","_onEditorKeyUp","_resetHandler","currentLineNumber","GotoDefinitionAtPositionEditorContribution","textModelResolverService","toUnhook","toUnhookForKeyboard","currentWordAtPosition","previousPromise","linkDecorations","linkGesture","startFindDefinitionFromMouse","gotoDefinition","removeLinkDecorations","startFindDefinitionFromCursor","startFindDefinition","withKey","findDefinition","previewValue","getPreviewValue","wordRange","guessLanguageIdByFilepathOrFirstLine","rangeToUse","MAX_SOURCE_PREVIEW_LINES","getPreviewRangeBasedOnIndentation","stripIndentationFromPreviewRange","previewRange","minIndent","endIndent","startIndent","canPeek","isInPeekEditor","inPeekEditor","activeLinkForeground","DataSource","_resolverService","hasChildren","getChildren","Delegate","FileReferencesRenderer","OneReferenceRenderer","StringRepresentationProvider","getPreview","IdentityProvider","FileReferencesTemplate","badge","filterData","OneReferenceTemplate","AccessibilityProvider","DecorationsManager","_decorationIgnoreSet","_callOnModelChange","_onModelChanged","_onDecorationChanged","newDecorationsActualIndex","oneReference","LayoutData","ReferencesTree","ReferenceWidget","_defaultTreeKeyboardSupport","layoutData","_textModelResolverService","_peekViewService","_uriLabel","isResizeable","supportOnTitleClick","_disposeOnNewModel","_onDidSelectReference","onDidSelectReference","_dim","addExclusiveWidget","_preview","_previewNotAvailableMessage","_previewModelReference","_splitView","where","focusOnReferenceTree","focusOnPreviewEditor","isPreviewEditorFocused","_onTitleClick","_getFocusedReference","containerElement","setCssClass","_messageContainer","_previewContainer","_treeContainer","treeOptions","openOnSingleClick","selectionNavigation","overrideStyles","_revealReference","onDidOpen","newModel","_onNewModel","_decorationsManager","onDidChangeReferenceRange","setInput","revealReference","revealParent","_revealedReference","getInput","expand","ctxReferenceSearchVisible","ReferencesController","_requestIdPool","_ignoreModelChangeEvent","_referenceSearchVisible","modelPromise","peekMode","closeWidget","_peekMode","storageKey","openReference","_gotoReference","requestId","setMetaTitle","nearestReference","changeFocusBetweenPreviewAndReferences","goToNextOrPreviousReference","currentPosition","nextOrPreviousReference","editorFocus","previewEditorFocus","openedEditor","withController","outerEditor","negate","lastFocusedList","OneReference","isProviderFirst","_rangeCallback","FilePreview","_modelReference","beforeRange","afterRange","inside","FileReferences","_previews","ReferencesModel","_onDidChangeReferenceRange","_links","_title","providersFirst","_compareReferences","oneRef","nearest","prefixLen","offsetDist","HoverProviderResult","getHover","provideHover","hasRange","hasHtmlContent","contents","executeProvider","getHoverPromise","HoverWidget","contentsDomNode","onContentsChanged","HoverAction","actionOptions","keybindingLabel","actionContainer","iconClass","HoverResult","hasLoadingMessage","HoverOperation","_computer","onResult","_firstWaitScheduler","_triggerAsyncComputation","_secondWaitScheduler","_triggerSyncComputation","_loadingMessageScheduler","_triggerLoadingMessage","_asyncIterable","_asyncIterableDone","_hoverTime","_firstWaitTime","_secondWaitTime","_loadingMessageTime","fireResult","_fireResult","ContentHoverController","ContentHoverWidget","_messages","_messagesAreComplete","_participants","participant","p1","p2","ContentHoverComputer","_hoverOperation","_withResult","_onModelDecorationsChanged","_renderMessages","maybeShowAt","anchorCandidates","suggestHoverAnchor","_startShowingAt","startShowingAtRange","canAdoptVisibleHover","filteredMessages","containsNode","_addLoadingMessage","createLoadingMessage","loadingMessage","messages","showAtPosition","showAtRange","highlightRange","computeHoverRanges","statusBar","EditorHoverStatusBar","colorPicker","hoverElement","hasChildNodes","highlightDecoration","ContentHoverVisibleData","anchorRange","anchorLineNumber","renderStartColumn","renderEndColumn","preferAbove","stoleFocus","_hoverVisibleKey","_hover","_visibleData","_layout","_updateFont","_setVisibleData","getContextKeyValue","visibleData","getElementsByClassName","extraBottomPadding","_hasContent","actionsElement","addAction","_anchor","_shouldFocus","_getLineDecorations","MarginHoverWidget","openerService","_renderDisposeables","_markdownRenderer","MarginHoverComputer","startShowingAt","markdownHoverElement","hoverContentsElement","renderedContents","_updateContents","_showAt","topForLineNumber","editorScrollTop","toHoverMessage","MarkerHover","markerCodeActionTrigger","QuickFixHover","MarkerHoverParticipant","recentMarkerCodeActionsInfo","getMarker","renderMarkerHover","markerHoverForStatusbar","renderMarkerStatusbar","markerHover","markerElement","messageElement","sourceAndCodeElement","codeLink","opacity","relatedInfoContainer","marginTop","fromUserGesture","quickfixPlaceholderElement","makeKey","hasCodeActions","updatePlaceholderDisposable","codeActionsPromise","showing","elementPosition","linkFg","activeLinkFg","_toUnhook","_isMouseDown","_hoverClicked","_glyphWidget","_hookEvents","_didChangeConfigurationHandler","_unhookEvents","hoverOpts","_isHoverEnabled","_isHoverSticky","_onEditorMouseLeave","_hideWidgets","_onEditorScrollChanged","targetEm","_getOrCreateContentWidget","ShowHoverAction","ShowDefinitionPreviewHoverAction","goto","editorHoverHighlightColor","hoverBackground","hoverBorder","linkHover","hoverForeground","actionsBackground","codeBackground","HoverRangeAnchor","lastAnchor","HoverForeignElementAnchor","HoverParticipantRegistry","MarkdownHover","MarkdownHoverParticipant","maxTokenizationLineLength","renderMarkdownHovers","hoverPart","onDidRenderAsync","InPlaceReplaceCommand","originalSelection","_editRange","_originalSelection","InPlaceReplaceController","editorWorkerService","currentRequest","modelURI","canNavigateValueSet","navigateValueSet","DECORATION","decorationRemover","InPlaceReplaceUp","InPlaceReplaceDown","getSpaceCnt","generateIndent","getReindentEditOperations","inheritedIndent","indentEdits","globalIndent","adjustedLineContent","oldIndentation","idealIndentForNextLine","IndentationToSpacesAction","modelOpts","IndentationToSpacesCommand","IndentationToTabsAction","IndentationToTabsCommand","ChangeIndentationSizeAction","creationOpts","picks","autoFocusIndex","activeItem","IndentUsingTabs","IndentUsingSpaces","DetectIndentation","ReindentLinesAction","ReindentSelectedLinesAction","AutoIndentOnPasteCommand","selectionIsSet","AutoIndentOnPaste","callOnDispose","callOnModel","shouldIgnoreLine","firstLineText","indentOfFirstLine","newSpaceCnt","newIndent","indentMetadata","indentOfSecondLine","newSpaceCntOfSecondLine","oldSpaceCntOfSecondLine","spaceCntOffset","originalIndent","newSpacesCnt","cmd","firstNonWhitespaceTokenIndex","getIndentationEditOperations","tabsToSpaces","spacesRegExp","originalIndentationRange","originalIndentation","selectionId","InlayHintAnchor","InlayHintItem","hint","_currentResolve","resolveInlayHint","_doResolve","newHint","InlayHintsFragments","hints","_getRangeAtPosition","provideInlayHints","showGoToContextMenu","contextMenuService","getMenuItems","box","goToDefinitionWithLocation","isInPeek","InlayHintsCache","IInlayHintsCache","RenderedInlayHintLabelPart","ActiveInlayHintInfo","InlayHintsController","_featureDebounce","_inlayHintsCache","_instaService","_decorationsMetadata","_activeRenderMode","_debounceInfo","_removeAllDecorations","_updateHintsDecorators","_cacheHintsForFastRestore","watchedProviders","myToken","_getHintsRanges","onDidChangeInlayHints","defaultMode","altMode","newRenderMode","copies","_copyInlayHintsWithCurrentAnchor","_installDblClickGesture","_installLinkGesture","_installContextMenu","gesture","sessionStore","labelPart","_getInlayHintLabelPart","_activeInlayHintPart","lineHints","_getInlineHintsForRange","_invokeCommand","updateInlayHints","extendedRange","newDecorationsData","addInjectedText","classNameRef","addInjectedWhitespace","isLast","marginRule","isUniform","isFirst","cssProperties","verticalAlign","_fillInColors","borderRadius","_MAX_DECORATORS","decorationIdsToReplace","newDecorationIds","Parameter","Type","editorFontSize","editorFontFamily","InlayHintsHoverAnchor","InlayHintsHover","itemTooltip","partTooltip","linkHint","_resolveInlayHintLabelPartHover","inlineSuggestCommitId","PositionOffsetTransformer","lineStartOffsetByLineIdx","getOffset","GhostText","additionalReservedLineCount","renderForScreenReader","lastPart","transformer","offsetEdits","GhostTextPart","GhostTextReplacement","columnStart","BaseGhostTextWidgetModel","_expanded","minimizeInlineCompletion","inlineCompletion","valueToReplace","commonPrefixLen","remainingValueToReplace","commonSuffixLen","snippetInfo","filterText","inlineCompletionToGhostText","previewSuffixLength","sourceLine","sourceIndentationLength","suggestionAddedIndentationLength","replacedIndentation","rangeThatDoesNotReplaceIndentation","suggestionWithoutIndentationChange","valueToBeReplaced","originalValue","lastRequest","smartDiff","deletedChars","deletedCharacters","newChanges","cachingDiff","filteredChanges","previewStartInCompletionText","insertColumn","nonPreviewTextEnd","nonPreviewText","italicText","smartBracketMatching","getMaxCharCode","maxCharCode","getUniqueCharCode","elements1","elements2","StaticTokenizerSource","InlineCompletionsModel","completionSession","active","debounceValue","inlineCompletionsProvider","onDidExecuteCommand","handleUserInput","session","startSessionIfTriggered","ghostText","minReservedLineCount","setActive","scheduleAutomaticUpdate","triggerKind","Explicit","ensureUpdateWithExplicitContext","InlineCompletionsSession","takeOwnership","commitCurrentSuggestion","commitCurrentCompletion","showNext","showNextInlineCompletion","showPrevious","showPreviousInlineCompletion","hasMultipleInlineCompletions","shouldUpdate","initialTriggerKind","lastCompletionItem","updateOperation","updateSoon","filteredCompletions","currentlySelectedCompletionId","currentCompletion","sourceInlineCompletion","sourceProvider","handleItemDidShow","sourceInlineCompletions","updateRanges","updateFilteredInlineCompletions","completions","synchronizedRange","cursorPosIndex","filterTextBefore","filterTextAfter","originalValueBefore","originalValueAfter","trimStart","fixAndGetIndexOfCurrentSelection","semanticId","currentCachedCompletion","newIdx","toLiveInlineCompletion","provideInlineCompletions","selectedSuggestionInfo","UpdateOperation","SnippetController2","flatMap","SynchronizedInlineCompletionsCache","completionsSource","isDisposing","CachedInlineCompletion","abbreviation","defaultReplaceRange","getDefaultRange","freeInlineCompletions","itemsByHash","completeBracketPairs","closeBrackets","trackedItem","slicedTokens","processNode","closingTokenText","fixBracketsInLine","SuggestWidgetInlineCompletionProvider","suggestControllerPreselector","isSuggestWidgetVisible","isShiftKeyPressed","_currentSuggestItemInfo","setInactiveDelayed","suggestController","SuggestController","registerSelector","suggestItems","normalizedItemToPreselect","suggestItem","inlineSuggestItem","suggestionToSuggestItemInfo","normalizedSuggestItem","normalizedInlineCompletion","rangeToTest","valid","isBoundToSuggestWidget","bindToSuggestWidget","onDidShow","onDidHide","onDidTrigger","selectedItem","newActive","newInlineCompletion","getSuggestItemInfo","shouldFire","completionItemKind","isSnippetText","normalizedInlineCompletionsEquals","getFocusedItem","stopForceRenderingAbove","forceRenderingAbove","toggleMode","insertTextRules","adjustWhitespace","getOverwriteInfo","overwriteBefore","overwriteAfter","SuggestWidgetPreviewModel","suggestionInlineCompletionSource","updateCacheSoon","updateCache","newGhostText","isSuggestionPreviewEnabled","completionKind","augmentedCompletion","suggestWidgetState","suggestInlineCompletion","isAugmentedCompletionValid","finalCompletion","inlineCompletionPreviewLength","toGhostText","DelegatingModel","hasCachedGhostText","currentModelRef","targetModel","setTargetModel","cachedGhostText","GhostTextModel","sharedCache","SharedInlineCompletionCache","suggestWidgetAdapterModel","inlineCompletionsModel","updateModel","activeInlineCompletionsModel","shouldShowHoverAt","hoverRange","triggerInlineCompletion","commitInlineCompletion","hideInlineCompletion","GhostTextWidget","partsWidget","DecorationsWidget","additionalLinesWidget","AdditionalLinesWidget","viewMoreContentWidget","replacementDecoration","DisposableDecorations","shouldShowHoverAtViewZone","inlineTexts","additionalLines","addToAdditionalLines","setDecorations","textBufferLine","hiddenTextStartColumn","setParts","updateLines","renderViewMoreLines","remainingLinesLength","spacer","newline","disposableStore","ViewMoreLinesContentWidget","hiddenText","hiddenTextDecorations","GhostTextController","triggeredExplicitly","activeController","activeModelDidChangeEmitter","updateModelController","activeModel","suggestOptions","inlineSuggestOptions","ActiveGhostTextController","inlineSuggestionVisible","inlineSuggestionHasIndentation","inlineSuggestionHasIndentationLessThanTabSize","GhostTextContextKeys","inlineCompletionVisible","inlineCompletionSuggestsIndentation","inlineCompletionSuggestsIndentationLessThanTabSize","contextKeys","updateContextKeys","startsWithIndentation","startsWithIndentationLessThanTabSize","firstNonWsIdx","ShowNextInlineSuggestionAction","ShowPreviousInlineSuggestionAction","TriggerInlineSuggestionAction","InlineCompletionsHover","hasMultipleSuggestions","InlineCompletionsHoverParticipant","renderScreenReaderText","InlineCompletionsActions","previousAction","nextAction","inlineSuggestionAvailable","replaceChildren","GhostTextCommand","commitInlineSuggestionAction","ExpandLineSelectionAction","TrimTrailingWhitespaceCommand","cursorIndex","cursorLen","minEditColumn","trimTrailingWhitespace","CopyLinesCommand","isCopyingDown","noop","_isCopyingDown","_noop","_selectionDirection","_startLineNumberDelta","_endLineNumberDelta","sourceLines","sourceText","MoveLinesCommand","isMovingDown","_isMovingDown","_autoIndent","_moveEndLineSelectionShrink","buildIndentConverter","otherLineNumber","movingLineNumber","movingLineText","insertingText","shouldAutoIndent","movingLineMatchResult","matchEnterRule","indentUtils","trimLeft","indentOfMovingLine","matchEnterRuleMovingDown","getIndentEditsOfMovingBlock","newIndentatOfMovingBlock","oldSpaceCnt","oldIndent","parseEnterResult","enter","enterPrefix","indentMetadataOfMovelingLine","futureAboveLineNumber","futureAboveLineText","validPrecedingLine","oneLineAbove","languageAtSelectionStart","SortLinesCommand","descending","getCollator","_COLLATOR","Intl","Collator","getSortData","sortLines","canRun","linesToSort","AbstractCopyLinesAction","DuplicateSelectionAction","insertSelection","AbstractMoveLinesAction","AbstractSortLinesAction","SortLinesAscendingAction","SortLinesDescendingAction","DeleteDuplicateLinesAction","linesDeleted","uniqueLines","selectionToReplace","adjustedSelectionStart","finalSelection","TrimTrailingWhitespaceAction","DeleteLinesAction","_getLinesToRemove","mergedOperations","previousOperation","IndentLinesAction","OutdentLinesAction","InsertLineBeforeAction","InsertLineAfterAction","AbstractDeleteAllToBoundaryAction","rangesToDelete","_getRangesToDelete","effectiveRanges","nextRange","_getEndCursorState","DeleteAllLeftAction","endPrimaryCursor","newStartLine","deleteFromLine","deleteFromColumn","DeleteAllRightAction","JoinLinesAction","reducedSelections","lastSelection","lineOffset","selectionEndPositionOffset","trimmedLinesContent","firstNonWhitespaceIdx","lineTextWithoutIndent","resultSelection","TransposeAction","AbstractCaseAction","_modifyText","UpperCaseAction","toLocaleUpperCase","LowerCaseAction","toLocaleLowerCase","BackwardsCompatibleRegExp","_pattern","_flags","_evaluated","TitleCaseAction","titleBoundary","SnakeCaseAction","caseBoundary","singleLetters","KebabCaseAction","underscoreBoundary","CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE","DECORATION_CLASS_NAME","LinkedEditingContribution","_syncRangesToken","_providers","linkedEditingRangeProvider","_visibleContextKey","_currentDecorations","_languageWordPattern","_currentWordPattern","_rangeUpdateTriggerPromise","_rangeSyncTriggerPromise","_currentRequest","_currentRequestPosition","_currentRequestModelVersion","reinitialize","forceRefresh","clearRanges","rangeUpdateScheduler","triggerRangeUpdate","_debounceDuration","rangeSyncScheduler","triggerRangeSync","_syncRanges","referenceRange","referenceValue","mirrorRange","rangeStartColumn","rangeEndColumn","response","getLinkedEditingRanges","foundReferenceRange","LinkedEditingAction","LinkedEditingCommand","orderedByScore","provideLinkedEditingRanges","editorLinkedEditingBackground","editorLinkedEditingBackgroundColor","Link","_link","resolveLink","LinksList","tuples","newLinks","_union","oldLinks","oldLen","newLen","oldLink","newLink","getLinks","lists","provideLinks","linkProvider","LinkDetector","debounceInformation","computeLinks","computeLinksNow","computePromise","activeLinksList","currentOccurrences","activeLinkDecorationId","clickLinkGesture","cleanUpActiveLinkDecoration","useMetaKey","occurence","LinkOccurrence","occurrence","getLinkOccurrence","activate","deactivate","openLinkOccurrence","modelUri","parsedUri","allowContributedOpeners","fromWorkspace","messageOrError","currentOccurrence","general","_getOptions","executeCmd","nativeLabel","getHoverMessage","OpenLinkAction","linkDetector","__marked_exports","deps","amd","_defineProperties","_arrayLikeToArray","_createForOfIteratorHelperLoose","allowArrayLike","it","minLen","_unsupportedIterableToArray","getDefaults","baseUrl","breaks","gfm","headerIds","headerPrefix","langPrefix","mangle","pedantic","sanitizer","silent","smartLists","smartypants","walkTokens","xhtml","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","encode","unescapeTest","unescape","opt","nonWordAndColonTest","originIndependentUrl","cleanUrl","prot","baseUrls","justDomain","relativeBase","domain","resolveUrl","encodeURI","noopTest","splitCells","tableRow","cells","invert","suffLen","currChar","checkSanitizeDeprecation","repeatString","outputLink","cap","lexer","inLink","inlineTokens","Tokenizer","_proto","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentCodeCompensation","lang","heading","trimmed","blockquote","blockTokens","istask","ischecked","blankLine","endsWithBlankLine","nextLine","rawLine","itemContents","endEarly","bull","isordered","loose","itemRegex","nextBulletRegex","hrRegex","trimRight","spacers","hasMultipleLineBreaks","pre","align","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","_escapes","reflink","nolink","emStrong","maskedSrc","prevChar","lDelim","punctuation","rDelim","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","inlineText","_paragraph","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","endAst","endUnd","em","_extended_email","Lexer","inlineQueue","lex","lexInline","Constructor","staticProps","lastToken","cutSrc","lastParagraphClipped","tabs","extTokenizer","startBlock","Infinity","tempSrc","tempStart","getStartIndex","errMsg","_this2","keepPrevChar","startInline","Renderer","_code","infostring","_html","slugger","slug","listitem","checkbox","tablerow","tablecell","image","TextRenderer","Slugger","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","textRenderer","parseInline","l3","cell","itemBody","parser","marked","newDefaults","use","hasExtensions","childTokens","pack","prevRenderer","_len3","_key3","_loop2","prevTokenizer","_len4","_key4","_walkTokens","_loop3","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","globalThis","resolveWithBaseUri","baseUri","sanitizeRenderedMarkdown","renderedMarkdown","allowedSchemes","getSanitizerOptions","dompurify","MarkdownRenderer","_onDidRenderAsync","markedOptions","_uriMassage","isDomUri","codeBlocks","codeBlockRenderer","onAuxClick","dataset","markdownHtmlDoc","querySelectorAll","img","replaceWith","resolvedHref","placeholderElements","placeholderElement","asyncRenderCallback","renderMarkdown","_getRenderOptions","languageAlias","getLanguageIdByLanguageName","_ttpTokenizer","codeBlockFontFamily","codeBlockFontSize","MessageController","_messageWidget","_messageListeners","MESSAGE_VISIBLE","bounds","fadeOut","MessageCommand","anchorTop","anchorBottom","messageWidget","announceCursorChange","previousCursorState","cursorDiff","cs","pcs","cursorPositions","InsertCursorAbove","logicalLine","InsertCursorBelow","InsertCursorAtEndOfEachLineSelected","getCursorsForSelection","currentLineMaxColumn","InsertCursorAtEndOfLineSelected","InsertCursorAtTopOfLineSelected","MultiCursorSessionResult","revealScrollType","MultiCursorSession","findController","isDisconnectedFromFindController","findState","addSelectionToNextFindMatch","allSelections","moveSelectionToNextFindMatch","lastAddedSelection","addSelectionToPreviousFindMatch","previousMatch","_getPreviousMatch","moveSelectionToPreviousFindMatch","MultiCursorSelectionController","_sessionDispose","_ignoreSelectionChange","_session","_endSession","_beginSessionIfNeeded","_setSelections","_expandEmptyToWord","_applySessionResult","getSession","modelRangesContainSameText","resultingSelections","MultiCursorSelectionControllerAction","multiCursorController","AddSelectionToNextFindMatchAction","AddSelectionToPreviousFindMatchAction","MoveSelectionToNextFindMatchAction","MoveSelectionToPreviousFindMatchAction","SelectHighlightsAction","CompatChangeAll","SelectionHighlighterState","_searchText","_modelVersionId","_cachedFindMatches","SelectionHighlighter","_createState","findStateSearchString","mySearchString","allMatches","hasFindOccurrences","_SELECTION_HIGHLIGHT","_SELECTION_HIGHLIGHT_OVERVIEW","FocusNextCursor","firstCursor","FocusPreviousCursor","MultipleSignatures","provideSignatureHelp","supports","triggerCharacter","Invoke","isRetrigger","ParameterHintState","Pending","previouslyActiveHints","Active","ParameterHintsModel","DEFAULT_DELAY","_onChangedHints","onChangedHints","triggerOnType","_pendingTriggers","_lastSignatureHelpResult","retriggerChars","triggerId","throttledDelayer","onEditorConfigurationChange","onCursorChange","onModelContentChange","signatures","activeSignature","updateActiveSignature","activeSignatureHelp","getLastActiveHints","mergeTriggerContexts","triggerContext","signatureHelpTriggerCharacters","signatureHelpRetriggerCharacters","lastCharIndex","triggerCharCode","TriggerCharacter","ContentChange","parameterHintsNextIcon","parameterHintsPreviousIcon","ParameterHintsWidget","renderDisposeables","announcedLabel","markdownRenderer","keyVisible","keyMultipleSignatures","newParameterHints","createParameterHintDOMNodes","overloads","signature","docs","userSelect","domNodes","updateFont","updateMaxHeight","hasParameters","activeParameterIndex","activeParameter","renderParameters","renderMarkdownDocs","hasDocs","labelToAnnounce","param","getParameterLabelOffsets","beforeSpan","paramSpan","afterSpan","paramIdx","editorHoverWidgetHighlightForeground","parameterHighlightColor","ParameterHintsController","TriggerParameterHintsAction","ParameterHintsCommand","defaultColor","defaultOptions","keepEditorSelection","ViewZoneDelegate","_onDomNodeTop","_onComputedHeight","OverlayWidgetDelegate","Arrow","_ruleName","_IdGenerator","_updateStyle","ZoneWidget","_arrow","_overlayWidget","_isShowing","_positionMarkerId","_getWidth","_getLeft","_fillContainer","_initSash","borderTopColor","borderBottomColor","_onViewZoneTop","_onViewZoneHeight","containerHeight","_decoratingElementsHeight","_doLayout","rangeOrPos","_showImpl","viewZoneDomNode","maxHeightInLines","arrowHeight","frameThickness","borderTopWidth","borderBottomWidth","isLastLine","classToReplace","newHeightInLines","roundedLineDelta","IPeekViewService","PeekContext","PeekContextController","getOuterEditor","PeekViewWidget","_onDidClose","_headElement","_primaryHeading","_secondaryHeading","_bodyElement","noCloseAction","titleElement","_metaHeading","actionBarOptions","_getActionBarOptions","primaryHeading","secondaryHeading","headHeight","bodyHeight","_doLayoutHead","peekViewTitleBackground","peekViewTitleForeground","peekViewTitleInfoForeground","peekViewBorder","peekViewResultsBackground","peekViewEditorBackground","AbstractEditorNavigationQuickAccessProvider","rangeHighlightDecorationId","picker","canAcceptInBackground","matchOnLabel","matchOnDescription","matchOnDetail","sortByLabel","pickerDisposable","doProvide","onDidActiveTextEditorControlChange","activeTextEditorControl","canProvideWithTextEditor","lastKnownEditorViewState","clearDecorations","provideWithTextEditor","provideWithoutTextEditor","addDecorations","deleteDecorations","overviewRulerDecorationId","rangeHighlightId","Full","ReadOnlyMessageController","messageController","CONTEXT_RENAME_INPUT_VISIBLE","RenameInputField","_acceptKeybindings","_updateStyles","cancelInput","acceptInput","wantsPreview","_currentAcceptInput","_currentCancelInput","supportPreview","disposeOnDone","newName","RenameSkeleton","_providerRenameIdx","hasProvider","resolveRenameLocation","rejects","rejectReason","provideRenameEdits","_provideRenameEdits","rename","skeleton","loc","RenameController","_disposableStore","_cts","_renameInputField","resolveLocationOperation","hasPreviewHandler","inputFieldResult","renameOperation","renameResult","ariaSummary","acceptRenameInput","cancelRenameInput","RenameAction","RenameCommand","BracketSelectionRangeProvider","provideSelectionRanges","_bracketsRightYield","_bracketsLeftYield","_maxRounds","_maxDuration","innerBracket","outerBracket","_addBracketLeading","aboveLine","WordSelectionRangeProvider","_addInWordRanges","_addWordRanges","_addWhitespaceLine","lastCh","SelectionRanges","mov","SmartSelectController","_ignoreSelection","_selectionListener","forward","selectionRangeProvider","AbstractSmartSelect","_forward","work","allRawRanges","allProviderRanges","oneProviderRanges","oneRawRanges","oneRanges","oneRangesWithTrivia","rangeNoWhitespace","rangeFull","_defaultOptions","undoStopBefore","undoStopAfter","overtypingCapturer","_snippetListener","_inSnippet","InSnippetMode","_hasNextTabstop","HasNextTabstop","_hasPrevTabstop","HasPrevTabstop","_doInsert","_logInfo","hasChoice","_choiceCompletionItemProvider","provideCompletionItems","activeChoice","choice","isAnyOfOptions","suggestions","sortText","_updateState","hasPlaceholder","isAtLastPlaceholder","isSelectionWithinPlaceholders","isAtFirstPlaceholder","_handleChoice","_currentChoice","resetSelection","isInSnippet","CommandCtor","ctrl","Scanner","isDigitCharacter","isVariableCharacter","tokenText","Marker","others","newChildren","_fixParent","TextmateSnippet","TransformableMarker","Placeholder","compareByIndex","isFinalTabstop","Choice","Transform","didMatch","_replace","FormatString","elseValue","shorthandName","ifValue","_toPascalCase","_toCamelCase","Variable","walk","visitor","placeholderInfo","_placeholders","placeholders","fullLen","enclosingPlaceholders","resolveVariables","SnippetParser","_scanner","guessNeedsClipboard","insertFinalTabstop","enforceFinalTabstop","parseFragment","ensureFinalTabstop","_parse","placeholderDefaultValues","incompletePlaceholders","defaultValues","_accept","_backTo","_until","_parseEscaped","_parseTabstopOrVariableName","_parseComplexPlaceholder","_parseComplexVariable","_parseAnything","_parseTransform","_parseChoiceElement","regexValue","regexOptions","_parseFormatString","complex","shorthand","normalizeDriveLetter","CompositeSnippetVariableResolver","_delegates","SelectionBasedVariableResolver","_selectionIdx","_overtypingCapturer","getLastOvertypedInfo","lineLeadingWhitespace","varLeadingWhitespace","whitespaceCommonLength","rest","ModelBasedVariableResolver","noPrefix","ClipboardBasedVariableResolver","_readClipboardText","_selectionCount","_spread","CommentBasedVariableResolver","TimeBasedVariableResolver","_date","getFullYear","getMonth","valueOf","getDate","getHours","getMinutes","getSeconds","dayNames","getDay","dayNamesShort","monthNames","monthNamesShort","WorkspaceBasedVariableResolver","_workspaceService","workspaceIdentifier","getWorkspace","_resolveWorkspaceName","_resoveWorkspacePath","filename","configPath","folderpath","RandomBasedVariableResolver","OneSnippet","_snippet","_snippetLineLeadingWhitespace","_nestingLevel","_placeholderGroups","_placeholderGroupsIdx","initialize","_placeholderDecorations","_initDecorations","placeholderOffset","placeholderLen","_decor","inactiveFinal","inactive","transformedValueLines","couldSkipThisPlaceholder","activePlaceholders","_hasPlaceholderBeenCollapsed","activeFinal","enclosingPlaceholder","isTrivialSnippet","computePossibleSelections","placeholdersWithEqualIndex","nested","assert","indexLastPlaceholder","nestedPlaceholder","SnippetSession","_template","_templateMerges","_snippets","adjustIndentation","adjustNewlines","snippetTextString","adjustSelection","positionColumnBefore","positionColumnAfter","createEditsAndSnippetsFromSelections","snippets","workspaceService","modelBasedVariableResolver","readClipboardText","firstBeforeText","firstAfterText","firstLineFirstNonWhitespace","indexedSelections","extensionBefore","extensionAfter","snippetSelection","snippetLineLeadingWhitespace","createEditsAndSnippetsFromEdits","snippetEdits","textRange","textNode","snippetText","snippetFragmentText","_undoEdits","oneSelection","allPossibleSelections","StickyScrollController","_sessionStore","_rangesVersionId","stickyScrollWidget","StickyScrollWidget","onConfigurationChange","_updateSoon","emptyRootNode","_onTokensChange","_needsUpdate","stickyLineNumbers","getCurrentLines","stickyLineNumber","updateOutline","_updateOutlineModel","hiddenRange","_renderStickyScroll","_findLineRanges","outlineElement","didRecursion","outline","_addOutlineRanges","currentStartLine","currentEndLine","_depth","beginningLinesConsidered","topOfElementAtDepth","bottomOfElementAtDepth","bottomOfBeginningLine","topOfEndLine","bottomOfEndLine","pushCodeLine","StickyScrollCodeLine","updateRootNode","_zIndex","_relativePosition","effectiveLineHeight","lineRenderingData","lineHTMLNode","lineNumberHTMLNode","innerLineNumberHTML","textAlign","arrayOfCodeLines","rootDomNode","widgetLineRange","codeLine","LineContext","leadingLineContent","characterCountDelta","CompletionModel","lineContext","wordDistance","fuzzyScoreOptions","_snippetCompareFn","_compareCompletionItems","_items","_wordDistance","_refilterKind","_lineContext","_fuzzyScoreOptions","_compareCompletionItemsSnippetsUp","_compareCompletionItemsSnippetsDown","_filteredItems","_ensureCachedState","allProvider","_providerInfo","incomplete","adopt","stats","_stats","_createCachedState","labelLengths","scoreFn","filterTextLow","textLabel","labelLow","pLabelLen","HasFocusedSuggestion","DetailsVisible","MultipleSuggestions","MakesTextEdit","AcceptSuggestionsOnEnter","HasInsertAndReplaceRange","InsertMode","CanResolve","suggestWidgetStatusbarMenu","CompletionItem","sortTextLow","editInsertEnd","editReplaceEnd","resolveCompletionItem","_resolveCache","sub","CompletionOptions","snippetSortOrder","kindFilter","providerFilter","_snippetSuggestSupport","getSnippetSuggestSupport","CompletionItemModel","needsClipboard","durations","provideSuggestionItems","defaultRange","onCompletionList","didAddResult","suggestion","providerName","_debugDisplayName","elapsedProvider","elapsedOverall","snippetCompletions","providerGroup","getSuggestionComparator","defaultComparator","_snippetComparators","snippetConfig","showSimpleSuggestions","triggerSuggest","maxItemsToResolve","QuickSuggestionsOptions","isAllOff","isAllOn","valueFor","WordContextKey","_ckAtEnd","AtEnd","_configListener","checkForWordEnd","SuggestAlternatives","_ckOtherSuggestions","OtherSuggestions","_acceptNext","_ignore","acceptNext","_moveIndex","CommitCharacterController","_onItem","_active","acceptCharacters","commitCharacters","auto","shy","noSelect","leadingWord","shouldAutoTrigger","SuggestModel","_editorWorkerService","_triggerCharacterListener","_triggerQuickSuggest","_completionDisposables","_onDidTrigger","_onDidSuggest","onDidSuggest","_telemetryGate","_updateTriggerCharacters","_updateActiveSuggestSession","editorIsComposing","_refilterCompletionItems","supportsByTriggerCharacter","triggerCharacters","checkTriggerCharacter","allowQuickSuggestions","canShowSuggestOnTriggerCharacters","_completionModel","_requestToken","prevSelection","_doTriggerQuickSuggest","canShowQuickSuggest","_onNewContext","onlyFrom","noFilter","suggestCtx","itemKind","itemKindFilter","_createSuggestFilter","completionOptions","cmpFn","_reportDurationsTelemetry","inactiveProvider","oldLineContext","completionModel","OvertypingCapturer","suggestModel","_lastOvertyped","selectionsLength","willOvertype","_maxSelectionLength","StatusBarViewItem","symbolPrintEnter","SuggestWidgetStatus","_menuDisposables","_leftActions","_rightActions","ResizableHTMLElement","_onDidWillResize","onDidWillResize","_onDidResize","onDidResize","_sashListener","_minSize","_maxSize","_eastSash","_westSash","_northSash","North","_southSash","South","east","west","north","south","_preferredSize","enableSashes","minHeight","maxSize","minSize","preferredSize","canExpandCompletionItem","SuggestDetailsWidget","_onDidChangeContents","onDidChangeContents","_renderDisposeable","_borderWidth","_body","_header","_close","_docs","_configureFont","fontSizePx","lineHeightPx","borderHeight","verticalPadding","renderLoading","renderItem","explainMode","md","cappedDetail","clearContents","scrollDown","scrollUp","pageDown","pageUp","SuggestDetailsOverlay","topLeftNow","sizeNow","_added","_preferAlignAtTop","_resizable","_topLeft","updateTopLeft","_applyTopLeft","_userSize","_anchorBox","_placeAtAnchor","sessionEnded","placeAtAnchor","preferAlignAtTop","anchorBox","bodyBox","defaultMinSize","defaultTop","eastPlacement","maxSizeTop","maxSizeBottom","fit","placements","alignAtTop","FileKind","fileIconDirectoryRegex","getIconClasses","fileKind","ROOT_FOLDER","FOLDER","cssEscape","dotSegments","detectedLanguageId","getLanguageIdByMimeType","detectLanguageId","getAriaId","suggestMoreInfoIcon","_completionItemColor","ColorExtractor","extract","_regexStrict","_regexRelaxed","ItemRenderer","_modelService","_onDidToggleDetails","onDidToggleDetails","colorspan","main","iconContainer","iconLabel","parametersLabel","qualifierLabel","detailsLabel","readMore","configureFont","letterSpacingPx","labelOptions","getFileIconTheme","hasFileIcons","labelClasses","FILE","detailClasses","hasFolderIcons","stripNewLines","editorSuggestWidgetForeground","editorSuggestWidgetSelectedBackground","PersistedWidgetSize","_service","SuggestWidget","_isAuto","_ignoreFocusEvents","_forceRenderingAbove","_explainMode","_showTimeout","_onDidSelect","_onDidHide","_onDidShow","onDidSelect","_onDetailsKeydown","onDetailsKeyDown","SuggestContentWidget","_persistedSize","ResizeState","persistedSize","persistHeight","persistWidth","lockPreference","_resize","itemHeight","defaultSize","threshold","unlockPreference","_messageElement","_listElement","details","toggleDetails","_details","applyIconStyle","_list","_isDetailsVisible","_status","applyStatusBarStyle","_onThemeChange","_onListMouseDownOrTap","_onListFocus","_onCursorSelectionChanged","_ctxSuggestWidgetVisible","_ctxSuggestWidgetDetailsVisible","_ctxSuggestWidgetMultipleSuggestions","_ctxSuggestWidgetHasFocusedSuggestion","_loadingTimeout","_select","_currentSuggestionDetails","_focusedItem","showDetails","_cappedHeight","LOADING_MESSAGE","NO_SUGGESTIONS_MESSAGE","showTriggered","showSuggestions","selectionIndex","isAuto","visibleCount","selectNextPage","selectNext","selectLast","selectPreviousPage","selectPrevious","toggleDetailsFocus","_setDetailsVisible","_positionDetails","toggleExplainMode","resetPersistedSize","hideWidget","dim","minPersistedHeight","_afterRender","setPreference","preferredWidth","fullHeight","statusBarHeight","editorBox","cursorBox","cursorBottom","maxHeightBelow","availableSpaceAbove","maxHeightAbove","capped","wanted","forceRenderingAboveRequiredSpace","_preferenceLocked","_hidden","LineSuffix","_marker","_memoryService","_lineSuffix","PriorityRegistry","ctxInsertMode","_insertSuggestion","commitCharacterController","ctxMakesTextEdit","ctxHasInsertAndReplace","ctxCanResolve","_alternatives","itemsOrderedByPriorityDesc","acceptSuggestionsOnEnter","updateFromConfig","snippetController","modelVersionNow","tasks","memorize","docListener","thisPosition","oldFlags","didType","typeListener","applied","TriggerSuggestAction","_alertCompletionItem","_reportSuggestionAcceptedTelemetry","acceptedSuggestion","providerId","basenameHash","fileExtension","triggerSuggestAndAcceptBest","positionNow","makesTextEdit","acceptSelectedSuggestion","keepAlternativeSuggestions","alternativeOverwriteConfig","acceptNextSuggestion","acceptPrevSuggestion","cancelSuggestWidget","selectNextSuggestion","selectNextPageSuggestion","selectLastSuggestion","selectPrevSuggestion","selectPrevPageSuggestion","selectFirstSuggestion","toggleSuggestionDetails","toggleSuggestionFocus","resetWidgetSize","prioritySelector","s1","s2","SuggestCommand","isEqualTo","SuggestInlineCompletion","InlineCompletionResults","_suggestMemoryService","selectedIndex","InsertAsSnippet","SuggestInlineCompletions","_getEditorOption","_languageFeatureService","triggerCharacterInfo","wordInfo","_getTriggerCharacterInfo","leadingLineContents","_lastResult","newLineContext","_completions","EditorContribution","languageFeatureService","Memory","topScore","preselect","NoMemory","SuggestMemoryService","_persistSoon","_saveState","_withStrategy","_strategy","_strategyCtors","_storagePrefix","_trie","_seq","lineSuffix","indexRecency","seq","ISuggestMemoryService","WordDistance","service","canComputeWordRanges","wordRanges","computeWordRanges","wordUntilPos","wordLines","bestWordRange","blockDistance","SYMBOL_ICON_ARRAY_FOREGROUND","SYMBOL_ICON_BOOLEAN_FOREGROUND","SYMBOL_ICON_CLASS_FOREGROUND","SYMBOL_ICON_COLOR_FOREGROUND","SYMBOL_ICON_CONSTANT_FOREGROUND","SYMBOL_ICON_CONSTRUCTOR_FOREGROUND","SYMBOL_ICON_ENUMERATOR_FOREGROUND","SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND","SYMBOL_ICON_EVENT_FOREGROUND","SYMBOL_ICON_FIELD_FOREGROUND","SYMBOL_ICON_FILE_FOREGROUND","SYMBOL_ICON_FOLDER_FOREGROUND","SYMBOL_ICON_FUNCTION_FOREGROUND","SYMBOL_ICON_INTERFACE_FOREGROUND","SYMBOL_ICON_KEY_FOREGROUND","SYMBOL_ICON_KEYWORD_FOREGROUND","SYMBOL_ICON_METHOD_FOREGROUND","SYMBOL_ICON_MODULE_FOREGROUND","SYMBOL_ICON_NAMESPACE_FOREGROUND","SYMBOL_ICON_NULL_FOREGROUND","SYMBOL_ICON_NUMBER_FOREGROUND","SYMBOL_ICON_OBJECT_FOREGROUND","SYMBOL_ICON_OPERATOR_FOREGROUND","SYMBOL_ICON_PACKAGE_FOREGROUND","SYMBOL_ICON_PROPERTY_FOREGROUND","SYMBOL_ICON_REFERENCE_FOREGROUND","SYMBOL_ICON_SNIPPET_FOREGROUND","SYMBOL_ICON_STRING_FOREGROUND","SYMBOL_ICON_STRUCT_FOREGROUND","SYMBOL_ICON_TEXT_FOREGROUND","SYMBOL_ICON_TYPEPARAMETER_FOREGROUND","SYMBOL_ICON_UNIT_FOREGROUND","SYMBOL_ICON_VARIABLE_FOREGROUND","symbolIconArrayColor","symbolIconBooleanColor","symbolIconClassColor","symbolIconMethodColor","symbolIconColorColor","symbolIconConstantColor","symbolIconConstructorColor","symbolIconEnumeratorColor","symbolIconEnumeratorMemberColor","symbolIconEventColor","symbolIconFieldColor","symbolIconFileColor","symbolIconFolderColor","symbolIconFunctionColor","symbolIconInterfaceColor","symbolIconKeyColor","symbolIconKeywordColor","symbolIconModuleColor","outlineNamespaceColor","symbolIconNullColor","symbolIconNumberColor","symbolIconObjectColor","symbolIconOperatorColor","symbolIconPackageColor","symbolIconPropertyColor","symbolIconReferenceColor","symbolIconSnippetColor","symbolIconStringColor","symbolIconStructColor","symbolIconTextColor","symbolIconTypeParameterColor","symbolIconUnitColor","symbolIconVariableColor","ToggleTabFocusModeAction","ForceRetokenizeAction","onClickEmitter","onKeyPress","onEnterPress","onOpen","opener","textLinkForegroundColor","textLinkActiveForegroundColor","BannerController","banner","Banner","onClose","getBannerMessage","messageContainer","messageActionsContainer","actionBarContainer","actionBar","warningIcon","UnicodeHighlighter","_workspaceTrustService","_highlighter","_bannerClosed","DisableHighlightingOfNonBasicAsciiCharactersAction","DisableHighlightingOfAmbiguousCharactersAction","DisableHighlightingOfInvisibleCharactersAction","_bannerController","shortLabel","_updateHighlighter","onDidChangeTrust","trusted","isWorkspaceTrusted","highlightOptions","NumberFormat","resolvedOptions","canComputeUnicodeHighlights","DocumentUnicodeHighlighter","ViewportUnicodeHighlighter","getDecorationInfo","computedUnicodeHighlights","Decorations","getDecorationFromOptions","computeReason","inComment","inString","totalResult","UnicodeHighlighterHoverParticipant","unicodeHighlighter","highlightInfo","codePointStr","formatCodePointMarkdown","adjustSettingsArgs","adjustSettings","ShowExcludeOptions","codePointToHex","renderCodePointAsInlineCode","getDecoration","hideInComments","hideInStrings","DisableHighlightingInCommentsAction","DisableHighlightingInStringsAction","quickPickService","excludeLocaleFromBeingHighlighted","getExcludeCharFromBeingHighlightedLabel","charCodes","existingValue","excludeCharFromBeingHighlighted","expectNever","ignoreUnusualLineTerminators","UnusualLineTerminatorsDetector","_dialogService","_config","_checkForUnusualLineTerminators","ignoreState","getModelProperty","readIgnoreState","confirm","primaryButton","secondaryButton","confirmed","setModelProperty","writeIgnoreState","ViewportSemanticTokensContribution","_tokenizeViewportNow","_outstandingRequests","scheduleTokenizeViewport","_cancelAll","_removeOutstandingRequest","req","_requestRange","requestVersionId","editorWordHighlight","editorWordHighlightStrong","editorWordHighlightBorder","editorWordHighlightStrongBorder","overviewRulerWordHighlightForeground","overviewRulerWordHighlightStrongForeground","ctxHasWordHighlights","getOccurrencesAtPosition","provideDocumentHighlights","OccurenceAtPositionRequest","_wordRange","_getCurrentWordRange","_compute","currentWordRange","requestIsValid","SemanticOccurenceAtPositionRequest","TextualOccurenceAtPositionRequest","currentSelectionIsEmpty","WordHighlighter","workerRequestTokenId","workerRequestCompleted","workerRequestValue","lastCursorPositionChangeTime","renderDecorationsTimer","_hasWordHighlights","_ignorePositionChangeEvent","_onPositionChanged","_stopAll","workerRequest","hasDecorations","_getSortedHighlights","moveNext","_getWord","moveBack","workerRequestIsValid","_beginRenderDecorations","myRequestId","minimumRenderTime","_getDecorationOptions","Write","_WRITE_OPTIONS","_TEXT_OPTIONS","_REGULAR_OPTIONS","WordHighlighterContribution","wordHighlighter","createWordHighlighterIfPossible","WordHighlightNavigationAction","_isNext","TriggerWordHighlightAction","wordHighlight","wordHighlightStrong","selectionHighlightBorder","wordHighlightBorder","wordHighlightStrongBorder","MoveWordCommand","_wordNavigationType","inPosition","outPosition","_moveTo","WordLeftCommand","WordRightCommand","CursorWordStartLeft","CursorWordEndLeft","CursorWordLeft","CursorWordStartLeftSelect","CursorWordEndLeftSelect","CursorWordLeftSelect","CursorWordAccessibilityLeft","CursorWordAccessibilityLeftSelect","CursorWordStartRight","CursorWordEndRight","CursorWordRight","CursorWordStartRightSelect","CursorWordEndRightSelect","CursorWordRightSelect","CursorWordAccessibilityRight","CursorWordAccessibilityRightSelect","DeleteWordCommand","_whitespaceHeuristics","DeleteWordLeftCommand","DeleteWordRightCommand","DeleteWordStartLeft","DeleteWordEndLeft","DeleteWordLeft","DeleteWordStartRight","DeleteWordEndRight","DeleteWordRight","DeleteInsideWord","DeleteWordPartLeft","DeleteWordPartRight","WordPartLeftCommand","CursorWordPartLeft","CursorWordPartLeftSelect","WordPartRightCommand","CursorWordPartRight","CursorWordPartRightSelect","KeyMod","chord","createMonacoBaseAPI","standaloneEnums","CtrlCmd","Shift","Alt","WinCtrl","followsCaret","ignoreCharChanges","alwaysRevealFirst","DiffNavigator","_onDidUpdate","nextIdx","ignoreSelectionChange","revealFirst","onDidUpdateDiff","_onDiffUpdated","_init","getLineChanges","lineChanges","lineChange","charChanges","charChange","rhs","modifiedStartLineNumber","modifiedStartColumn","modifiedEndLineNumber","modifiedEndColumn","canNavigate","webWorkerWarningLogged","logOnceWebWorkerWarning","RequestMessage","vsWorker","ReplyMessage","SubscribeEventMessage","EventMessage","UnsubscribeEventMessage","SimpleWorkerProtocol","_workerId","_lastSentReq","_pendingReplies","_pendingEmitters","_pendingEvents","setWorkerId","workerId","sendMessage","_send","listen","handleMessage","_handleMessage","_handleReplyMessage","_handleRequestMessage","_handleSubscribeEventMessage","_handleEventMessage","_handleUnsubscribeEventMessage","replyMessage","requestMessage","handleEvent","transfer","SimpleWorkerClient","workerFactory","lazyProxyReject","_worker","_protocol","propertyIsDynamicEvent","propertyIsEvent","loaderConfiguration","require","getConfig","requirejs","contexts","hostMethods","_onModuleLoaded","proxyMethodRequest","_request","proxyListen","_lazyProxy","availableMethods","createProxyDynamicEvent","_onError","getProxyObject","createScriptURL","WebWorker","onMessageCallback","onErrorCallback","workerOrPromise","MonacoEnvironment","getWorker","workerUrl","Worker","worker","onmessage","onmessageerror","terminate","DefaultWorkerFactory","_webWorkerFailedBeforeError","LAST_WORKER_ID","computeDiff","LineSequence","startColumns","endColumns","getFirstNonBlankColumn","getLastNonBlankColumn","_startColumns","_endColumns","createCharSequence","shouldIgnoreTrimWhitespace","columns","col","CharSequence","_charCodes","_lineNumbers","_columns","_assertIndex","getStartColumn","getEndColumn","CharChange","originalStartLineNumber","originalStartColumn","originalEndColumn","createFromDiffChange","diffChange","originalCharSequence","modifiedCharSequence","LineChange","createFromDiffResult","originalLineSequence","modifiedLineSequence","continueCharDiff","shouldComputeCharChanges","shouldPostProcessCharChanges","rawChanges","currChange","originalMatchingLength","modifiedMatchingLength","postProcessCharChanges","DiffComputer","originalLines","modifiedLines","shouldMakePrettyDiff","continueLineDiff","createContinueProcessingPredicate","maxComputationTime","diffResult","originalLineIndex","modifiedLineIndex","nextChange","originalLine","modifiedLine","_pushTrimWhitespaceCharChange","originalMaxColumn","modifiedMaxColumn","modifiedLineNumber","_mergeTrimWhitespaceCharChange","txt","maximumRuntime","MirrorTextModel","_uri","_eol","_lineStarts","_cachedTextValue","getText","onEvents","_ensureLineStarts","eolLength","lineStartValues","_setLineText","newLengths","Uint8Matrix","cols","StateMachine","edges","maxState","_maxCharCode","nextState","_stateMachine","_classifier","LinkComputer","_createLink","linkBeginIndex","linkEndIndex","lastIncludedCharIndex","charCodeBeforeLink","lastCharCodeInLink","stateMachine","getStateMachine","FORCE_TERMINATION_CHARACTERS","CANNOT_END_WITH_CHARACTERS","getClassifier","linkBeginChCode","hasOpenParens","hasOpenSquareBracket","inSquareBrackets","hasOpenCurlyBracket","resetStateMachine","BasicInplaceReplace","_defaultValueSet","range1","text1","range2","text2","doNavigateValueSet","numberResult","numberReplace","textReplace","precision","valueSetsReplace","valueSets","valueSetReplace","valueSet","MirrorModel","wordAtText","words","wordenize","_wordenize","wordRangesIdx","getLineWords","_validateRange","resultLines","offsetAt","maxCharacter","EditorSimpleWorker","foreignModuleFactory","_foreignModuleFactory","_foreignModule","_getModel","_getModels","acceptNewModel","EOL","acceptModelChanged","strURL","acceptRemovedModel","originalUrl","modifiedUrl","ignoreTrimWhitespace","originalTextModel","modifiedTextModel","identical","_modelsAreIdentical","originalLineCount","modelUrl","lastEol","_diffLimit","editOffset","newEdit","textualSuggest","modelUrls","wordDef","wordDefFlags","wordDefRegExp","outer","_suggestionsLimit","loadForeignModule","createData","foreignHostMethods","fhr","getMirrorModels","fmr","monaco","canSyncModel","EditorWorkerService","_workerManager","WorkerManager","hasAccessToAllModels","withWorker","client","WordBasedCompletionItemProvider","race","workerManager","wordBasedSuggestions","models","wordBasedSuggestionsMode","_editorWorkerClient","_lastWorkerUsedTime","_checkStopIdleWorker","STOP_WORKER_DELTA_TIME_MS","_checkStopEmptyWorker","EditorWorkerClient","EditorModelManager","proxy","keepIdleModels","_syncedModels","_syncedModelsLastUsedTime","_proxy","_checkStopModelSync","STOP_SYNC_MODEL_DELTA_TIME_MS","ensureSyncedResources","forceLargeModels","resourceStr","_beginModelSync","_stopModelSync","SynchronousWorkerClient","_instance","_proxyObj","EditorWorkerHost","workerClient","_workerClient","_keepIdleModels","_workerFactory","_modelManager","_getOrCreateWorker","_getProxy","_getOrCreateModelManager","_withSyncedResources","MonacoWebWorkerImpl","_foreignModuleId","_foreignModuleCreateData","_foreignModuleHost","_foreignProxy","_getForeignProxy","foreignMethods","foreignProxy","foreignMethod","getProxy","withSyncedResources","what","isIAction","fixCase","createError","substituteMatches","stateMatches","full","dollar","ofs","findRules","inState","MonarchStackElementFactory","maxCacheDepth","_maxCacheDepth","MonarchStackElement","stackElementId","getStackElementId","popall","EmbeddedLanguageData","MonarchLineStateFactory","embeddedLanguageData","MonarchLineState","MonarchClassicTokensCollector","_lastTokenType","_lastTokenLanguage","enterLanguage","nestedLanguageTokenize","embeddedLanguageLine","offsetDelta","nestedLanguageId","embeddedModeState","nestedLanguageTokenizationSupport","nestedResult","tokenize","MonarchModernTokensCollector","_prependTokens","_currentLanguageId","_lastTokenMetadata","cLen","MonarchTokenizer","standaloneThemeService","_standaloneThemeService","_lexer","_embeddedLanguages","embeddedLoaded","emitting","_tokenizationRegistryListener","isOneOfMyEmbeddedModes","_maxTokenizationLineLength","getLoadStatus","nestedModeStatus","loaded","rootState","lineState","tokensCollector","endLineState","_tokenize","tokenTheme","_nestedTokenize","_myTokenize","_findLeavingNestedLanguageOffset","popOffset","hasEmbeddedPopRule","regexSource","matchOnlyAtLineStart","nestedEndState","nestedLanguageLine","restOfTheLine","_safeRuleName","lineWithoutLF","lineWithoutLFLength","includeLF","groupMatching","forceEvaluation","pos0","stackLen0","groupLen0","enteringEmbeddedLanguage","groupEntry","restOfLine","isFuzzyActionArr","tokenSubst","goBack","maxStack","computeNewStateForEmbeddedLanguage","_getNestedEmbeddedLanguageData","totalLen","findBracket","bracketType","Colorizer","colorizeElement","setTheme","nodeValue","colorize","_fakeColorize","tokenizeResult","renderResult","_actualColorize","_colorize","colorizeLine","colorizeModelLine","inflatedTokens","DiffEntry","originalLineStart","originalLineEnd","modifiedLineStart","modifiedLineEnd","Diff","diffReviewInsertIcon","diffReviewRemoveIcon","diffReviewCloseIcon","DiffReview","diffEditor","_diffEditor","_actionBar","_content","_diffs","_goToRow","_getNextRow","_getPrevRow","_currentDiff","_findDiffIndex","doLayout","jumpToLineNumber","_getCurrentFocusedRow","previousElementSibling","_getFirstRow","nextElementSibling","originalModel","getOriginalEditor","modifiedModel","_mergeAdjacent","modifiedLineCount","diffs","diffsLength","originalEqualAbove","modifiedEqualAbove","minOriginal","minModified","prevLineChange","fromOriginal","fromModified","originalEqualBelow","modifiedEqualBelow","maxOriginal","maxModified","nextLineChange","toOriginal","toModified","thisDiff","currLast","thisFirst","originalOptions","modifiedOptions","originalModelOpts","modifiedModelOpts","diffIndex","minOriginalLine","maxOriginalLine","minModifiedLine","maxModifiedLine","diffEntry","originalChangedLinesCnt","modifiedChangedLinesCnt","getAriaLines","originalChangedLinesCntAria","modifiedChangedLinesCntAria","modLine","_renderSection","rowClassName","lineNumbersExtraClassName","spacerIcon","originalLayoutInfo","originalLineNumbersWidth","modifiedLayoutInfo","modifiedLineNumbersWidth","spacerCodicon","DiffReviewNext","findFocusedDiffEditor","diffReviewNext","DiffReviewPrev","diffReviewPrev","diffEditors","listDiffEditors","activeCodeEditor","InlineDiffMargin","_marginDomNode","_diffActions","lineFeed","isDeletion","copyLineAction","currentLineNumberOffset","eof","_updateLightBulbPosition","lineNumberOffset","viewLineCounts","VisualEditorState","_inlineDiffMargins","_zonesMap","getForeignViewZones","allViewZones","clean","viewChangeAccessor","zoneId","restoreScrollState","inlineDiffMargin","overviewZones","DIFF_EDITOR_ID","diffInsertIcon","diffRemoveIcon","DiffEditorWidget","_editorProgressService","_onDidUpdateDiff","_lastOriginalWarning","_lastModifiedWarning","_updatingDiffProgress","validateDiffEditorOptions","enableSplitViewResizing","renderSideBySide","renderMarginRevertIcon","maxFileSize","renderIndicators","originalEditable","diffCodeLens","renderOverviewRuler","diffWordWrap","isInEmbeddedEditor","_updateDecorationsRunner","_updateDecorations","_containerDomElement","_overviewViewportDomElement","_overviewDomElement","_modifiedEditor","_originalDomNode","_modifiedDomNode","_beginUpdateDecorationsTimeout","_currentlyChangingViewZones","_diffComputationToken","_originalEditorState","_modifiedEditorState","_isHandlingScrollEvent","_elementSizeObserver","_onDidContainerSizeChanged","_diffComputationResult","_originalEditor","_createLeftHandSideEditor","originalEditor","_createRightHandSideEditor","modifiedEditor","_originalOverviewRuler","_modifiedOverviewRuler","_reviewPane","_setStrategy","DiffEditorWidgetSideBySide","_createDataSource","DiffEditorWidgetInline","applyColors","addDiffEditor","_disposeOverviewRulers","_createOverviewRulers","_layoutOverviewRulers","_createInnerEditor","_adjustOptionsForLeftHandSide","_layoutOverviewViewport","_onViewZonesChanged","_beginUpdateDecorationsSoon","isInDiffLeftEditorKey","ONE_OVERVIEW_WIDTH","_adjustOptionsForRightHandSide","isInDiffRightEditorKey","revertChange","originalRange","originalContent","insertAt","editorWidgetOptions","removeDiffEditor","_cleanViewZonesAndDecorations","beginUpdateDecorations","beginUpdateDecorationsSoon","_beginUpdateDecorations","setEnableSplitViewResizing","diffEditorState","_getReviewHeight","reviewHeight","freeSpace","ENTIRE_DIFF_OVERVIEW_WIDTH","UPDATE_DIFF_DECORATIONS_DELAY","currentOriginalModel","currentModifiedModel","currentToken","diffLimit","canSyncModelForDiff","foreignOriginal","foreignModified","diffDecorations","getEditorsDiffDecorations","_adjustOptionsForSubEditor","clonedOptions","originalAriaLabel","modifiedAriaLabel","splitPoint","_computeOverviewViewport","computedRatio","relayoutEditors","newStrategy","_getLineChangeAtOrBeforeLineNumber","startLineNumberExtractor","midEnd","_getEquivalentLineForOriginalLineNumber","originalEquivalentLineNumber","modifiedEquivalentLineNumber","lineChangeOriginalLength","lineChangeModifiedLength","_getEquivalentLineForModifiedLineNumber","getDiffLineInformationForOriginal","equivalentLineNumber","getDiffLineInformationForModified","DiffEditorWidgetStyle","dataSource","_dataSource","_insertColor","_removeColor","newInsertColor","newRemoveColor","originalWhitespaces","modifiedWhitespaces","_getViewZones","originalDecorations","_getOriginalEditorDecorations","modifiedDecorations","_getModifiedEditorDecorations","ForeignViewZonesIterator","ViewZonesComputer","_lineChanges","_originalForeignVZ","_modifiedForeignVZ","_getViewLineCount","getViewRange","getViewZones","originalLineHeight","modifiedLineHeight","originalHasWrapping","modifiedHasWrapping","hasWrapping","originalCoordinatesConverter","modifiedCoordinatesConverter","originalEndEquivalentLineNumber","modifiedEndEquivalentLineNumber","sortMyViewZones","addAndCombineIfPossible","lastItem","modifiedForeignVZ","originalForeignVZ","lastOriginalLineNumber","lastModifiedLineNumber","stepOriginal","stepModified","originalViewLineCount","modifiedViewLineCount","viewZoneLineNumber","_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion","isChangeOrInsert","_produceOriginalFromDiff","isChangeOrDelete","_produceModifiedFromDiff","stepOriginalIndex","stepModifiedIndex","originalDelta","modifiedDelta","shouldNotShrink","_ensureDomNodes","createFakeLinesDiv","createDecoration","DECORATIONS","arrowRevertChange","charDelete","charDeleteWholeLine","charInsert","charInsertWholeLine","lineInsert","lineInsertWithSign","lineDelete","lineDeleteWithSign","lineDeleteMargin","_disableSash","_sashRatio","_sashPosition","_startSashPosition","_onSashDragStart","_onSashDrag","_onSashDragEnd","_onSashReset","newDisableSash","sashRatio","sashPosition","midPoint","MINIMUM_EDITOR_WIDTH","SideBySideViewZonesComputer","overviewZoneColor","originalViewModel","isCharChangeOrDelete","modifiedViewModel","createViewZoneMarginArrow","isCharChangeOrInsert","InlineViewZonesComputer","zoneIndex","zoneHeightInLines","_originalModel","_renderIndicators","_pendingLineChange","_pendingViewZones","_lineBreaksComputer","_finalize","modifiedEditorOptions","lineBreakIndex","hasCharChanges","maxCharsPerLine","renderedLineCount","actualDecorations","lastBreakOffset","viewLineContent","_renderOriginalLine","marginDomNode2","marginElement","added","lineAdded","gutterAdded","lineRemoved","gutterRemoved","addedOutline","removedOutline","diffDiagonalFillColor","AbstractCodeEditorService","_onCodeEditorAdd","_onCodeEditorRemove","_onDiffEditorAdd","onDiffEditorAdd","_onDiffEditorRemove","onDiffEditorRemove","_decorationOptionProviders","_codeEditorOpenHandlers","_modelProperties","_codeEditors","_diffEditors","_globalStyleSheet","editorWithWidgetFocus","refCount","ed","key1","registerCodeEditorOpenHandler","rm","StandaloneCodeEditorService","_checkContextKey","_editorIsOpen","_activeCodeEditor","doOpenEditor","hasCodeEditor","setActiveCodeEditor","findModel","ILayoutService","StandaloneLayoutService","onDidLayout","quickPickTop","_dimension","hasContainer","EditorScopedLayoutService","getResourceLabel","stackElementCounter","ResourceStackElement","resourceLabel","strResource","groupId","groupOrder","sourceId","sourceOrder","confirmBeforeUndo","resourceLabels","strResources","setValid","ResourceReasonPair","RemovedResources","createMessage","externalRemoval","noParallelUniverses","WorkspaceStackElement","removedResources","invalidatedResources","canSplit","removeResource","ResourceEditStack","_past","_future","locked","flushAllElements","_setElementValidFlag","futureElement","snapshotLength","snapshotIndex","removePastAfter","removeFutureBefore","getClosestPastElement","getSecondClosestPastElement","getClosestFutureElement","hasPastElements","hasFutureElements","splitPastWorkspaceElement","individualMap","splitFutureWorkspaceElement","moveBackward","moveForward","EditStackSnapshot","editStacks","_versionIds","missingEditStack","UndoRedoService","_editStacks","_uriComparisonKeyComputers","uriComparisonKeyComputer","_print","_pushElement","nextOrder","editStack","closestPastElement","_splitPastWorkspaceElement","ignoreResources","individualArr","_splitFutureWorkspaceElement","_findClosestUndoElementWithSource","matchedElement","matchedStrResource","resourceOrSource","_acquireLocks","editStackSnapshot","_safeInvokeWithLocks","cleanup","continuation","releaseLocks","_invokeWorkspacePrepare","_invokeResourcePrepare","_getAffectedEditStacks","affectedEditStacks","_tryToSplitAndUndo","WorkspaceVerificationError","_undo","_checkWorkspaceUndo","checkInvalidatedResources","cannotUndoDueToResources","cannotLockDueToResources","_workspaceUndo","undoConfirmed","verificationError","_confirmAndExecuteWorkspaceUndo","_isPartOfUndoGroup","pastElement","secondPastElement","cancelId","verificationError1","verificationError2","_continueUndoInGroup","_resourceUndo","_findClosestUndoElementInGroup","_confirmAndContinueUndo","_findClosestRedoElementWithSource","_tryToSplitAndRedo","_redo","_checkWorkspaceRedo","cannotRedoDueToResources","_workspaceRedo","_executeWorkspaceRedo","_continueRedoInGroup","_resourceRedo","_findClosestRedoElementInGroup","ConfigurationModel","_contents","_overrides","frozen","overrideConfigurations","checkAndFreeze","section","getOverrideValue","overrideContents","getContentsForOverrideIdentifer","overrideConfigurationModel","createOverrideConfigurationModel","mergeContents","otherOverride","identifiers","contentsForKey","overrideContentsForKey","contentsForIdentifierOnly","contentsToMerge","addKey","removeValue","removeKey","_defaultConfiguration","_policyConfiguration","_applicationConfiguration","_localUserConfiguration","_remoteUserConfiguration","_workspaceConfiguration","_folderConfigurations","_memoryConfiguration","_memoryConfigurationByResource","_freeze","_workspaceConsolidatedConfiguration","_foldersConsolidatedConfigurations","_userConfiguration","workspace","getConsolidatedConfigurationModel","memoryConfiguration","consolidateConfigurationModel","folderConfigurationModel","getFolderConfigurationModelForResource","memoryConfigurationModel","policyValue","applicationValue","applicationConfiguration","userValue","userConfiguration","userLocalValue","localUserConfiguration","userRemoteValue","remoteUserConfiguration","workspaceValue","workspaceFolderValue","memoryValue","overrideIdentifiers","policy","application","userLocal","userRemote","workspaceFolder","configurationModel","getConsolidatedConfigurationModelForResource","consolidateConfiguration","getWorkspaceConsolidatedConfiguration","getFolder","getFolderConsolidatedConfiguration","memoryConfigurationForResource","folderConsolidatedConfiguration","workspaceConsolidateConfiguration","folderConfiguration","toData","folders","defaultConfiguration","parseConfigurationModel","policyConfiguration","workspaceConfiguration","ConfigurationChangeEvent","currentConfiguraiton","currentWorkspace","_previousConfiguration","keysSet","affectedKeys","affectedKeysTree","previousConfiguration","doesAffectedKeysTreeContains","value1","value2","requestedTree","HIGH_FREQ_COMMANDS","AbstractKeybindingService","_onDidUpdateKeybindings","_currentChord","_currentChordChecker","_currentChordStatusMessage","_ignoreSingleModifiers","KeybindingModifierSet","_currentSingleModifier","_currentSingleModifierClearTimeout","_logging","_log","_getResolver","lookupPrimaryKeybinding","_dispatch","softDispatch","resolveKeyboardEvent","isChord","getDispatchParts","contextValue","currentChord","keypress","_enterChordMode","keypressLabel","chordEnterTime","_documentHasFocus","_leaveChordMode","_doDispatch","_singleModifierDispatch","singleModifier","getSingleModifierDispatchParts","getParts","isSingleModiferChord","shouldPreventDefault","dispatchKeyname","resolveResult","enterChord","hideAfter","bubble","KeybindingResolver","defaultKeybindings","_defaultKeybindings","_defaultBoundCommands","defaultKeybinding","_lookupMap","_keybindings","handleRemovals","keypressParts","_addKeyPress","_isTargetedForRemoval","defaultKb","keypressFirstPart","keypressChordPart","removals","commandRemovals","isRemoved","commandRemoval","conflicts","_addToLookupMap","conflict","conflictIsChord","itemIsChord","whenIsEntirelyIncluded","_removeFromLookupMap","lookupMap","_findCommand","printWhenExplanation","printSourceExplanation","leaveChord","_contextMatchesRules","evaluate","isBuiltinExtension","ResolvedKeybindingItem","_resolvedKeybindingItemBrand","removeElementsAfterNulls","BaseResolvedKeybinding","os","_parts","_getLabel","_getElectronAccelerator","_getPart","_getDispatchPart","_getSingleModifierDispatchPart","USLayoutResolvedKeybinding","_keyCodeToUILabel","getDispatchStr","_scanCodeToKeyCode","immutableKeyCode","_resolveSimpleUserBinding","resolveUserBinding","LayoutAnchorMode","layoutAfterAnchorBoundary","ALIGN","layoutBeforeAnchorBoundary","ContextView","toDisposeOnClean","toDisposeOnSetContainer","shadowRootHostElement","useFixedPosition","setContainer","attachShadow","SHADOW_ROOT_CSS","BUBBLE_UP_EVENTS","onDOMEvent","BUBBLE_DOWN_EVENTS","getViewElement","canRelayout","around","viewSizeWidth","viewSizeHeight","anchorAxisAlignment","verticalAnchor","pageYOffset","horizontalAnchor","AVOID","containerPosition","onCapture","ContextViewService","layoutService","currentViewDisposable","contextView","GLOBSTAR","GLOB_SPLIT","PATH_REGEX","NO_PATH_REGEX","ALL_FORWARD_SLASHES","starsToRegExp","starCount","isLastPattern","splitGlobAware","splitChar","inBraces","inBrackets","curVal","parseRegExp","regEx","previousSegmentWasGlobStar","braceVal","bracketVal","braceRegExp","T1","T2","T3","T3_2","T4","T5","CACHE","FALSE","NULL","parsePattern","patternKey","trimForExclusions","parsedPattern","trivia1","slashBase","backslashBase","basenames","patterns","allBasenames","trivia2","parsedPatterns","aggregateBasenameMatches","patternsLength","withBasenames","allPaths","trivia3","trivia4and5","toRegExp","arg2","wrappedPattern","wrapRelativePattern","matchPathEnds","usingPosixSep","nativePath","nativePathEnd","targetPathEnd","rp","isRelativePattern","resultPattern","expression","hasSibling","requiresSiblings","parseExpressionPattern","resultExpression","resultPromises","resultPromise","parsedExpression","basenamePatterns","aggregate","aggregatedPatterns","registeredAssociations","nonUserRegisteredAssociations","userRegisteredAssociations","registerPlatformLanguageAssociation","association","warnOnOverwrite","userConfigured","associationItem","filepattern","firstline","filenameLowercase","extensionLowercase","filepatternLowercase","filepatternOnPath","toLanguageAssociationItem","_registerLanguageAssociation","getAssociationByPath","associations","filenameMatch","patternMatch","extensionMatch","NULL_LANGUAGE_ID","LanguageIdCodec","_languageIdToLanguage","_languageToLanguageId","_nextLanguageId","LanguagesRegistry","useModesRegistry","instanceCount","_warnOnOverwrite","_dynamicLanguages","_mimeTypesMap","_nameMap","_lowercaseNameMap","_initializeFromRegistry","_registerLanguages","_registerLanguage","mimetype","registerOverrideIdentifiers","getRegisteredLanguageIds","resolvedLanguage","filenames","configurationFiles","icons","_mergeLanguage","primaryMime","filenamePatterns","filenamePattern","firstLineRegexStr","firstLineRegex","langAliases","langAlias","containsAliases","bestName","languageName","languageNameLower","configuredLanguage","registeredLanguage","firstlineLanguage","getAssociationByFirstline","getAssociations","getLanguageIds","LanguageService","_onDidEncounterLanguage","onDidEncounterLanguage","_encounteredLanguages","languageIds","createById","LanguageSelection","_createAndGetLanguageIdentifier","createByFilepathOrFirstLine","_selector","_dispose","_evaluate","MENU_MNEMONIC_REGEX","MENU_ESCAPED_MNEMONIC_REGEX","Direction","Menu","menuElement","doGetActionViewItem","parentData","menuDisposables","initializeOrUpdateStyleSheet","enableMnemonics","mnemonics","SubmenuMenuActionViewItem","focusItemByElement","relatedTarget","lastFocusedItem","setFocusedItem","scrollElement","submenuIds","MenuSeparatorActionViewItem","updatePositionInSet","styleSheet","globalStyleSheet","isForShadowDom","scrollbarShadow","scrollbarSliderBackground","scrollbarSliderHoverBackground","scrollbarSliderActiveBackground","getMenuWidgetCSS","fgColor","foregroundColor","bgColor","shadowColor","BaseMenuActionViewItem","menuActionViewItem","mnemonic","getMnemonic","actionViewItems","menuItemOptions","runOnceToEnableMouseUp","applyStyle","setSize","cleanLabel","mnemonicInText","cleanMnemonic","escMatch","replaceDoubleEscapes","menuStyle","isSelected","selectionForegroundColor","selectionBackgroundColor","selectionBorderColor","outlineOffset","submenuActions","submenuOptions","mysubmenu","submenuDisposables","mouseOver","expandDirection","showScheduler","cleanupExistingSubmenu","createSubmenu","hideScheduler","updateAriaExpanded","submenuIndicator","submenuContainer","calculateSubmenuMenuLayout","windowDimensions","selectFirstItem","computedStyles","entryBox","entryBoxUpdated","viewBox","separatorColor","ContextMenuHandler","contextViewService","focusToReturn","blockMouse","configure","shadowRootElement","getMenuClassName","onActionRun","onDidActionRun","getActionsContext","ContextMenuService","_onDidShowContextMenu","_onDidHideContextMenu","contextMenuHandler","EditorOpenSource","CommandOpener","EditorOpener","USER","API","OpenerService","_openers","_validators","_resolvers","_resolvedUriTargets","_externalOpeners","_defaultExternalOpener","openExternal","_doOpenExternal","registerOpener","registerValidator","validator","registerExternalUriResolver","setDefaultExternalOpener","externalOpener","registerExternalOpener","targetURI","validationTarget","shouldOpen","resolveExternalUri","externalUri","preferredOpenerId","sourceUri","MarkerDecorations","_markersData","oldIds","MarkerDecorationsService","_onDidChangeMarker","_markerDecorations","_handleMarkerChange","markerDecorations","changedResources","take","newModelDecorations","_createDecorationRange","_createDecorationOption","rawMarker","_hasMarkerTag","buttonBackground","buttonHoverBackground","buttonSeparator","buttonForeground","Button","_onDidClick","buttonSecondaryForeground","buttonSecondaryBackground","buttonSecondaryHoverBackground","buttonBorder","eventType","setHoverBackground","onDidClick","CSS_DONE","CSS_ACTIVE","CSS_INFINITE","CSS_INFINITE_LONG_RUNNING","CSS_DISCRETE","progressBarBackground","ProgressBar","workedVal","showDelayedScheduler","longRunningScheduler","infiniteLongRunning","LONG_RUNNING_INFINITE_THRESHOLD","off","totalWork","doDone","delayed","infinite","iconPathToClass","iconClassGenerator","getIconClass","iconPath","QuickInputBox","password","showDecoration","KeybindingLabel","keyElements","labelBackground","keybindingLabelBackground","labelForeground","keybindingLabelForeground","labelBorder","keybindingLabelBorder","labelBottomBorder","keybindingLabelBottomBorder","labelShadow","keybindingLabelShadow","areSame","renderPart","renderUnboundKeybindings","renderUnbound","renderKey","createKeyElement","extraClass","keyElement","intlFileNameCollatorBaseNumeric","collator","sensitivity","collatorIsNumeric","ListElement","init","hidden","_onChecked","onChecked","ListElementRenderer","toDisposeElement","toDisposeTemplate","row1","row2","keybindingContainer","detailContainer","labelHighlights","descriptionHighlights","detailHighlights","saneDescription","iconClasses","saneLabel","saneDetail","cssClasses","alwaysVisible","fireButtonTriggered","ListElementDelegate","QuickInputListFocus","QuickInputList","inputElements","elementsToIndexes","matchOnLabelMode","matchOnMeta","_onChangedAllVisibleChecked","onChangedAllVisibleChecked","_onChangedCheckedCount","onChangedCheckedCount","_onChangedVisibleCount","onChangedVisibleCount","_onChangedCheckedElements","onChangedCheckedElements","_onButtonTriggered","onButtonTriggered","_onLeave","onLeave","_fireCheckedEvents","elementDisposables","QuickInputAccessibilityProvider","createList","toggleCheckbox","focus1","focus2","getAllVisibleChecked","allVisibleChecked","whenNoneVisible","getCheckedCount","getVisibleCount","setAllVisibleChecked","fireCheckedEvents","setElements","saneSortLabel","saneMeta","meta","saneAriaLabel","hasCheckbox","setFocusedElements","getActiveDescendant","setSelectedElements","getCheckedElements","setCheckedElements","Next","First","Previous","Last","Second","NextPage","PreviousPage","clearFocus","queryWithWhitespace","currentSeparator","matchesContiguous","matchesContiguousIconAware","metaHighlights","alwaysShow","shownElements","normalizedSearchValue","elementA","elementB","lookFor","labelHighlightsA","labelHighlightsB","elementAName","elementBName","prefixCompare","elementAPrefixMatch","elementBPrefixMatch","compareByPrefix","elementASuffixMatch","compareFileNames","compareAnything","compareEntries","allChecked","isDisplayed","backButton","QuickInput","ui","_busy","_ignoreFocusOut","_buttons","noValidationMessage","noPromptMessage","buttonsUpdated","onDidTriggerButtonEmitter","onDidHideEmitter","onDisposeEmitter","visibleDisposables","_steps","totalSteps","_totalSteps","contextKey","_contextKey","busy","ignoreFocusOut","validationMessage","_validationMessage","onDidTriggerButton","_lastValidationMessage","_lastSeverity","didHide","Other","getTitle","getDescription","description1","description2","busyDelay","progressBar","leftActionBar","leftButtons","rightActionBar","rightButtons","setContextKey","showMessageDecoration","getSteps","marginBottom","QuickPick","onDidChangeValueEmitter","onWillAcceptEmitter","onDidAcceptEmitter","onDidCustomEmitter","itemsUpdated","_canSelectMany","_canAcceptInBackground","_matchOnDescription","_matchOnDetail","_matchOnLabel","_matchOnLabelMode","_sortByLabel","_autoFocusOnList","_keepScrollPosition","_itemActivation","NONE","FIRST","_activeItems","activeItemsUpdated","activeItemsToConfirm","onDidChangeActiveEmitter","_selectedItems","selectedItemsUpdated","selectedItemsToConfirm","onDidChangeSelectionEmitter","onDidTriggerItemButtonEmitter","valueSelectionUpdated","_ok","_customButton","filterValue","onDidChangeValue","onWillAccept","onDidAccept","onDidChangeActive","onDidTriggerItemButton","quickNavigate","_quickNavigate","doSetValue","skipUpdate","trySelectFirst","_placeholder","canSelectMany","autoFocusOnList","keepScrollPosition","itemActivation","activeItems","selectedItems","keyMods","valueSelection","_valueSelection","customButton","showCustomButton","customLabel","_customButtonLabel","_customButtonHover","showOkButton","hideInput","_hideInput","handleAccept","onDidCustom","focusedItems","checkedItems","registerQuickNavigation","inBackground","veto","keybindings","scrollTopBefore","visibilities","_hideCheckAll","checkBox","setVisibilities","DEFAULT_ARIA_LABEL","SECOND","LAST","setComboboxAccessibility","QuickInputController","comboboxAccessibility","onShowEmitter","onShow","onHideEmitter","idPrefix","registerKeyModsListeners","getUI","titleBar","headerContainer","extraContainer","filterContainer","visibleCountContainer","countContainer","okContainer","customButtonContainer","previousFocusElement","Blur","selectors","stops","updateStyles","onKeyMods","createQuickPick","keepScrollPositionBefore","ignoreFocusLost","_activeItem","picked","oldController","backKeybindingLabel","updateLayout","focusChanged","returnFocus","titleBarOffset","MAX_WIDTH","quickInputTitleBackground","quickInputBackground","quickInputForeground","contrastBorder","widgetShadow","countBadge","pickerGroupBorder","pickerGroupForeground","newStyles","QuickAccessController","Quickaccess","mapProviderToDescriptor","lastAcceptedPickerValues","visibleQuickAccess","doShowOrPick","getOrInstantiateProvider","visibleDescriptor","preserveValue","adjustValueSelection","newValueCandidateWithoutPrefix","defaultFilterValue","pickPromise","quickNavigateConfiguration","registerPickerListeners","providerForValue","providerDescriptor","getQuickAccessProvider","QuickInputService","createController","quickAccess","_quickAccess","computeStyles","resetContextKeys","EditorScopedQuickInputService","QuickInputEditorContribution","_serviceBrand","StandaloneQuickInputService","mapEditorToService","activeService","newQuickInputService","QuickInputEditorWidget","AccessibilityService","_layoutService","_onDidChangeScreenReaderOptimized","_onDidChangeReducedMotion","_accessibilityModeEnabledContext","updateContextKey","_configMotionReduced","reduceMotionMatcher","_systemMotionReduced","initReducedMotionListeners","updateRootClasses","isMotionReduced","onDidChangeReducedMotion","MenuService","_hiddenStates","PersistedMenuHideState","emitEventsForSubmenuChanges","eventDebounceDelay","updateHidden","_persist","_menuGroups","_contextKeys","_build","rebuildMenuSoon","onDidChangeMenu","lazyListener","fireChangeSoon","onDidChangeContext","affectsSome","menuItems","_compareMenuItems","groupName","_collectContextKeys","_fillInKbExprKeys","toggled","toggledExpression","allToggleActions","toggleActions","activeActions","menuHide","createMenuHide","exp","aGroup","bGroup","aPrio","bPrio","_compareTitles","aStr","bStr","BrowserClipboardService","mapTextToType","findText","installWebKitWriteTextWorkaround","currentWritePromise","webKitPendingClipboardWritePromise","ClipboardItem","KEYBINDING_CONTEXT_ATTR","_parent","NullContext","ConfigAwareContextValuesContainer","allKeys","ArrayContextKeyChangeEvent","changedKeys","configKey","cachedItems","_keyPrefix","configValue","ContextKey","setContext","removeContext","SimpleContextKeyChangeEvent","allKeysContainedIn","CompositeContextKeyChangeEvent","AbstractContextKeyService","myContextId","_onDidChangeContext","_myContextId","ScopedContextKeyService","getContextValuesContainer","myContext","NaN","findContextAttr","ContextKeyService","_contexts","_lastContextId","contextId","createChildContext","parentContextId","disposeContext","_parentChangeListener","_updateParentChangeListener","extraInfo","stringifyURIs","incoming","outgoing","Graph","_hashFn","_nodes","insertEdge","fromNode","lookupOrInsertNode","toNode","removeNode","findCycleSlow","_findCycle","CyclicDependencyError","InstantiationService","services","_activeInstantiations","_services","_trace","traceInvocation","_done","_getOrCreateServiceInstance","ctorOrDescriptor","traceCreation","_createInstance","staticArguments","serviceDependencies","getServiceDependencies","serviceArgs","dependency","_throwIfStrict","firstServiceArgPos","_setServiceInstance","_getServiceInstanceOrDescriptor","instanceOrDesc","_safeCreateAndCacheServiceInstance","branch","_createAndCacheServiceInstance","cycleCount","_createServiceInstanceWithOwner","supportsDelayedInstantiation","_createServiceInstance","_supportsDelayedInstantiation","idle","Proxy","printWarning","_dep","_None","dur","_totals","causedCreation","printChild","DoubleResourceMap","_byResource","_byOwner","ownerMap","resourceMap","removedA","removedB","MarkerStats","infos","warnings","unknowns","_subscription","oldStats","_substract","newStats","_resourceStats","MarkerService","_onMarkerChanged","changeOne","markerData","_toMarker","changeAll","candidateUri","candidateLanguage","candidateIsSynchronized","candidateNotebookUri","candidateNotebookType","notebookType","normalizedPattern","isExclusive","exclusive","MatchCandidate","notebookUri","LanguageFeatureRegistry","_notebookInfoResolver","_clock","_score","_time","_lastCandidate","_updateScores","_orderedForEach","lastBucket","lastBucketScore","notebookInfo","_compareByScoreAndTime","_notebookTypeResolver","DefaultConfigurationModel","configurationDefaultsOverrides","getConfigurationProperties","defaultOverrideValue","SimpleModel","StandaloneTextModelService","StandaloneEditorProgressService","NULL_PROGRESS_RUNNER","worked","StandaloneNotificationService","notification","NO_OP","StandaloneCommandService","_onWillExecuteCommand","_onDidExecuteCommand","onWillExecuteCommand","StandaloneKeybindingService","_cachedResolver","_dynamicKeybindings","_domNodeListeners","addContainer","keyEvent","DomNodeListeners","removeContainer","domNodeListeners","addDynamicKeybinding","addDynamicKeybindings","weight1","weight2","updateResolver","_toNormalizedKeybindingItems","getDefaultKeybindings","resolvedKeybindings","isConfigurationOverrides","StandaloneConfigurationService","updateValues","configurationChangeEvent","sourceConfig","arg3","arg4","StandaloneResourceConfigurationService","StandaloneResourcePropertiesService","StandaloneWorkspaceContextService","SCHEME","updateConfigurationService","toUpdate","StandaloneBulkEditService","totalEdits","totalFiles","StandaloneContextViewService","StandaloneLogService","StandaloneContextMenuService","StandaloneServices","publicLog","confirmation","doConfirm","checkboxChecked","messageText","_neverEmitter","serviceCollection","serviceId","initialized","serviceIdentifier","LAST_GENERATED_COMMAND_ID","ariaDomNodeCreated","StandaloneCodeEditor","_standaloneKeybindingService","createAriaDomNode","ariaContainerElement","addCommand","whenExpression","createContextKey","_descriptor","keybindingsWhen","keybindingContext","contextMenuGroupId","contextMenuOrder","uniqueId","StandaloneEditor","themeDomRegistration","registerEditorContainer","autoDetectHighContrast","setAutoDetectHighContrast","createTextModel","_ownsModel","StandaloneDiffEditor","editorProgressService","firstLF","doCreateModel","addKeybindingRules","bool","defValue","createKeywordMatcher","caseInsensitive","arrayToHash","compileRegExp","hadExpansion","createGuard","tkey","scrut","oppat","tester","pat","elemType","inWords","re","patx","patexp","scrutinee","num","selectScrutinee","compileAction","newAction","stateNames","usesEmbedded","_case","Rule","sregex","setAction","act","compile","noThrow","lexerMin","addRules","newrules","newrule","rule1","matchOnlyAtStart","EncodedTokenizationSupportAdapter","TokenizationSupportAdapter","adaptTokenize","_toClassicTokens","previousStartIndex","actualResult","_toBinaryTokens","createTokenizationSupportAdapter","isEncodedTokensProvider","adaptedFactory","api","getEditors","getDiffEditors","onDidCreateEditor","onDidCreateDiffEditor","createDiffEditor","createDiffNavigator","addEditorAction","addKeybindingRule","setModelLanguage","setModelMarkers","getModelMarkers","removeAllMarkers","onDidChangeMarkers","onDidCreateModel","onWillDisposeModel","createWebWorker","defineTheme","themeName","themeData","remeasureFonts","encounteredLanguageId","getEncodedLanguageId","setColorMapOverride","setTokensProvider","setMonarchTokensProvider","languageDef","registerReferenceProvider","languageSelector","registerRenameProvider","registerCompletionItemProvider","registerSignatureHelpProvider","registerHoverProvider","registerDocumentSymbolProvider","registerDocumentHighlightProvider","registerLinkedEditingRangeProvider","registerDefinitionProvider","registerImplementationProvider","registerTypeDefinitionProvider","registerCodeLensProvider","registerCodeActionProvider","registerDocumentFormattingEditProvider","registerDocumentRangeFormattingEditProvider","registerOnTypeFormattingEditProvider","registerLinkProvider","registerColorProvider","registerFoldingRangeProvider","registerDeclarationProvider","registerSelectionRangeProvider","registerDocumentSemanticTokensProvider","registerDocumentRangeSemanticTokensProvider","registerInlineCompletionsProvider","registerInlayHintsProvider","ignoreDuplicateModules","CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE","AccessibilityHelpController","AccessibilityHelpWidget","_isVisibleKey","_contentDomNode","_buildContent","accessibilityHelpUrl","_descriptionForCommand","noKbMsg","charactersSelected","getSelectionLabel","turnOnMessage","ShowAccessibilityHelpAction","AccessibilityHelpCommand","IPadShowKeyboard","shouldHaveWidget","ShowKeyboardWidget","InspectTokensController","standaloneColorService","launch","InspectTokensWidget","InspectTokens","_tokenizationSupport","getSafeTokenizationSupport","_ID","_getTokensAtLine","token1Index","tokens1","token2Index","tokens2","renderTokenText","_decodeMetadata","_tokenTypeToString","_fontStyleToString","stateBeforeLine","_getStateBeforeLine","tokenizationResult1","tokenizationResult2","startState","exceptionToErrorMessage","exception","verbose","detectSystemErrorMessage","stackToString","errno","syscall","toErrorMessage","TriggerAction","isPicksWithActive","PickerQuickAccessProvider","picksCts","picksDisposable","updatePickerItems","picksDisposables","picksToken","picksFilter","providedPicks","_getPicks","applyPicks","skipEmpty","noResultsPick","additionalPicks","isFastAndSlowPicks","fastPicksApplied","slowPicksApplied","FAST_PICKS_RACE_DELAY","awaitedAdditionalPicks","activePick","additionalActivePick","fallbackActivePick","fallbackActivePickCandidate","awaitedPicks","buttonIndex","NO_ACTION","CLOSE_PICKER","REFRESH_PICKER","REMOVE_ITEM","AbstractCommandsQuickAccessProvider","dialogService","PREFIX","commandsHistory","CommandsHistory","allCommandPicks","getCommandPicks","filteredCommandPicks","commandPick","WORD_FILTER","aliasHighlights","commandAlias","showAlias","mapLabelToCommand","existingCommandForLabel","commandPickA","commandPickB","commandACounter","commandBCounter","commandPicks","addSeparator","configuredCommandsHistoryLength","getConfiguredCommandHistoryLength","PREF_KEY_CACHE","serializedCache","usesLRU","getNumber","PREF_KEY_COUNTER","configuredCommandHistoryLength","workbench","commandPalette","DEFAULT_COMMANDS_HISTORY_LENGTH","AbstractEditorCommandsQuickAccessProvider","getCodeEditorCommandPicks","editorCommandPicks","StandaloneCommandsQuickAccessProvider","GotoLineAction","registerQuickAccessProvider","helpEntries","AbstractGotoLineQuickAccessProvider","isValidLineNumber","toRange","updatePickerAndEditor","parsePosition","getPickLabel","isValidColumn","positionCandidate","StandaloneGotoLineQuickAccessProvider","NO_SCORE2","scoreFuzzy2","preparedQuery","totalScore","totalMatches","queryPiece","doScoreFuzzy2Single","normalizeMatches","doScoreFuzzy2Multiple","originalLowercase","sortedMatches","matchA","matchB","normalizedMatches","queryExpectsExactMatch","MULTIPLE_QUERY_VALUES_SEPARATOR","prepareQuery","pathNormalized","normalized","normalizedLowercase","normalizeQuery","containsPathSeparator","expectExactMatch","originalSplit","originalPiece","expectExactMatchPiece","pathNormalizedPiece","normalizedPiece","normalizedLowercasePiece","expectContiguousMatch","pieceToQuery","AbstractGotoSymbolQuickAccessProvider","_outlineModelService","provideLabelPick","doProvideWithEditorSymbols","doProvideWithoutEditorSymbols","waitForLanguageSymbolRegistry","symbolProviderRegistryPromise","symbolProviderListener","forceSideBySide","symbolsPromise","getDocumentSymbols","positionToEnclose","doGetSymbolPicks","ignoreFirstActiveEvent","filterBySymbolKind","SCOPE_PREFIX","filterPos","symbolQuery","containerQuery","filteredSymbolPicks","symbolLabel","symbolLabelWithIcon","symbolLabelIconOffset","symbolScore","symbolMatches","containerScore","containerMatches","containerLabel","extraContainerLabel","skipContainerQuery","openSideBySideDirection","sortedFilteredSymbolPicks","symbolA","symbolB","compareByKindAndScore","compareByScore","symbolPicks","lastSymbolKind","lastSeparator","lastSymbolKindCounter","updateLastSeparatorLabel","NLS_SYMBOL_KIND_CACHE","FALLBACK_NLS_SYMBOL_KIND","symbolPick","kindA","kindB","PREFIX_BY_CATEGORY","StandaloneGotoSymbolQuickAccessProvider","outlineModelService","GotoSymbolAction","HelpQuickAccessProvider","getQuickAccessProviders","providerA","providerB","helpEntry","StandaloneReferencesController","ParsedTokenThemeRule","_parsedThemeRuleBrand","colorRegExp","ColorMap","_lastColorId","_id2color","_color2id","TokenTheme","createFromRawTokenTheme","customTokenColors","createFromParsedTokenTheme","parseTokenTheme","parsedThemeRules","strcmp","defaultFontStyle","defaultForeground","incomingDefaults","foregroundColorId","backgroundColorId","ThemeTrieElementRule","ThemeTrieElement","resolveParsedTokenThemeRules","STANDARD_TOKEN_TYPE_REGEXP","toStandardTokenType","_themeTrieElementRuleBrand","_foreground","_background","acceptOverwrite","mainRule","_themeTrieElementBrand","_mainRule","dotIndex","vs","inherit","vs_dark","hc_black","hc_light","UnthemedProductIconTheme","getIcon","iconRegistry","isThemeIcon","VS_LIGHT_THEME_NAME","VS_DARK_THEME_NAME","HC_BLACK_THEME_NAME","HC_LIGHT_THEME_NAME","themingRegistry","ThemingContribution","StandaloneTheme","standaloneThemeData","isBuiltinTheme","defaultColors","_tokenTheme","notifyBaseUpdated","baseData","getBuiltinRules","useDefault","getDefault","resolveDefaultColor","LIGHT","HIGH_CONTRAST_DARK","HIGH_CONTRAST_LIGHT","DARK","encodedTokensColors","editorForeground","editorBackground","modelLanguage","builtinTheme","newBuiltInTheme","StandaloneThemeService","_onColorThemeChange","_onProductIconThemeChange","onDidProductIconThemeChange","_environment","_builtInProductIconTheme","_autoDetectHighContrast","_knownThemes","iconsStyleSheet","onDidChangeEmmiter","getCSS","productIconTheme","getProductIconTheme","usedFontIds","formatIconRule","fontContribution","getIcons","getIconsStyleSheet","_codiconCSS","_themeCSS","_allCSS","_globalStyleElement","_styleElements","_colorMapOverride","_onOSSchemeChanged","_updateCSS","_registerShadowDomContainer","_registerRegularEditorContainer","colorMapOverride","_updateThemeOrColorMap","_updateActualTheme","desiredTheme","wantsHighContrast","newThemeName","hasRule","ruleCollector","getThemingParticipants","colorVariables","generateTokensCSSForColorMap","hidesExplorerArrows","ToggleHighContrast","_originalThemeName","currentTheme","IStandaloneThemeService","integer","integer2","uinteger","uinteger2","Position3","Range3","Location","Location2","LocationLink","LocationLink2","Color2","ColorInformation","ColorInformation2","ColorPresentation","ColorPresentation2","FoldingRangeKind2","FoldingRange","FoldingRange2","DiagnosticRelatedInformation","DiagnosticRelatedInformation2","DiagnosticSeverity","DiagnosticSeverity2","DiagnosticTag","DiagnosticTag2","CodeDescription","Diagnostic","Diagnostic2","Command2","TextEdit","TextEdit2","ChangeAnnotation","ChangeAnnotation2","ChangeAnnotationIdentifier","AnnotatedTextEdit","AnnotatedTextEdit2","TextDocumentEdit","TextDocumentEdit2","CreateFile","CreateFile2","RenameFile","RenameFile2","DeleteFile","DeleteFile2","WorkspaceEdit","_defaults","_idleCheckInterval","_lastUsedTime","_configChangeListener","_client","_checkIfIdle","_stopWorker","_getClient","languageSettings","getLanguageServiceWorker","MIN_VALUE","Is","objectLiteral","two","three","four","defined","targetUri","targetRange","numberRange","typedArray","Information","Unnecessary","Deprecated","codeDescription","needsConfirmation","annotation","annotationId","textDocument","OptionalVersionedTextDocumentIdentifier","ignoreIfExists","oldUri","newUri","ignoreIfNotExists","documentChanges","TextDocumentIdentifier","TextDocumentIdentifier2","VersionedTextDocumentIdentifier","VersionedTextDocumentIdentifier2","OptionalVersionedTextDocumentIdentifier2","TextDocumentItem","TextDocumentItem2","MarkupKind","MarkupKind2","MarkupContent","CompletionItemKind2","InsertTextFormat","InsertTextFormat2","InsertReplaceEdit","InsertReplaceEdit2","InsertTextMode","InsertTextMode2","CompletionList","MarkedString","MarkedString2","Hover","ParameterInformation","SignatureInformation","DocumentHighlightKind2","DocumentHighlight","SymbolKind2","SymbolInformation","DocumentSymbol","DocumentSymbol2","CodeActionKind2","CodeActionContext","CodeActionContext2","CodeAction","CodeAction2","CodeLens","CodeLens2","FormattingOptions","FormattingOptions2","DocumentLink","DocumentLink2","SelectionRange","SelectionRange2","TextDocument","TextEditChangeImpl","TextEditChangeImpl2","changeAnnotations","assertChangeAnnotations","manage","ChangeAnnotations","ChangeAnnotations2","annotations","_annotations","idOrAnnotation","WorkspaceChange2","workspaceEdit","_textEditChanges","_workspaceEdit","_changeAnnotations","textEditChange","initDocumentChanges","getTextEditChange","textDocumentEdit","initChanges","createFile","optionsOrAnnotation","renameFile","deleteFile","PlainText","Markdown","Method","Field","Class","Interface","Module","Property","Unit","Value","Enum","Keyword","Snippet","File","Reference","Folder","EnumMember","Constant","Struct","Operator","TypeParameter","asIs","isIncomplete","fromPlainText","plainText","Read","Package","Key","Null","RefactorExtract","RefactorInline","RefactorRewrite","kindOrCommandOrEdit","checkKind","TextDocument2","mergeSort","leftIdx","rightIdx","FullTextDocument","sortedEdits","lastModifiedOffset","Is2","FullTextDocument2","_version","_lineOffsets","getLineOffsets","lineOffsets","isLineStart","nextLineOffset","DiagnosticsAdapter","configChangeEvent","onModelAdd","modeId","_doValidate","uriStr","doValidation","diag","toDiagnostics","lsSeverity","CompletionAdapter","_triggerCharacters","doComplete","fromPosition","toCompletionItemKind","toTextEdit","insertTextFormat","mItemKind","HoverAdapter","doHover","toMarkedStringArray","toMarkdownString","DocumentHighlightAdapter","findDocumentHighlights","toDocumentHighlightKind","DefinitionAdapter","toLocation","ReferenceAdapter","findReferences","RenameAdapter","doRename","resourceEdits","toWorkspaceEdit","DocumentSymbolAdapter","findDocumentSymbols","toSymbolKind","mKind","DocumentLinkAdapter","findDocumentLinks","DocumentFormattingEditProvider","fromFormattingOptions","DocumentRangeFormattingEditProvider","DocumentColorAdapter","findDocumentColors","FoldingRangeAdapter","getFoldingRanges","toFoldingRangeKind","SelectionRangeAdapter","getSelectionRanges","selectionRanges","HTMLCompletionAdapter","setupMode1","setupMode","modeConfiguration","disposeAll","completionItems","hovers","documentHighlights","documentSymbols","documentFormattingEdits","documentRangeFormattingEdits","registerProviders","asDisposable","LanguageServiceDefaultsImpl","_modeConfiguration","setModeConfiguration","optionsDefault","wrapLineLength","unformatted","contentUnformatted","indentInnerHtml","preserveNewLines","maxPreserveNewLines","indentHandlebars","endWithNewline","extraLiners","wrapAttributes","useDefaultDataProvider","getConfigurationDefault","htmlLanguageId","handlebarsLanguageId","razorLanguageId","htmlLanguageService","registerHTMLLanguageService","htmlDefaults","handlebarLanguageService","handlebarDefaults","razorLanguageService","razorDefaults","onLanguageListener","diagnosticsOptions","enableSchemaRequest","ParseOptions","isWhiteSpace","isLineBreak","isDigit","DEFAULT","allowTrailingComma","createScanner2","ignoreTrivia","tokenOffset","lineStartOffset","tokenLineStartOffset","prevTokenLineStartOffset","scanError","scanHexDigits","exact","digits","scanNext","ch3","scanString","safeLength","commentClosed","scanNumber","isUnknownContentCharacter","scan","getTokenValue","getTokenOffset","getTokenLength","getTokenStartLine","getTokenStartCharacter","getTokenError","TOKEN_DELIM_OBJECT","TOKEN_DELIM_ARRAY","TOKEN_DELIM_COLON","TOKEN_DELIM_COMMA","TOKEN_VALUE_BOOLEAN","TOKEN_VALUE_NULL","TOKEN_VALUE_STRING","TOKEN_VALUE_NUMBER","TOKEN_PROPERTY_NAME","TOKEN_COMMENT_BLOCK","TOKEN_COMMENT_LINE","ParentsStack","JSONState","lastWasColon","getStateData","setStateData","JSONDiagnosticsAdapter","_resetSchema","resetSchema","modeConfiguration2","supportComments","numberOfInsertedCharacters","adjustOffset","scanner","currentParent","richEditConfiguration","jsonDefaults","_diagnosticsOptions","setDiagnosticsOptions","allowComments","schemas","schemaRequest","schemaValidation","trailingCommas","isPseudo","localize","getConfiguredDefaultLocale","IAccessibilityService","CONTEXT_ACCESSIBILITY_MODE_ENABLED","BaseDropdown","_onDidChangeVisibility","onDidChangeVisibility","labelRenderer","cleanupFn","boxContainer","DropdownMenu","_contextMenuProvider","contextMenuProvider","actionProvider","menuClassName","menuAsChild","menuOptions","_menuOptions","DropdownMenuActionViewItem","menuActionsOrProvider","actionItem","isActionsArray","dropdownMenu","keybindingProvider","anchorAlignmentProvider","that","createAndFillInActionBarActions","primaryGroup","primaryMaxCount","shouldInlineSubmenu","useSeparatorsInPrimaryActions","useAlternativeActions","isPrimaryAction","actionGroup","primaryBucket","secondaryBucket","submenuInfo","fillInActions","MenuEntryActionViewItem","_wantsAltCommand","_itemClassDispose","_menuItemAction","_commandAction","_updateItemClass","alternativeKeyDown","updateAltState","wantsAltCommand","altTooltip","altKeybinding","altKeybindingLabel","altTitleSection","backgroundImage","SubmenuEntryActionViewItem","dropdownOptions","setBackgroundImage","DropdownWithDefaultActionViewItem","submenuAction","defaultAction","_storageKey","defaultActionId","_defaultAction","_getDefaultActionKeybindingLabel","_dropdown","lastAction","defaultActionKeybinding","renderKeybindingWithDefaultActionLabel","primaryContainer","dropdownContainer","createActionViewItem","rememberDefaultAction","isIMenuItem","MenuId","_instances","DebugBreakpointsContext","DebugCallStackContext","DebugConsoleContext","DebugVariablesContext","DebugWatchContext","DebugToolBar","DebugToolBarStop","EditorTitle","EditorTitleRun","EditorTitleContext","EmptyEditorGroup","EmptyEditorGroupContext","ExplorerContext","ExtensionContext","GlobalActivity","CommandCenter","LayoutControlMenuSubmenu","LayoutControlMenu","MenubarMainMenu","MenubarAppearanceMenu","MenubarDebugMenu","MenubarFileMenu","MenubarHelpMenu","MenubarLayoutMenu","MenubarNewBreakpointMenu","MenubarPanelAlignmentMenu","MenubarPanelPositionMenu","MenubarPreferencesMenu","MenubarRecentMenu","MenubarShare","MenubarSwitchEditorMenu","MenubarSwitchGroupMenu","MenubarTerminalMenu","MenubarViewMenu","MenubarHomeMenu","OpenEditorsContext","ProblemsPanelContext","SCMChangeContext","SCMResourceContext","SCMResourceFolderContext","SCMResourceGroupContext","SCMSourceControl","SCMTitle","SearchContext","StatusBarWindowIndicatorMenu","StatusBarRemoteIndicatorMenu","TestItem","TestItemGutter","TestPeekElement","TestPeekTitle","TouchBarContext","TitleBarContext","TitleBarTitleContext","TunnelContext","TunnelPrivacy","TunnelProtocol","TunnelPortInline","TunnelTitle","TunnelLocalAddressInline","TunnelOriginInline","ViewItemContext","ViewContainerTitle","ViewContainerTitleContext","ViewTitle","ViewTitleContext","CommentThreadTitle","CommentThreadActions","CommentTitle","CommentActions","InteractiveToolbar","InteractiveCellTitle","InteractiveCellDelete","InteractiveCellExecute","InteractiveInputExecute","NotebookToolbar","NotebookCellTitle","NotebookCellDelete","NotebookCellInsert","NotebookCellBetween","NotebookCellListTop","NotebookCellExecute","NotebookCellExecutePrimary","NotebookDiffCellInputTitle","NotebookDiffCellMetadataTitle","NotebookDiffCellOutputsTitle","NotebookOutputToolbar","NotebookEditorLayoutConfigure","NotebookKernelSource","BulkEditTitle","BulkEditContext","TimelineItemContext","TimelineTitle","TimelineTitleContext","TimelineFilterSubMenu","AccountsContext","PanelTitle","AuxiliaryBarTitle","TerminalInstanceContext","TerminalEditorInstanceContext","TerminalNewDropdownContext","TerminalTabContext","TerminalTabEmptyAreaContext","TerminalInlineTabContext","WebviewContext","NewFile","MergeToolbar","MergeInput1Toolbar","MergeInput2Toolbar","IMenuService","MenuRegistry","_menuItems","_onDidChangeMenu","_commandPaletteChangeEvent","addCommands","getCommands","changedIds","_appendImplicitItems","SubmenuItemAction","MenuItemAction","hideActions","renderShortTitle","shortTitle","runArgs","shouldForwardArgs","IClipboardService","ICommandService","CommandsRegistry","_onDidRegisterCommand","onDidRegisterCommand","idOrCommand","actualHandler","oldId","newId","IConfigurationService","toValuesTree","conflictReporter","addToValueTree","settingsTreeRoot","removeFromValueTree","valueTree","doRemoveFromValueTree","getConfigurationValue","settingPath","component","accessSetting","getLanguageTagSettingPlainKey","settingKey","allSettings","patternProperties","applicationSettings","machineSettings","machineOverridableSettings","windowSettings","resourceSettings","resourceLanguageSettingsSchemaId","contributionRegistry","JSONContribution","OVERRIDE_IDENTIFIER_PATTERN","OVERRIDE_IDENTIFIER_REGEX","OVERRIDE_PROPERTY_PATTERN","OVERRIDE_PROPERTY_REGEX","overrideIdentifiersFromKey","configurationRegistry","_onDidSchemaChange","_onDidUpdateConfiguration","defaultLanguageConfigurationOverridesNode","configurationContributors","resourceLanguageSettingsSchema","allowTrailingCommas","configurationProperties","policyConfigurations","excludedConfigurationProperties","registerSchema","registerOverridePropertyPatternKey","registerConfigurations","doRegisterConfigurations","configurationDefaults","configurationDefaultOverride","valuesSources","plainKey","$ref","defaultDefaultValue","defaultValueSource","updatePropertyDefaultValue","updateSchema","defaultsOverrides","updateOverridePropertyPatternKey","validateAndRegisterProperties","extensionInfo","restrictedProperties","registerJSONConfiguration","propertyKeys","validateProperty","subNodes","allOf","getPolicyConfigurations","overrideIdentifierProperty","resourceLanguagePropertiesSchema","configurationdefaultOverride","defaultSource","getDefaultValue","CONSTANT_VALUES","ContextKeyExpr","ContextKeyDefinedExpr","ContextKeyEqualsExpr","ContextKeyRegexExpr","ContextKeyNotExpr","expr","ContextKeyAndExpr","ContextKeyOrExpr","serialized","_deserializeOrExpression","_deserializeAndExpression","_deserializeOne","serializedOne","ContextKeyNotEqualsExpr","_deserializeValue","_deserializeRegexValue","ContextKeyNotInExpr","ContextKeyInExpr","ContextKeyGreaterEqualsExpr","ContextKeyGreaterExpr","ContextKeySmallerEqualsExpr","ContextKeySmallerExpr","serializedValue","caseIgnoreFlag","expressionsAreEqualWithConstantSubstitution","aExpr","substituteConstants","bExpr","ContextKeyFalseExpr","ContextKeyTrueExpr","negated","constantValue","cmp1","cmp2","trueValue","valueKey","_negated","falseValue","withFloatOrStr","thisSource","otherSource","ContextKeyNotRegexExpr","eliminateConstantsInArray","newExpr","_expr","_normalizeArr","exprArr","hasTrue","secondToLastElement","isFinished","resultElement","extraRedundantCheck","hasFalse","implies","LEFT","RIGHT","getTerminals","RawContextKey","metaOrHide","IContextKeyService","SET_CONTEXT_COMMAND_ID","key2","qTerm","notA","IsWindowsContext","InputFocusedContextKey","IContextViewService","IContextMenuService","IDialogService","NLS_PRESERVE_CASE_LABEL","PreserveCaseToggle","ReplaceInput","cachedOptionsWidth","_onPreserveCaseKeyDown","newWidth","historyNavigationVisible","HistoryNavigationWidgetFocusContext","HistoryNavigationForwardsEnablementContext","HistoryNavigationBackwardsEnablementContext","lastFocusedWidget","widgets","registerAndCreateHistoryNavigationContext","scopedContextKeyService","historyNavigationWidgetFocus","historyNavigationForwardsEnablement","historyNavigationBackwardsEnablement","ContextScopedFindInput","showFindOptions","ContextScopedReplaceInput","showReplaceOptions","SyncDescriptor","registerSingleton","getSingletonServiceDescriptors","_util","serviceIds","DI_TARGET","DI_DEPENDENCIES","IInstantiationService","createDecorator","storeServiceDependency","ServiceCollection","instanceOrDescriptor","jsonContributionRegistry","_onDidChangeSchema","schemasById","unresolvedSchemaContent","notifySchemaChanged","IKeybindingService","KeybindingsRegistryImpl","_coreKeybindings","_extensionKeybindings","_cachedMergedKeybindings","bindToCurrentPlatform","actualKb","kk","_registerDefaultKeybinding","_mightProduceChar","_assertNoCtrlAlt","sorter","KeybindingsRegistry","ILabelService","PagedRenderer","modelProvider","renderPlaceholder","PagedAccessibilityProvider","PagedList","pagedRenderers","fromPagedListOptions","TableListRenderer","getColumnSize","TemplateId","renderedTemplates","rendererMap","rowContainer","cellContainers","cellTemplateData","cellContainer","layoutColumn","ColumnHeader","_onDidLayout","minimumWidth","maximumWidth","onDidChangeWidthConstraints","Table","cachedWidth","headers","splitview","headerRowHeight","totalWeight","TreeMouseEventTarget","TreeError","WeakMapper","isFilterResult","getVisibleState","isCollapsibleStateUpdate","collapsible","IndexTreeModel","rootElement","rootRef","_onDidChangeCollapseState","onDidChangeCollapseState","_onDidChangeRenderNodeCount","onDidChangeRenderNodeCount","_onDidSplice","onDidSplice","refilterDelayer","collapseByDefault","autoExpandSingleChildren","visibleChildrenCount","visibleChildIndex","collapsed","renderNodeCount","toInsert","diffIdentityProvider","spliceSmart","spliceSimple","identity","toInsertIterable","recurseLevels","diffDepth","getParentNodeWithListIndex","lastDiffIds","locationPrefix","recurseSplice","lastStartO","lastStartM","onDidCreateNode","onDidDeleteNode","listIndex","revealed","treeListElementsToInsert","nodesToInsertIterator","createTreeNode","lastHadChildren","visibleChildStartIndex","nodesToInsert","insertedVisibleChildrenCount","deletedNodes","deletedVisibleChildrenCount","visibleDeleteCount","_updateAncestorsRenderNodeCount","visit","insertedNodes","currentlyHasChildren","setCollapsible","refilter","getTreeNodeWithListIndex","hasTreeNode","getListIndex","getListRenderCount","getTreeNode","isCollapsible","_setCollapseState","_setListNodeCollapseState","onlyVisibleChildIndex","_setNodeCollapseState","previousRenderNodeCount","updateNodeAfterCollapseChange","deep","expandTo","updateNodeAfterFilterChange","treeElement","parentVisibility","treeListElements","_filterNode","childElements","childRevealed","_updateNodeAfterCollapseChange","_updateNodeAfterFilterChange","resultStartLength","hasVisibleDescendants","getNode","getNodeLocation","indexTreeNode","getParentNodeLocation","getFirstElementChild","SetMap","RenderIndentGuides","TreeFindMode","TreeElementsDragAndDropData","asTreeDragAndDropData","TreeNodeListDragAndDrop","autoExpandDisposable","didChangeAutoExpandNode","autoExpandNode","autoExpand","parentRef","ComposedTreeDelegate","EventCollection","TreeRenderer","activeNodes","renderedNodes","DefaultIndent","hideTwistiesOfChildlessElements","shouldRenderIndentGuides","renderedIndentGuides","activeIndentNodes","indentGuidesDisposable","onDidChangeNodeTwistieState","onDidChangeTwistieState","renderIndentGuides","_onDidChangeActiveNodes","twistie","renderTwistie","twistieRendered","childElementCount","FindFilter","_filter","_totalCount","_matchCount","_lowercasePattern","onWillRefilter","totalCount","matchCount","findMode","Filter","_onDidChangeMode","onDidChangeMode","_onDidChangePattern","_onDidChangeOpenState","onDidChangeOpenState","_mode","defaultFindMode","Highlight","onDidSpliceModel","noMatches","shouldAllowFocus","asTreeMouseEvent","Unknown","Twistie","dfs","getFirstViewElementWithTrait","nodeSet","_nodeSet","createNodeSet","__forceEvent","getNodes","onDidModelSplice","deletedNodesIdSet","deletedNodesVisitor","insertedNodesMap","insertedNodesVisitor","insertedNode","TreeNodeListMouseController","onTwistie","expandOnlyOnTwistieClick","expandOnDoubleClick","TreeNodeList","focusTrait","selectionTrait","anchorTrait","additionalFocus","additionalSelection","fromAPI","AbstractTree","_user","onDidChangeFindOpenState","_onWillRefilter","_onDidUpdateOptions","treeDelegate","onDidChangeCollapseStateRelay","onDidChangeActiveNodes","onLeftArrow","onRightArrow","onSpace","findWidgetEnabled","focusNavigationFilter","onDidChangeFindMode","Always","getParentElement","collapse","parentListIndex","focusedIndex","firstChildIndex","ObjectTreeModel","nodesByIdentity","setChildren","getElementLocation","_setChildren","preserveCollapseState","insertedElements","insertedElementIds","tnode","noCompress","incompressible","childrenIterator","_decompress","decompress","CompressedObjectTreeModel","compressionEnabled","compressedChildren","compressedNode","compressedParentNode","splicedElement","recompressedElement","parentChildren","setCompressionEnabled","rootChildren","decompressedRootChildren","recompressedRootChildren","getCompressedNode","DefaultElementMapper","CompressedTreeNodeWrapper","unwrapper","CompressibleObjectTreeModel","elementMapper","compressedNodeUnwrapper","nodeMapper","updateElementHeight","mapList","otherNode","mapOptions","getCompressedTreeNode","ObjectTree","hasElement","CompressibleRenderer","_compressedTreeNodeProvider","compressedTreeNodeProvider","compressedTreeNode","renderCompressedElements","disposeCompressedElements","twistieElement","CompressibleObjectTree","getCompressedNodeKeyboardNavigationLabel","asObjectTreeOptions","createAsyncDataTreeNode","refreshPromise","stale","slow","collapsedByDefault","ancestor","descendant","AsyncDataTreeNodeWrapper","AsyncDataTreeRenderer","asTreeEvent","AsyncDataTreeElementsDragAndDropData","asAsyncDataTreeDragAndDropData","AsyncDataTreeNodeListDragAndDrop","AsyncDataTree","subTreeRefreshPromises","refreshPromises","_onDidRender","_onDidChangeNodeSlowState","createTree","objectTreeDelegate","objectTreeRenderers","objectTreeOptions","viewStateContext","_updateChildren","getDataNode","refreshAndRenderNode","dataNode","refreshNode","doRefreshSubTree","childrenToRefresh","doRefreshNode","childrenPromise","doGetChildren","slowTimeout","processChildren","childrenElementsIterable","childrenElements","nodesToForget","childrenTreeNodesById","asyncDataTreeNode","childAsyncDataTreeNode","asTreeElement","CompressibleAsyncDataTreeNodeWrapper","CompressibleAsyncDataTreeRenderer","compressibleNodeMapperProvider","CompressibleAsyncDataTree","compressionDelegate","compressibleNodeMapper","els","asCompressibleObjectTreeOptions","isIncompressible","getUncompressedIds","oldSelection","oldFocus","didChangeSelection","didChangeFocus","filterResult","DataTree","IListService","ListService","_lastFocusedWidget","_hasCreatedStyleController","setLastFocusedList","extraContextKeys","registeredList","RawWorkbenchListFocusContextKey","WorkbenchListSupportsMultiSelectContextKey","WorkbenchListFocusContextKey","WorkbenchListHasSelectionOrFocus","WorkbenchListDoubleSelection","WorkbenchListMultiSelection","WorkbenchListSelectionNavigation","WorkbenchListSupportsFind","WorkbenchTreeElementCanCollapse","WorkbenchTreeElementHasParent","WorkbenchTreeElementCanExpand","WorkbenchTreeElementHasChild","WorkbenchTreeFindOpen","WorkbenchListTypeNavigationModeKey","WorkbenchListAutomaticKeyboardNavigationLegacyKey","createScopedContextKeyService","multiSelectModifierSettingKey","openModeSettingKey","horizontalScrollingKey","defaultFindModeSettingKey","keyboardNavigationSettingKey","treeIndentKey","treeRenderIndentGuidesKey","listSmoothScrolling","mouseWheelScrollSensitivityKey","fastScrollSensitivityKey","treeExpandMode","useAltAsMultipleSelectionModifier","MultipleSelectionController","toWorkbenchListOptions","createKeyboardNavigationEventFilter","WorkbenchList","listService","workbenchListOptions","workbenchListOptionsDisposable","listSupportsMultiSelect","listHasSelectionOrFocus","listDoubleSelection","listMultiSelection","_useAltAsMultipleSelectionModifier","ListResourceNavigator","_styler","WorkbenchPagedList","WorkbenchTable","TableResourceNavigator","ResourceNavigator","_onDidOpen","onSelectionFromKeyboard","selectionKeyboardEvent","_open","getSelectedElement","revealIfVisible","TreeResourceNavigator","inChord","WorkbenchObjectTree","getTypeNavigationMode","workbenchTreeDataPreamble","internals","WorkbenchTreeInternals","WorkbenchCompressibleObjectTree","updateStyleOverrides","WorkbenchDataTree","WorkbenchAsyncDataTree","WorkbenchCompressibleAsyncDataTree","getDefaultTreeFindMode","deprecatedValue","modeString","Trigger","listSupportFindWidget","hasSelectionOrFocus","hasDoubleSelection","hasMultiSelection","treeElementCanCollapse","treeElementHasParent","treeElementCanExpand","treeElementHasChild","treeFindOpen","updateCollapseContextKeys","interestingContextKeys","styler","ILogService","LogLevel","DEFAULT_LOG_LEVEL","AbstractLogger","_onDidChangeLogLevel","setLevel","ConsoleLogger","logLevel","LogService","logger","IMarkerData","_displayStrings","fromSeverity","emptyString","makeKeyOptionalMessage","useMessage","IMarkerService","INotificationService","NoOpNotification","IOpenerService","NullOpenerService","matchesScheme","matchesSomeScheme","schemes","extractSelection","IProgressService","Progress","IEditorProgressService","DefaultQuickAccessFilterValue","defaultProvider","IQuickInputService","Registry","StorageState","Storage","_onDidChangeStorage","onDidChangeStorage","flushDelayer","Th","DEFAULT_FLUSH_DELAY","pendingDeletes","pendingInserts","whenFlushedCallbacks","onDidChangeItemsExternal","Closed","fallbackValue","valueStr","doFlush","hasPending","flushPending","updateRequest","updateItems","InMemoryStorageDatabase","TARGET_KEY","IStorageService","WillSaveStateReason","AbstractStorageService","flushInterval","DEFAULT_FLUSH_INTERVAL","_onDidChangeValue","_onDidChangeTarget","_onWillSaveState","_workspaceKeyTargets","_profileKeyTargets","_applicationKeyTargets","emitDidChangeValue","getKeyTargets","getStorage","withPausedEmitters","updateKeyTarget","keyTargets","workspaceKeyTargets","loadKeyTargets","profileKeyTargets","applicationKeyTargets","keysRaw","InMemoryStorageService","applicationStorage","profileStorage","workspaceStorage","ITelemetryService","asCssVariableName","colorIdent","colorRegistry","onDidChangeSchema","colorSchema","colorReferenceSchema","colorsById","registerColor","needsTransparency","colorContribution","propertySchema","colorDesc","resolveColorValue","getColorSchema","cat1","cat2","iconForeground","focusBorder","activeContrastBorder","textLinkForeground","textLinkActiveForeground","textCodeBlockBackground","selectBackground","selectForeground","selectBorder","editorErrorBackground","editorErrorForeground","editorErrorBorder","editorWarningBackground","editorWarningForeground","editorWarningBorder","editorInfoBackground","editorInfoForeground","editorInfoBorder","editorHintForeground","editorHintBorder","editorWidgetBackground","editorWidgetForeground","editorWidgetBorder","editorWidgetResizeBorder","editorSelectionBackground","editorSelectionForeground","editorInactiveSelection","editorSelectionHighlight","lessProminent","editorSelectionHighlightBorder","editorFindMatch","editorFindMatchHighlight","editorFindRangeHighlight","editorFindMatchBorder","editorFindMatchHighlightBorder","editorFindRangeHighlightBorder","editorHoverHighlight","editorHoverBackground","editorHoverForeground","editorHoverBorder","editorHoverStatusBarBackground","editorActiveLinkForeground","editorInlayHintForeground","editorInlayHintBackground","editorInlayHintTypeForeground","editorInlayHintTypeBackground","editorInlayHintParameterForeground","editorInlayHintParameterBackground","editorLightBulbForeground","editorLightBulbAutoFixForeground","defaultInsertColor","defaultRemoveColor","diffInserted","diffInsertedLine","diffRemovedLine","diffInsertedLineGutter","diffRemovedLineGutter","diffOverviewRulerInserted","diffOverviewRulerRemoved","diffInsertedOutline","diffRemovedOutline","diffBorder","diffDiagonalFill","listHighlightForeground","listFocusHighlightForeground","ifArg","thenArg","if","else","listFilterWidgetBackground","listFilterWidgetOutline","listFilterWidgetNoMatchesOutline","listFilterWidgetShadow","_deprecatedQuickInputListFocusBackground","quickInputListFocusForeground","quickInputListFocusIconForeground","quickInputListFocusBackground","oneOf","menuBorder","menuForeground","menuBackground","menuSelectionForeground","menuSelectionBackground","menuSelectionBorder","menuSeparatorBackground","toolbarHoverBackground","currentBaseColor","incomingBaseColor","commonBaseColor","contentTransparency","mergeCurrentHeaderBackground","mergeIncomingHeaderBackground","mergeCommonHeaderBackground","mergeBorder","overviewRulerFindMatchForeground","overviewRulerSelectionHighlightForeground","minimapFindMatch","minimapSelectionOccurrenceHighlight","minimapSelection","minimapError","minimapWarning","minimapBackground","minimapForegroundOpacity","minimapSliderBackground","minimapSliderHoverBackground","minimapSliderActiveBackground","problemsErrorIconForeground","problemsWarningIconForeground","problemsInfoIconForeground","colorValue","backgroundColorValue","transparency","executeTransform","workbenchColorsSchemaId","schemaRegistry","IconContribution","IconFontDefinition","getDefinition","toJSONObject","iconFont","fromJSONObject","stringOrUndef","iconSchema","definitions","fontId","iconReferenceSchema","iconsById","iconFontsById","registerIcon","enumIndex","iconContribution","getIconSchema","i1","getIconRegistry","iconsSchemaId","widgetClose","modify","styleMap","attachStyler","widgetOrCallback","attachBadgeStyler","attachListStyler","defaultListStyles","defaultMenuStyles","attachMenuStyler","ColorScheme","isHighContrast","isDark","IThemeService","ThemeColor","ThemeIcon","themeColorFromId","getThemeTypeSelector","isThemeColor","_regexFromString","fromId","tildeIndex","getModifier","ti1","ti2","asThemeIcon","themingParticipants","onThemingParticipantAddedEmitter","onColorThemeChange","registerThemingParticipant","Themable","onThemeChange","IUndoRedoService","ResourceEditStackSnapshot","UndoRedoGroup","UndoRedoSource","IWorkspaceContextService","isSingleFolderWorkspaceIdentifier","singleFolderIdentifier","toWorkspaceIdentifier","WorkspaceFolder","WORKSPACE_EXTENSION","IWorkspaceTrustManagementService"],"sourceRoot":""}